¿Deberían los métodos booleanos tomar siempre la forma afirmativa, incluso cuando solo se utilizarán en forma negativa?
Digamos que quería verificar si existe una entidad antes de crear una, mi argumento es que la primera forma a continuación es mejor que la segunda forma, ya sea que el método se use o no en forma afirmativa.
En resumen, me resulta if(!affirmative)
más fácil de leer que if(negative)
. Tengo un colega que no está de acuerdo, ¿pensamientos?
Primera forma:
int entity_id = 42;
if(!entity_exists(entity_id)) create_entity(entity_id);
Segunda forma:
int entity_id = 42;
if(entity_not_exist(entity_id)) create_entity(entity_id);
!
personaje tantas veces que me hizo entender mal el código hasta que lo volví a leer. Así que probablemente estoy más de acuerdo con tu compañero de trabajo. Me gusta la forma que se evalúa como verdadera cuando la examinas.
if (!exists) create()
puede verse como una mala práctica en muchos lenguajes / marcos, ya que tiende a no ser seguro para subprocesos. Por lo general, el enfoque preferido es llamar create()
y manejar excepciones específicas o códigos de retorno que dicen que la entidad ya existe. Por supuesto, esto no es una respuesta a la pregunta real (que es por qué es solo un comentario).
if (not entity_exists(entity_id))