"No soy un gran programador; Solo soy un buen programador con buenos h谩bitos." 鉁嶐煆 Kent Beck

Los buenos h谩bitos para programar, la disciplina, es lo que hace realmente bueno a un programador. Tras adquirir el habito de estilizar el c贸digo y nombrar correctamente variables y funciones, es hora de aprender nuevos h谩bitos para escribir mejores instrucciones.

Si lo piensas, todas las instrucciones que le das a una m谩quina caen en alguna de estas tres categor铆as:

  • declarar el nacimiento de un variable o funci贸n;
  • asignar valores a dichas variables
  • invocar las funciones ya creadas.

No hay m谩s, ni tampoco menos. As铆 que dediqu茅mosle unos minutos.

馃懚 Declaraci贸n

Independientemente de las diabluras que te permita tu lenguaje (idioma), yo te propongo unas restricciones. Son unos buenos h谩bitos que no te costar谩 adquirir.

  • Una variable o constante por l铆nea.
  • Primero las constantes.
  • Procura inicializar siempre con un valor tus declaraciones de variables.

Ya est谩, no es para tanto. Quiz谩 alguno se plantee separar las declaraciones del resto de instrucciones con una l铆nea en blanco. Vale; aunque en funciones peque帽as esto no ser谩 tan necesario.

馃摜 Asignaci贸n

Si has declarado variables es porque tienes pensado asignarles valores din谩micamente. Por ejemplo como resultado del c谩lculo de una expresi贸n. Pues bien, una sola norma:

  • Haz que la expresi贸n sea sencilla.

驴Qu茅 significa sencilla?

  • M谩ximo 2 operadores aritm茅ticos o booleanos (mejor 1).
  • Usa par茅ntesis para evidenciar el orden de ejecuci贸n.
  • Respeta el largo m谩ximo de l铆nea.
  • Deja espacio alrededor de los operadores para que la expresi贸n respire...

Y 驴si el expresi贸n es mucho m谩s compleja?

  • Lleva a funciones todo aquello que incumpla lo anterior

馃摓 Invocaci贸n

As铆 que en cuanto la cosa se complique... habr谩 que delegar en funciones, m茅todos, rutinas o como le llam茅is en vuestro idioma.

Y entonces tu instrucci贸n de asignaci贸n incluir谩 una llamada o invocaci贸n a ese nuevo m茅todo o funci贸n.

馃懏 Atajos a vigilar

Algunos lenguajes facilitan el uso de operadores condicionales en medio de expresiones. Pero deben de ser sometidos a las reglas anteriores y estar muy vigilados. Consid茅ralos como az煤car sint谩ctico: es goloso pero da帽ino si abusas.

鈿狅笍 Operadores ternarios

En este caso, el uso del operador ternario se considera como si fuesen dos operadores. Por tanto invalida el anidamiento con otros ternarios o el uso de expresiones complejas en sus ramas de flujo.

  • condition ? value if true : value if false

鈿狅笍 Operadores l贸gicos

De nuevo, aqu铆 hay diferencias entre lenguajes. Los operadores and , or, not y familia no se representan siempre igual. El caso es que si abusas de notaciones muy concisas puedes estar entorpeciendo la incorporaci贸n de miembros junior; o dificultando la interpretaci贸n de una expresi贸n demasiado clever

Intenta evitar los chequeos en busca de nulos. Por ejemplo asignando valores por defecto en los argumentos de las funciones.

  • value = value || defaultValue;
  • anObject && anObject.doSomething();
// really? wtf!
result = year % 400 === 0 ? true : year % 100 === 0 ? false : year % 4 === 0 ? true : false;

En resumen:

No encadenes o agrupes estos atajos. 脷salos s贸lo como una abreviaci贸n de casos muy simples. Usa caracter铆sticas del lenguaje para evitar tratar nulos y valores por defecto.

Considera la posibilidad de automatizar la detecci贸n de su incumplimiento usando alg煤n tipo de linter o chequeador est谩tico.