-
@Ayende ha comenzado una serie de post en lo que revisa algunos patrones de diseño (Go4) luego de transcurridos más de 18 años desde su formalización en el libro Design Patterns: Elements of Reusable Object-Oriented Software . Inspirado por esa serie, y por el hecho de que en mi última entrevista...
-
Imaginemos los siguientes escenarios: tenemos un gran framework super completo del cual queremos obtener una versión más pequeña para correr en dispositivos móviles, y tenemos que quitar ciertas características que el dispositivo no soporta. Además la idea del concepto de “Compact” Framework también...
-
Luego de revisar los requerimientos de la aplicación en la que vengo trabajado estos últimos 6 meses, tuve que pensar cómo plantear la arquitectura de la misma teniendo en cuenta lo siguiente: La aplicación es muy muy muy grande, eso era lo primero que saltaba a la vista en los requerimientos....
-
Quiero mostrar cómo es posible modificar nuestros assemblies ya compilador (no no no, antes que los procese el JIT) para agregarles o quitarles código IL. En este caso, voy a ilustrar esto mediante la creación de un sencillísimo Profiler. Trabajos previos Este está...
-
A mi anterior entrada la titulé “Las plantillas T4 son basura” cosa que respondió más a mi estado de bronca contra éstas que a su verdadero valor como herramienta. Muchos me preguntaron sobre el por qué de tal calificación y la verdad es que ese por...
-
En mi anterior entrada mostraba distintas alternativas que podíamos utilizar para volver al siguiente fragmento de código fácilmente testeable. Obviamente existe una infinidad de alternativas que no he abordado como los frameworks de aislamiento, los servidores de smtp que no envían los mails y muchas...
-
Veamos el siguiente código: Lo que buscamos crear al menos una prueba unitaria para este. ¿Cómo lo hacemos?. Bueno, antes quiero plantear algunos supuestos: Si bien parece un TransactionScript, hagamos de cuenta que no lo es. El hecho de tener solo un método y ningún campo, propiedad o evento es solo...
-
La creación de pruebas unitarias requiere al menos lo siguiente: Un framework de pruebas unitarias que debemos dominar. Por lo general son muy simples. Código testeable. Típicamente esto implica código susceptible de ser “aislado”. Nada que decir con respecto al primer punto. Ahora, en cuanto al segundo...
-
Si el compilador de C# pudiera utilizarse como cualquier assembly, podríamos generar código y compilarlo en tiempo de ejecución. Con esto, muchas de las cosas que hoy hacemos mediante CodeDom o Expression trees, las podríamos hacer simplemente concatenando strings (hay maneras mejores). Por ejemplo,...
-
Pensaba acerca de las cosas que podríamos hacer si el compilador de C# fuese un assembly reutilizable (Compilar as a service). Lo primero, y menos original, que se me ocurrió es que podríamos tener algo como JSON pero para C# en lugar de Java Script. 1: class Program 2: { 3: static void Main( string...
-
Leyendo al tío Bob (Robert Martin ) en su libro Clean Code , me doy con que en uno de los capítulos sugiere algo verdaderamente elemental: no pasarle null a los métodos! Bien, está claro que salvo algún que otro caso, los métodos no esperan nulos como valores válidos. Por lo tanto si le pasamos un null...
-
Desarrollo un sistema para la planificación, ejecución y seguimiento de encuestas en el que uno de los requerimientos es poder crear encuestas de manera sencilla y veloz. Además las mismas deben seguir un workflow (algo informal) de revisión. Otro dato importante es que el cliente diseña encuestas que...
Enviado a
Lucas Ontivero
por
Lucas Ontivero
a fecha de
27/8/2010
Archivado en:
Archivado en: Software Factories,Patterns,Arquitectura,Diseño,.Net,Languages,Gestión de proyectos,Patrones,Desarrollo,Conceptos,C#,Productividad
-
Una de las características más importante que debe seguir cualquier código y que es particularmente importante en las pruebas de cualquier tipo es la claridad. Una prueba debe entenderse a la primera sin demasiado esfuerzo, por eso es que debe ser breve, clara y desprovista en el mayor grado posible...
-
Las pruebas unitarias debería ser así de cortas y claras: using System; using System.Collections.Generic; using System.Linq; using System.Text; using NUnit.Framework; using Losoft.Temo.Security.Authorization.Exceptions; namespace Losoft.Temo.Security.Authorization.Tests { [TestFixture] public class AdminGroupSpecs...
-
En mi entrada Fluent Interfaces y TDD presentaba una prueba de concepto sobre un DSL interno que estaba desarrollando para encapsular varios detalles de la manipulación de documentos en el proyecto en el que trabajo actualmente. Luego de avanzar un tanto me doy con un problema muy común en la mayoría...
Enviado a
Lucas Ontivero
por
Lucas Ontivero
a fecha de
16/8/2010
Archivado en:
Archivado en: Software Factories,Patterns,Arquitectura,Diseño,.Net,Languages,Patrones,Desarrollo,Conceptos,C#,Productividad
-
Hoy todos reconocemos el potencial que tiene (LOP) Language Oriented Programming, pero no solo eso sino que muchos ya están invirtiendo para hacerse con las ventajas prometidas por este paradigma(?). Muchos incluso diseñan la sintaxis de aquellos lenguajes que entienden, pueden hacerles alcanzar la productividad...
Enviado a
Lucas Ontivero
por
Lucas Ontivero
a fecha de
16/8/2010
Archivado en:
Archivado en: Software Factories,Patterns,Arquitectura,Diseño,.Net,Languages,Investigaciones,Patrones,Desarrollo,Conceptos,C#,Productividad
-
Imagina que encontramos un clase estática con varios métodos estáticos los cuales tienen una cantidad aberrante de parámetros. Queremos eliminarla pero nos damos con que está siendo usada en muchísimas partes ¿que hacemos? ¿Como lo harias vos?. Para hablar más concretamente veamos uno de esos métodos...
Enviado a
Lucas Ontivero
por
Lucas Ontivero
a fecha de
14/8/2010
Archivado en:
Archivado en: Patterns,Arquitectura,Diseño,.Net,Languages,Patrones,Desarrollo,Conceptos,C#,XP,TDD,Refactoring
-
Desarrollar con TDD al principio no es nada fácil pero luego se vuelve “la manera” de desarrollar. Ahora, no siempre hago TDD, si quiero probar algo tan solo tiro las lineas y listo pero, por otro lado, si quiero hacer algo bien por más que tenga algo de código hecho lo tiro y lo comienzo de nuevo con...
Enviado a
Lucas Ontivero
por
Lucas Ontivero
a fecha de
13/8/2010
Archivado en:
Archivado en: Patterns,Arquitectura,Diseño,.Net,Languages,Patrones,Desarrollo,Conceptos,C#,XP,TDD
-
Hace poco gravé un pequeños video en el que explicaba una realidad que he visto en muchos proyectos respecto de las pruebas unitarias. En síntesis lo que comentaba era que en esos proyectos, los beneficios de las pruebas unitarias no eran visibles mientras que los costos sí lo eran. En problema aparente...
Enviado a
Lucas Ontivero
por
Lucas Ontivero
a fecha de
16/6/2010
Archivado en:
Archivado en: Arquitectura,Diseño,Series,.Net,Project Management,Investigaciones,Gestion de Proyectos,Gestión de proyectos,Desarrollo,Conceptos,C#,Productividad,XP,TDD
-
Hace poco comencé un nuevo desarrollo y decidí grabar algunos videos de los cuales solo publiqué los primeros tres. Sucede que el hecho de saber que alguien me estaba mirando me hacía prestar mayor atención a mis palabras que al código que debía escribir. No obstante a ello, continué grabándome para...
Enviado a
Lucas Ontivero
por
Lucas Ontivero
a fecha de
14/6/2010
Archivado en:
Archivado en: Arquitectura,Diseño,.Net,Project Management,Investigaciones,Gestion de Proyectos,Gestión de proyectos,Desarrollo,Conceptos,C#,Herramientas,Productividad,XP,TDD