Kiedy korzystasz z Pythona lub Javascript, zawsze powinieneś umieszczać operatory binarne na końcu poprzedniego wiersza, aby zapobiec przedwczesnemu kończeniu kodu przez nowe wiersze; pomaga złapać błędy.
Ale w C lub C ++ to nie jest problem, więc zastanawiam się:
Czy jest jakiś powód, dla którego wolę drugą wersję od pierwszej?
return lots_of_text
+ 1;
przeciw
return lots_of_text +
1;
(Na przykład, czy jeden z nich pomaga zapobiegać innym rodzajom błędów? Czy jeden z nich jest uważany za bardziej czytelny?)
c++
coding-style
użytkownik541686
źródło
źródło
Odpowiedzi:
Jak widać z odpowiedzi, nie ma zgody w tej sprawie. Jeśli nie pracujesz w zespole, korzystaj z tego , co jest dla ciebie wygodniejsze.
I wolą wstawienie nowej linii przed operatorami.
Ilekroć muszę łamać linie, zwykle umieszczam co najwyżej jeden wyraz tego samego „poziomu” w wierszu:
Prawo grawitacji Newtona w Pythonie:
Porównaj to z:
Chcę wiedzieć, że „dzielę przez kwadrat do kwadratu”, nie chcę wiedzieć, że „mass_2 się dzieli”, ponieważ nie tak myślę o wyrażeniach matematycznych.
Co więcej, zwykle chcę najpierw wiedzieć, co robię (operator), zanim zacznę dbać o to, co robię (operandy).
Lub rozważ tę zwiniętą instrukcję SQL:
To pozwala mi zobaczyć, jak poszczególne warunki są łączone bardzo łatwo, po prostu przesuwając od góry do dołu, bez konieczności czytania każdej linii do końca, aby znaleźć operatora, w przeciwieństwie do:
Myślę o tym pierwszym w kategoriach „
X
jest prawdą”, a następnie poprawiam to, mówiąc: „ ORAZ to także prawda”, co wydaje mi się bardziej naturalne niż na odwrót. Ponadto uważam, że pierwszy jest znacznie łatwiejszy do analizy wizualnej.Lub przykład PHP:
Ponownie mogę po prostu przeglądać w pionie, aby zobaczyć, że po prostu łączę tekst, ponieważ przez większość czasu czuję, że tak naprawdę nie obchodzi mnie, co jest w łańcuchach / warunkach.
Oczywiście nie zastosowałbym tego stylu bezwarunkowo. Jeśli umieszczenie nowego wiersza za operatorem wydaje mi się bardziej sensowne, zrobiłbym to, ale nie mogę teraz wymyślić żadnego przykładu.
źródło
.
, prawda.=
?force
Prawie zawsze łamię wiersze przed operatorami binarnymi, aby czytelnikom kodu było jasne, że jest to kontynuacja wyrażenia, a nie następna instrukcja. Jest to ważne, jeśli następne zdanie byłoby normalnie wcięte. Rozważmy na przykład instrukcję if , która ma złożone wyrażenie warunkowe:
Drugą część wyrażenia warunkowego łatwo pomylić z pierwszym stwierdzeniem części wówczas. Może to być mylące, jeśli pierwsza część warunku jest długa, a && kończy się po prawej stronie. Porównaj to z alternatywą:
Wygląda to nieco dziwnie, ale wyraźnie pokazuje, że druga część warunku nie jest początkiem instrukcji.
Robię to również w innych kontekstach, ale instrukcja if jest najważniejsza, ponieważ wcięcie jest niejednoznaczne. Oczywiście można zmienić wcięcie lub położenie nawiasu klamrowego, ale to również wygląda dziwnie.
tl; dr lewy koniec linii ma większe znaczenie dla szybkiego czytania ze zrozumieniem, więc umieszczenie operatora na lewym końcu jest bardziej widocznym znacznikiem, że jest to ciągłe wyrażenie, a nie stwierdzenie.
źródło
+
i-
które można również rozumieć jako jednoargumentowe operatory prefiksów). Zwykłym rozwiązaniem, które wyróżnia linie ciągłe, jest ich wcięcie bardziej (tj. O dwa poziomy).Zawsze używałbym pierwszego. Chcesz, aby było jasne, co robisz z tym 1 tam. Gdybym to zobaczył, a nad tym 1 był tekst, nie miałbym pojęcia, co się dzieje, jeśli chodzi o użycie tego 1.
Znak „+” obok 1 wyjaśnia, że przynajmniej robię coś z 1, o którym mowa, zamiast spotykać się z „Jestem cały w twoim kodzie ...” bez wyraźnego powodu.
źródło
Wydaje mi się, że pomaga to w znacznym stopniu czytać ze zrozumienia, gdy wiersz wskazuje, że instrukcja kontynuuje w następnym wierszu, mając operator binarny na końcu, a tym samym czyni instrukcję niekompletną. Brakujący średnik nie wystarczy, abym natychmiast to zrozumiał.
Może to być po prostu kwestia przyzwyczajenia, ale chyba, że pracujesz wyłącznie w językach, które wymagają średnika (co wydaje mi się dość nierealne, biorąc pod uwagę wszechobecność skryptów powłoki, plików makefile i języków takich jak Python), prawdopodobnie nie będziesz miał tego nawyku.
EDYCJA: Giorgio doskonale podkreśla w komentarzach: to użycie odzwierciedla powszechną interpunkcję , zarówno w matematyce, jak i językach naturalnych. Piszesz
Byś nie pisać
źródło