Este capítulo discute la importancia de nombrar variables, funciones y parámetros de manera clara y sin ambigüedades. Recomienda usar términos como "min", "max", "first", "last", "begin" y "end" para especificar límites inclusivos o exclusivos. También sugiere evitar nombres negados y añadir palabras como "es", "tiene" o "puede" para clarificar el significado de variables booleanas.
2. Buscar ambigüedades
Supongamos que usted tiene la siguiente función que recorta un párrafo:
# Corta el final del texto y coloca “…”
def Clip(text, length):
…
La función Clip() y el parámetro length son ambiguos, ya que pueden ser
interpretados de diferentes maneras.
3. Preferir “min” y “max” para límites
inclusivos
Supongamos que tenemos la siguiente función que verifica que no se compren
mas de 10 ítems en un carrito de compras:
CART_TOO_BIG_LIMIT = 10
if shopping_cart.num_items() > CART_TOO_BIG_LIMIT:
Error("Too many items in cart.")
El nombre de la variable “CART_TOO_BIG_LIMIT” es ambiguo, ya que no es
posible saber si el limite es hasta el valor de la variable o si incluye este valor.
4. Preferir “first” and “last” para rangos
inclusivos
La siguiente función es otro ejemplo en el que no se sabe si incluye o no el valor
print integer_range(start=2, stop=4)
# La función imprime [2,3] ó [2,3,4] ?
Aunque el parametron “start” es razonable, el parámetro “stop” se puede
interpreter de diferentes maneras.
5. Preferir “begin” y “end” para rangos
inclusivo/exclusivo
Es muy común usar rangos inclusivo/exclusivo, por ejemplo, si queremos saber
que eventos ocurrieron en un día especifico es mas fácil escribir:
PrintEventsInRange("OCT 16 12:00am", "OCT 17 12:00am")
En lugar de escribir:
PrintEventsInRange("OCT 16 12:00am", "OCT 16 11:59:59.9999pm")
Sin embargo la palabra “end” puede ser ambigua pero es la más usada y la que
mejor se adapta a estas situaciones.
6. Nombrando booleanos
Hay que asegurarse de que haya claridad en que significa el valor “true” y “false”
en la variable, por ejemplo:
bool read_password = true;
En este caso, el valor true de variable pueden significar diferentes cosas.
7. Nombrando booleanos
En general, se pueden hacer los booleanos mas claros al añadir palabras como:
es, tiene, puede o debe.
Por ejemplo:
Si tenemos una función que se llama EspacioIzquierda(), se podría suponer que
la función retorna cualquier tipo de valor. Para asegurarse de que la función
retorna un booleano, podemos añadir a la función TieneEspacioIzquierda().
8. Nombrando booleanos
Finalmente, es mejor evitar términos negados al nombrar una variable. Por
ejemplo:
bool inhabilitar_ssl = false;
Seria mas fácil de leer si escribimos:
bool usar_ssl = false;
9. Las expectativas de los usuarios
Algunos nombres son engañosos porque el usuario tiene una idea preconcebida
de lo que el nombre significa, a pesar de que quiere decir algo más. En estos
casos, lo mejor es simplemente "ceder" y cambiar el nombre para que no sea
engañoso. Por ejemplo:
•get*()
•size()