Más recomendaciones de Uncle Bob, poner nombres que se puedan pronunciar.

¿Por qué esto es importante? Porque no siempre somos un lobo/a solitario/a que pica código que no ha de rendir cuentas a nadie.

El desarrollo de software tiene muuuuuchooooo de trabajo en equipo (si no lo sabías, después de leer el Clean Code infórmate cómo mejorar soft-skills, será una gran inversión #trustme).

Tenemos que hablar con compañeros, exponer al equipo, explicar un desarrollo a un proveedor externo que no tenga todavía el conocimiento báscico del proyecto… en definitiva, comunicar, comunicar y comunicar.

El habla debería ser el canal de comunicación más efectivo que tenemos. En el mundo del software ya tenemos suficientes acrónimos y palabras raras como para encima añadir más y más. Que nuestro código sea legible a la vez que pronunciable facilita dos cosas:

  1. Hablar de nuestro código se vuelve más fácil y natural.
  2. Nos ahorramos el esfuerzo mental de traducir internamente en nuestra cabeza cosas impronunciables.

Uncle Bob no habla de este segundo punto, pero yo sí, nuestra capacidad de concentración es limitada, puede que tengamos suerte y seamos unos/as cracks y esta sea muy grande, pero el buffer tiene un límite, optimicemos qué guardamos en el buffer de nuestro cerebro, cuanto menos cosas inútiles, más efectivos seremos.

Ok, nombres que se puedan pronunciar, bastante básico, no? Seguro que todas lo hacemos…

Revisaremos un caso real, esta vez no me lo voy a inventar.

String SSGSS = "超スーパーサイヤ人じんゴッド超スーパーサイヤ人じん"

Lo que vendría a ser en Romaji:

String SSGSS = "Sūpā Saiya-jin Goddo Sūpā Saiya-jin"

Después de una temporada y media se dieron cuenta de que era un trabalenguas. Pero al menos Super Saiyan God Super Saiyan se puede pronunciar. Lo que es impronunciable es SSGSS… “ES ES YI ES ES”? “SsssGgggSssss”? No vamos por buen camino…

Hay videojuegos de Dragon Ball donde podrás escoger a Goku SSGSS y Vegeta SSGSS.

Por suerte atendieron a razones y lo simplificaron a:

String SSB = "Sūpā Saiya-jin Burū"

Unos lumbreras! Pero MAL, seguimos con una variable impronunciable. Veamos nombres mejores:

String superSaiyanGodSuperSaiyanKanjiName = "超スーパーサイヤ人じんゴッド超スーパーサイヤ人じん"
String superSaiyanGodSuperSaiyanRomajiName = "Sūpā Saiya-jin Goddo Sūpā Saiya-jin"
String superSaiyanBlueRomajiName = "Sūpā Saiya-jin Burū"

Sí, son variables kilométricas, pero es problema de la nomenclatura base, Super Saiyan 4 estaba cogido por la cosa esa de pelo rosa que si no conocéis mejor.

Nota sin embargo la expresividad de esos nombres, indican su contenido: un nombre y en qué tipo de escritura está.

Dragon Ball mola, pero aterrízalo un poco al mundo real. Ok:

String birthdtstr = "29 de Junio de 1982"
Integer personCntr = 0
String pwd = "god"
Date logddhhmmss = Calendar.getInstance().getTime();
  • “Birzdtstrrr”?
  • “Personcuntr”?
  • “PiViDí”?
  • “logdiemés” (claro encima la hache es muda no?).
String birthDateString = "29 de Junio de 1982" // Better
String birthDate = "29 de Junio de 1982" // Even Better
Integer personCounter = 0 // Better
Integer peopleCounter = 0 // Even Better
String pass = "god" // Better
String password = "god" // Even Better
Date logTimeStamp = Calendar.getInstance().getTime(); // Better
Date logTime = Calendar.getInstance().getTime(); // Even Better

Cuando Goku alcanza por primera vez el tercer nivel de Súper Saiyan pregunta a Boo:

  • “Os demostraré qué es tener más fuerza que el Súper Guerrero que ha superado la fuerza del Súper Guerrero”

Visto así casi prefiero el SSGSS, ¿os imagináis a Vegeta que (spoiler: supera el SSB) decir?:

  • “Y acabo de superar la fuerza del Super Guerrero (nv1) que ha superado la fuerza del Súper Guerrero (nv2) que ha superado la fuerza del Súper Guerrero (nv3) que ha superado al Súper Guerrero Dios (SSG) que ha superador al “Súper Guerrero Dios Súper Guerrero”

Por suerte Vegeta es más listo que eso y pasa de ponerle nombre y se pone a repartir leña que es lo que toca.

Agradecimientos

Gracias a mis compañeros y compañeras de Basetis por el acceso a este libro y la flexibilidad para escribir este contenido que comparto con vosotras.