Ver por etiquetas

Patrón repetido en MVC. Mi propuesta
Cuando usamos ASP.MVC uno de los patrones que debemos respetar es el de “Un modelo entra, un modelo sale” y otro muy común es el de validar el modelo y si este no es válido devolverle la misma vista al usuario para que corrija los datos de entrada. Por esto es común ver el siguiente patrón: ¿Qué está mal aquí? ¿Lo ves? Lo que está mal es que este patrón se repite en cada una de las acciones de cada uno de los controladores de cada una de las aplicaciones que hacemos con MVC Framework y eso huele...
10 consejos para que no te crackeen tan fácil
Crackear una aplicación tiene algo de arte y de ingenio pero crackear una aplicación .Net es demasiado sencillo para mi gusto, y representa un problema para la empresa o desarrollador que la comercializa y vive de mantener y mejorar el producto. Ya no vale eso de “total quien se va a dar cuenta”, eso no es válido para ninguna aplicación pero esto es aún peor cuando se trata de herramientas de desarrollo de software las cuales serán utilizadas por profesionales que conocen como pueden saltearse los...
Código libre de NULLs
En este video explico los problemas que causan las referencias nulas en nuestro código y planteo cómo debemos crear un código libre de NULLs.
Autodisciplina al hacer check in
Cuando el build se rompe con demasiada frecuencia o permanece en ese estado por mucho tiempo, el equipo se ve impedido de avanzar cómodamente. Pero la razón principal por la que se rompen es sin dudas el descuido: no compilar antes de subir, no correr las pruebas antes de subir y no prestar la suficiente atención al mergear entre otras cosas. Esto es porque existe un exceso de confianza en los miembros del equipo. Para ayudar a mitigar esto, en mi equipo anterior creé este premio semanal con el que...
Difícil demostrar con números las ventajas de Pair Programming
ElBruno ha escrito un interesante artículo en su blog titulado “ [#ALM] DEMOSTRANDO CON NÚMEROS PORQUÉ ES CONVENIENTE REALIZAR PAIR PROGRAMMING ” en el que, mediante lo que considero un ejercicio de razonamiento, intenta demostrar el incremento que esta práctica puede generar en la productividad de un equipo con una configuración ficticia, aunque bastante común, de 2 Devs. Srs. y 4 Devs. Jrs.  Recomiendo su lectura (y además, es condición necesaria para entender de que se habla en esta entrada...
Refactoring–Extract Method para separar validaciones de operaciones
Existen casos en los que es conveniente extraer un bloque de código en un nuevo método por razones de validaciones de entrada. Es decir, queremos sepaar el código de validaciones de entradas del código que realiza propiamente las operaciones con estas. En algunos casos esto además puede traernos algunos beneficios de performance. Esto es más claro en los métodos recursivos. Para ilustrar esto pongamos como ejemplo al clásico método que calcula el Factorial de N de manera recursiva: Aquí el problema...
[Video] Serie sobre excepciones–El rol de las interfaces
Esta es seguramente la última entrada sobre excepciones en la que explico el rol de la interfaces (con el usuario u otro tipo de clientes) en la captura, tratamiento y traducción de las excepciones.
Code Freeze–Explicando esta MALA práctica
Hace un par de días una amigo preguntó por esta práctica en twitter por lo que decidí dar una brevísima explicación en este video. NOTA: a sugerencia de Rodrigo Corral he cambiado el título para que quede claro de entrada que en la inmensa mayoría de los casos esta es una mala práctica, cosa que entiendo he dejado bien claro en el video; aunque nunca se sabe. Creo además que la malas prácticas también necesitan ser explicadas ya que forman parte del vocabulario común y uno debe conocerlas.
Creando un sistema de indexación para nuestros datos no estructurados en Sql
Introducción Existen ocasiones en las que almacenar y organizar nuestros datos en una estructura tabular puede no ser lo ideal, en las que por conveniencia queramos guardar un conjunto de datos fuertemente relacionados en un sencillo xml pero a la vez necesitemos muchas de las características propias de SQL. Si bien SQL Server nos permite guardar XML (con o sin esquema asociado) e indexarlo, estos índices son muchas veces demasiado grandes y algo lentos y, aunque funcionan obviamente muy bien, podríamos...
[Video] Serie sobre excepciones–Donde capturarlas
Les dejo la tercera entrega de la serie sobre excepciones. Saludos
[Video] Serie sobre excepciones–Exceptions vs ErrorCodes
Les dejo el primero de una serie de videos sobre excepciones que estoy creando para el equipo de desarrollo al que pertenezco. Espero les guste. Saludos
.Net Reflector y ILSpy, ¿podrían inferir mejor el código a partir del IL?
Muchas veces uno cree que el código que .Net Reflector muestra es fiel reflejo de lo que el desarrollador escribió, pero obviamente eso no puede ser cierto ya que esta herramienta toma el IL de un ensamblado y trata de mostrar su equivalente en los lenguajes que se le pida (C#, VB.NET, F# entre otros). Claro que muchas veces hacen tan buen trabajo que uno se olvida de eso. Como a ILSpy le falta una vueltita de rosca en este aspecto, esto se hace más evidente ya que uno termina...
Juniors por siempre
Al menos en mi país, a los principiantes de esta industria se los llama juniors . Esa es la categorización con la que se ingresa a una empresa si no se cuenta con experiencia y conocimientos demostrables que justifiquen una categoría superior. La idea es que con el tiempo y luego de ir adquiriendo los conocimientos necesarios, un junior va a ir progresando paulatinamente transitando por las distintas categorías hasta convertirse en un senior o similar . La verdad es que en muchos casos se espera...
Por qué no me gustan las plantillas T4
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 qué es demasiado largo de explicar pero voy a mostrar la punta del ovillo para que a quien le interese pueda descubrirlo por sí solo. Veamos un par de ejemplo muy sencillos, el primero...
Integración continua con Open Source en el mundo .Net
Actualmente tengo a cargo un proyecto en el que somos 13 desarrolladores en distintos lugares de Argentina y en Colombia. Por esta razón, lo primero que pensé es en armar un servidor de integración continua. Cuando lo planteé, la condición fue que no debía requerir licencias de software (salvo la de Windows). No tenía mucho tiempo para esta tarea así que fui a lo conocido: CruiseControl.Net, Subversion, MSBuild, NUnit, Wix, TortoiseSVN y un sin fin de scripts, xslts y herramientas propias. Hasta...
¿Tenés una lista de correo para los desarrolladores?
La dinámica de una empresa puede evaluarse quizás por el número y diversidad de los canales de comunicación que ofrece a su gente. Así, en empresas en las que la comunicación tiene canales formales bien definidos, la cooperación entre equipos y áreas siempre es más difícil que en aquellas con diversidad de canales horizontales. Uno de esos canales los constituyen las listas de correo (viejo pero actual, todavía). Y ayer he tenido una muestra de ello. Resulta que en la semana he tenido que realizar...
¿Lo que huele mal es la inyección de dependencias?
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 más. La idea aquí  es mostrar el por qué este código no es un duro de testear. Obviamente es porque tiene una dependencia con la clase SmtpClient la cual se comunica mediante un socket con el ambiente...
¿Como vuelvo testeable mi código? Algo huele mal.
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 para hacer de este un ejemplo ultra sencillo. Por lo tanto pensemos que sí tiene campos, propiedades y varios métodos. Si bien usamos un System.Net.Mail.SmtpClient, la idea es no limitarse solo a esta...
¿Vale la pena crear pruebas unitarias?
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 punto, ¿qué significa que el código pueda ser “aislado”?. Bueno, esto significa que sus dependencias deben poder ser reemplazadas. Esto lo logramos bien por medio de inyectarle sus dependencias o...
Ruidos y señales en nuestra industria
Voy a tomar prestado las palabras señal y ruido del campo de las telecomunicaciones para explicar una situación que nos afecta de cerca. Entendamos la palabra señal , en el contexto de esta entrada, como el mensaje, lo importante, lo esencial y como ruido lo indeseable, lo molesto, lo que encarece y entorpece al mensaje. La señal, o el mensaje en este caso, que deseamos transmitir, por lo general todos los que hemos estado en esto durante algún tiempo (y que nos hemos equivocado terriblemente una...
Más artículos Página siguiente >