Object Calisthenics – No abreviar
Esta entrada debería ser bastante escueta, aunque pondré algún código de ejemplo como siempre y así se podrá ver con mas claridad cual es el objetivo de esta regla.
Básicamente se trata de no abreviar nombres de objetos, variables o funciones, y siempre usar un nombre que sea identificativo y acorde y que se corresponda con lo que realiza la función, sobre que funcionalidad aplique el objeto o que el nombre de la variable sea representativo en base a que recibe.
Muchas veces tenemos una clase, que instanciamos en una nueva variable, y por no repetir el nombre de la clase abreviamos, veamos un ejemplo
public class Position
{
private int X { get; set; }
private int Y { get; set; }
public Position(int x, int y)
{
X = x;
Y = y;
}
public void Posicionar(int x, int y)
{
X = x;
Y = y;
}
}
var pos = new Position(2,5);
Lenguaje del código: JavaScript (javascript)
En este ejemplo, la variable pos puede llegar a ser confusa, ya que en un momento dado podríamos no conocer el contexto de la misma, y puede llevar a confusiones, ya que pos en sí podría significar muchas cosas. Por lo que deberíamos denominarla de la siguiente forma
var position = new Position(2,5);
Lenguaje del código: JavaScript (javascript)
Ahora estamos instanciando Position() con el nombre declarativo e identificativo de position, en el caso en el que no conociésemos la referencia en si podría llevarnos a una confusión sobre que es exactamente lo que ahí se ha instanciado.
Elegir un buen nombre para una variable, un objeto o una función, es muy importante, mas vale crear una variable mas larga y que sea identificativa, que no, por querer abreviar, provoquemos una confusión. Un nombre adecuado siempre nos proporciona un código mas limpio y entendible, y que se explica por si solo.
En este error caemos mucho los programadores a la hora de usar iteraciones, ya que tendemos siempre a usar letras tales como i,j,k…etc
for (int i = 0; i < listPosition.Count; i++)
{
yield return listPosition[i].ToString();
}
Lenguaje del código: JavaScript (javascript)
En esta iteración que podríamos decir que es i, pues cualquier cosa, para estos casos siempre es mejor del mismo modo usar variables mas identificativas, tipo index, position o la mas acorde a lo que estemos realizando.
for(int index= 0; index < listPosition.Count; index++)
{
yield return listPosition[index].ToString();
}
Lenguaje del código: JavaScript (javascript)
Con esta segunda variable llamada index estamos indicando de una forma mas clara que estamos recorriendo cada una de las posiciones de la lista de Position(), aunque para este ejemplo arriba ya queda claro, para otro tipo de funcionalidades mas complejas podría llegar a ser confuso usar i.
Para finalizar, me gustaría matizar, que a la hora de realizar declaraciones, bien de variables, métodos, funciones o suite de tests, hemos de tener en cuenta, (aunque me esté saliendo un poco de la regla y entrando mas en otros términos), tratar de usar un lenguaje ubicuo, que sea entendible por cualquier persona, bien sea programador, product owner, team leader…etc.
Una buena definición en nuestro código, por ejemplo, puede favorecer en una Suite de Tests para que estos sirvan de documentación.