if
Jeśli to w ogóle możliwe, należy unikać długich warunków nawijania , ale czasem wszyscy je piszemy. Nawet jeśli jest to bardzo prosty warunek, zaangażowane stwierdzenia są czasami po prostu bardzo trudne, więc cały warunek kończy się bardzo długo. Jaki jest najbardziej czytelny sposób ich sformatowania?
if (FoobarBaz::quxQuux(corge, grault) || !garply(waldo) || fred(plugh) !== xyzzy) {
thud();
}
lub
if (
FoobarBaz::quxQuux(corge, grault)
|| !garply(waldo)
|| fred(plugh) !== xyzzy
) {
thud();
}
lub
if (FoobarBaz::quxQuux(corge, grault)
|| !garply(waldo)
|| fred(plugh) !== xyzzy) {
thud();
}
lub
thudable = FoobarBaz::quxQuux(corge, grault);
thudable ||= !garply(waldo);
thudable ||= fred(plugh) !== xyzzy;
if (thudable) {
thud();
}
lub jakieś inne preferencje?
coding-style
conditions
deceze
źródło
źródło
Lubię zatrzymywać operatorów na końcu, aby wskazać kontynuację:
źródło
Jestem wielkim fanem znaczących nazw zmiennych:
Lub refaktor jako funkcja, jak wspomniano powyżej.
źródło
Przełamuję bałagan podwyrażenia lub wszystkie z nich jako zmienne bool. Następnie można wyjaśnić logiczną logikę najwyższego poziomu instrukcji „if”. W pracy, którą wykonuję, nie zawsze jest kilka rzeczy ORed lub ANDed.
Jest to szczególnie dobre w debuggerze, w którym mogę sprawdzić wszystkie boole przed wykonaniem „if”.
źródło
Staram się wyrównywać operatory na początku nowych linii, więc pamiętam, jak łączę terminy (zarówno dla długiej logiki, jak i długiej arytmetyki). Lubię to:
Działa to tylko wtedy, gdy wcinam o 2 spacje lub ustawiam moje środowisko na wcięcie multilinii predykatów więcej, inaczej trudno byłoby określić, gdzie kończy się predykat i zaczyna się przydatny kod.
źródło
Jestem fanem następujących rzeczy:
W ten sposób nadal wygląda jak wyrażenie if, a nie rozbite na kawałki wyrażenie. Wcięcie pomaga pokazać, że jest kontynuacją poprzedniej linii.
Możesz go również wciąć, dopóki nawias otwierający nie znajdzie się na końcu poprzedniej linii, aby znalazł się na końcu wyrażenia if, tak jak powinien.
źródło