Czy metody boolowskie powinny zawsze przyjmować formę twierdzącą, nawet jeśli kiedykolwiek będą stosowane tylko w formie negatywnej?
Powiedzmy, że chciałem sprawdzić, czy istnienie istnieje przed utworzeniem jednego, moim argumentem jest to, że pierwsza forma poniżej jest lepsza niż druga forma, niezależnie od tego, czy metoda jest kiedykolwiek używana w formie twierdzącej.
Podsumowując, uważam, że jest if(!affirmative)
łatwiejszy do odczytania niż if(negative)
. Mam kolegę, który się nie zgadza, myśli?
Pierwsza forma:
int entity_id = 42;
if(!entity_exists(entity_id)) create_entity(entity_id);
Druga forma:
int entity_id = 42;
if(entity_not_exist(entity_id)) create_entity(entity_id);
!
postacią tyle razy, co spowodowało, że źle zrozumiałem kod, dopóki nie przeczytałem go ponownie. Prawdopodobnie więc bardziej zgadzam się z twoim współpracownikiem. Podoba mi się forma, która sprawdza się jako prawdziwa, kiedy ją analizujesz.
if (!exists) create()
może to być postrzegane jako zła praktyka w wielu językach / frameworkach, ponieważ zwykle nie jest bezpieczne dla wątków. Zazwyczaj preferowanym podejściem jest wywoływanie create()
i obsługa określonych wyjątków lub kodów zwrotnych informujących, że jednostka już istnieje. To oczywiście nie jest odpowiedź na rzeczywiste pytanie (dlatego jest to tylko komentarz).
if (not entity_exists(entity_id))