Sollten boolesche Methoden immer die positive Form annehmen, auch wenn sie immer nur in der negativen Form verwendet werden?
Angenommen, ich wollte vor dem Erstellen einer Entität überprüfen, ob eine Entität vorhanden ist. Mein Argument ist, dass die erste Form darunter besser ist als die zweite Form, unabhängig davon, ob die Methode jemals in der positiven Form verwendet wird oder nicht.
Zusammenfassend finde ich if(!affirmative)
leichter zu lesen als if(negative)
. Ich habe einen Kollegen, der anderer Meinung ist, Gedanken?
Erste Form:
int entity_id = 42;
if(!entity_exists(entity_id)) create_entity(entity_id);
Zweite Form:
int entity_id = 42;
if(entity_not_exist(entity_id)) create_entity(entity_id);
!
Zeichen so oft verpasst, dass ich den Code falsch verstanden habe, bis ich ihn erneut gelesen habe. Deshalb stimme ich wahrscheinlich eher Ihrem Kollegen zu. Ich mag das Formular, das als wahr bewertet wird, wenn Sie es untersuchen.
if (!exists) create()
um zu sagen, dass dies in vielen Sprachen / Frameworks als eine schlechte Praxis angesehen werden kann, da es tendenziell nicht threadsicher ist. Normalerweise besteht der bevorzugte Ansatz darin, create()
bestimmte Ausnahmen oder Rückkehrcodes aufzurufen und zu verarbeiten, die besagen, dass die Entität bereits vorhanden ist. Dies ist natürlich keine Antwort auf die eigentliche Frage (weshalb es sich nur um einen Kommentar handelt).
if (not entity_exists(entity_id))