Encuentro que la "" codificación (sic) "" cada vez para verificar una cadena vacía no es tan buena.
Enfoque de código limpio
Hacer esto: foo == ""
es una muy mala práctica. ""
Es un valor mágico. Nunca debe verificar los valores mágicos (más comúnmente conocidos como números mágicos )
Lo que debe hacer es compararlo con un nombre de variable descriptivo.
Nombres descriptivos de variables
Uno puede pensar que "cadena_vacía" es un nombre de variable descriptivo. No es .
Antes de ir y hacer empty_string = ""
y pensar que tiene un gran nombre de variable para comparar. Esto no es lo que significa "nombre de variable descriptivo".
Un buen nombre de variable descriptiva se basa en su contexto. Usted tiene que pensar en lo que la cadena vacía es .
- De dónde viene.
- ¿Por qué está ahí?
- ¿Por qué necesitas verificarlo?
Ejemplo de campo de formulario simple
Está creando un formulario donde un usuario puede ingresar valores. Desea verificar si el usuario escribió algo o no.
Un buen nombre de variable puede ser not_filled_in
Esto hace que el código sea muy legible
if formfields.name == not_filled_in:
raise ValueError("We need your name")
Ejemplo completo de análisis CSV
Está analizando archivos CSV y desea que la cadena vacía se analice como None
(Dado que CSV está completamente basado en texto, no puede representarse None
sin usar palabras clave predefinidas)
Un buen nombre de variable puede ser CSV_NONE
Esto hace que el código sea fácil de cambiar y adaptar si tiene un nuevo archivo CSV que se representa None
con otra cadena que no sea""
if csvfield == CSV_NONE:
csvfield = None
No hay preguntas sobre si este código es correcto. Está bastante claro que hace lo que debería hacer.
Compara esto con
if csvfield == EMPTY_STRING:
csvfield = None
La primera pregunta aquí es: ¿por qué la cadena vacía merece un tratamiento especial?
Esto le diría a los futuros codificadores que una cadena vacía siempre debe considerarse como None
.
Esto se debe a que combina la lógica empresarial (cuál debería ser el valor CSV None
) con la implementación del código (con qué nos estamos comparando)
Es necesario que haya una separación de preocupación entre los dos.
""
no es tan bueno?