Professional Documents
Culture Documents
¡Es perfecto!
El mundo necesita mejores
programadores
Contenido
1. Código Limpio
2. Malos olores en el código (Code Smells)
3. Principios SOLID
Evolución del programador
Conocimiento y trabajo
Practicar y fallar
2. Code Smells -
-
Sentencias de bifurcación (switch)
Código duplicado
Malos olores en el código - Comentarios + Comentarios
- Métodos largos
int elapsedTimeInDays;
int daysSinceTheCreation;
int fileAgeInDays;
● Escoger buenos nombres toma tiempo pero ahorra
más tiempo del que se invierte.
● Siempre estar al tanto de los nombres y cambiarlos
cuando pienses en uno mejor
● El nombre de una variable, función o clase debe
responder a las grandes interrogantes: ¿Por qué
existe?, ¿Qué hace?, ¿Cómo usarlo?
● Si un nombre requiere un comentario entonces el
nombre no revela sus intenciones.
Evitar desinformación
List accounList;
double hypotenuse;
List bunchOfAccounts;
List accounts;
Evitar variaciones mínimas
var xyzControllerForEfficientHandleOfStrings;
var xyzControllerForEfficientStorageOfStrings;
● Debemos evitar “pistas falsas” que nublen el
significado del código. (hp)
● No agregar el tipo de dato (a menos que realmente
pertenezca al tipo de dato). Ejemplo:
accountList, para los programadores List tiene
un significado propio y exclusivo
● Evitar nombres con mínimas variaciones
Ejemplo desinformativo l y O
int a = l;
if (O == 1)
a = 11;
else
l = 01;
Realizar distinciones con sentido
a2[i] = a1[i];
}
private aBall;
private theBall;
getActiveAccount();
getActiveAccounts();
getActiveAccountInfo();
String cust;
String customer;
class ProductInfo { … }
class ProductData { … }
FLDSMDFR
Flint Lockwood's Diatonic Super Mutating Dynamic Food Replicator
Usar nombres pronunciables
} }
● El cerebro humano tiene un área específica para el
lenguaje hablado, esta área relaciona conocimiento
con palabras. Se debe tomar ventaja de esto.
● Si una variable es no pronunciable entonces
cualquier discusión o explicación que involucre ese
nombre, sonará estúpida
“One difference between a smart programmer and a professional
programmer is that the professional understands that clarity is king.
Professionals use their powers for good and write code that others can
understand”
Robert C. Martin
Taller: Malos nombre de métodos
● Revisar parámetros
Fin de la primera sesión
SOLID
Principios fundamentales para la profesionalización del programador
Cada cambio en el código tiene consecuencias
Barbara Liskov
Definición basica
Si S es un subtipo de T, entonces los objetos de tipo T en un programa pueden ser
reemplazados con objetos de tipo S sin alterar ninguna de las propiedades naturales de
un programa.
clientMethod(SomeClass sc) {
…
sc.someMethod();
…
}
Cuando es LSP
- Bugfix?
- Refactoring?
La empresa X cuenta con los siguientes roles: Gerente general, Gerente de finanzas,
Gerente Recursos Humanos y Gerente de Tecnología.
Simulador de patos.
La primera versión del juego cuenta con dos tipos de patos, pero la competencia es
cada vez mas fuerte así que DEBEMOS mejorar la experiencia del usuario.
La aplicación fue diseñada y
desarrollada inicialmente para que los
App 2: patos en el juego puedan nadar
(swin), emitir un sonido (quack) y
Juego simulador de acciones con puedan ser visibles
Patos
The Duck:
Diseño inicial
Los patos
deben volar
Solución inmediata. ¿Tengo un buen diseño?
The Duck:
Día del DEMO Bicho 1:
¿Efectos secundarios?
Herencia
Sobrescribir todos los
método necesarios.
¿Efectos secundarios?
Interfaces
Catalogar quienes pueden volar y quienes pueden
hacer sonidos.
¿Efectos secundarios?
Aplicación del principio
Aplicación del
principio
Aplicación del
principio