Technicznie nie, ale poza tym absolutnie tak !!!
Zapomnij o „osobistych preferencjach”, „kod będzie działał dobrze”, „u mnie działa dobrze”, „jest bardziej czytelny” yada yada BS. Może to łatwo doprowadzić do bardzo poważnych problemów, jeśli popełnisz błąd i uwierz mi, bardzo łatwo jest popełnić błąd podczas kodowania (nie wierz ?, sprawdź słynny błąd Apple go to fail ).
Argument: „To osobiste preferencje”
Nie, nie jest. Chyba że jesteś jednoosobową drużyną wyjeżdżającą na Marsa, nie. W większości przypadków inne osoby będą czytały / modyfikowały Twój kod. W każdym poważnym zespole programistycznym będzie to zalecany sposób, więc nie jest to „osobiste preferencje”.
Argument: „kod będzie działał dobrze”
Tak samo jak kod spaghetti! Czy to znaczy, że można to stworzyć?
Argument: „u mnie działa dobrze”
W swojej karierze widziałem wiele błędów powstałych z powodu tego problemu. Prawdopodobnie nie pamiętasz, ile razy komentowałeś 'DoSomething()'
i zastanawiałeś się, dlaczego 'SomethingElse()'
nazywa się:
if (condition)
DoSomething();
SomethingElse();
Lub dodał „SomethingMore” i nie zauważył, że nie zostanie wywołany (mimo że wcięcie sugeruje inaczej):
if (condition)
DoSomething();
SomethingMore();
Oto przykład z życia wzięty. Ktoś chciał wyłączyć wszystkie rejestrowanie, więc uruchomił find & replace "console.log"
=> //"console.log"
:
if (condition)
console.log("something");
SomethingElse();
Widzisz problem?
Nawet jeśli myślisz: „to jest tak trywialne, nigdy bym tego nie zrobił”; pamiętaj, że zawsze znajdzie się członek zespołu o gorszych umiejętnościach programistycznych od Ciebie (miejmy nadzieję, że nie jesteś najgorszy w zespole!)
Argument: „jest bardziej czytelny”
Jeśli nauczyłem się czegokolwiek o programowaniu, to to, że proste rzeczy bardzo szybko stają się bardzo złożone. Bardzo często jest to:
if (condition)
DoSomething();
zmienia się w następujący po przetestowaniu go z różnymi przeglądarkami / środowiskami / przypadkami użycia lub dodaniu nowych funkcji:
if (a != null)
if (condition)
DoSomething();
else
DoSomethingElse();
DoSomethingMore();
else
if (b == null)
alert("error b");
else
alert("error a");
I porównaj to z tym:
if (a != null) {
if (condition) {
DoSomething();
}
else {
DoSomethingElse();
DoSomethingMore();
}
} else if (b == null) {
alert("error b");
} else {
alert("error a");
}
PS: Dodatkowe punkty trafiają do tego, kto zauważył błąd w powyższym przykładzie.