Jak postępować zgodnie z najlepszą praktyką dotyczącą limitu 80 znaków podczas pisania kodu źródłowego?

15

Jak wiecie, jest powiedzenie najlepszej praktyki

Ogranicz wiersz kodu źródłowego o 80 znaków.

Oto 2 linki:

Dlaczego 80 znaków to „standardowy” limit szerokości kodu?

Czy limit 80 znaków jest nadal istotny w czasach monitorów szerokoekranowych?

I jestem pewien, że możesz grzywnę więcej, jeśli szukasz tej najlepszej praktyki.

Ale uważam to za niezwykle trudne, oto przykładowy przykład:

public class MyClass {

    public void myMethod() {

        final Map<String, List<MyInterfaceHere>> myReference

Więc wcinasz każdą klasę, każdą metodę i każdą instrukcję.

I jestem już w kolumnie 60 pod koniec ostatniego „e” w „myReference”.

Zostało mi 20 spacji, które wywołują konstruktor i przypisują obiekt do referencji, którą mam.

Mam na myśli, czy to naprawdę wygląda lepiej:

public class MyClass {

    public void myMethod() {

        final Map<String, List<MyInterfaceHere>> myReference 
                = new HashMap<String, List<MyInterfaceHere>>(); 

Jaka jest tutaj najlepsza praktyka?

Koray Tugay
źródło
6
Robimy to 140. 80 mogło być dobre w czasach mniejszych ekranów i mniejszych drukarek
tgkprog
7
najlepsza praktyka, chyba że masz wersje End of Of Life, takie jak 5/6 , prawdopodobnie final Map<String, List<MyInterfaceHere>> myReference = new HashMap<>();(80 znaków z wcięciem jak w twoim przykładzie)
komnata
4
Meta-najlepszą praktyką nie jest ślepe stosowanie najlepszych praktyk sprzed dwudziestu lat. Kiedy 17-calowy CRT miał rozdzielczość 1280x1024, dolne limity znaków miały sens, ale nie dzisiaj.
TMN
2
Zauważ, że jedną z zalet używania wąskich kolumn tekstu zamiast rozrzucania się po całej dostępnej przestrzeni na ekranie jest możliwość łatwego przeglądania wielu fragmentów kodu obok siebie. 80 chars * 7 pixels/char = 560 pixels per file. Dzięki temu dwa pliki (1120 pikseli) wygodnie mieszczą się na szerokoekranowym ekranie 1280 pikseli lub trzy (1680 px) na ekranie 1920 pikseli, w obu przypadkach pozostawiając trochę miejsca na numery linii, paski przewijania, sigile i inne elementy interfejsu użytkownika . Lub nawet sporadycznie nieco dłuższa linia.
8bittree,
3
@ 8bittree Mogę wyświetlać kod obok siebie - na dwóch monitorach. Rozwój na jednym monitorze jest jak prowadzenie samochodu za pomocą tylko jednego koła.

Odpowiedzi:

18

Najlepszą praktyką powinno być „ograniczenie długości linii, abyś ty, wszyscy twoi koledzy i wszystkie narzędzia, których używasz, byli z niej zadowoleni”, a także zdrowy rozsądek. 80 znaków wydaje się bardzo niskich i ma tendencję do zmniejszania czytelności. Kiedyś zostałem całkowicie oszukany przez taką linię:

/* Very long comment to the end of the line */ realCode ();

gdzie wywołanie funkcji nie było widoczne na ekranie (ani nie było widoczne na ekranie jakiegokolwiek kolegi) bez żadnego wskazania.

Ustawiłem mój edytor tak, aby wyświetlał margines 100 kolumn plus przepisywanie kodu na wyświetlaczu, dzięki czemu wszystko jest zawsze widoczne podczas edycji, a zbyt długie linie zwykle są ręcznie dzielone na dwie lub czasem więcej linii. Módl się, aby Twój edytor ładnie formatował podzielone instrukcje, jeśli dokonuje automatycznego formatowania. Użyj stylu kodowania, który nie prowadzi do głęboko zagnieżdżonych instrukcji. (Niektórzy ludzie tworzą gniazdo dwudziestu instrukcji if, po których następuje ogon dwudziestu innych, co prowadzi do głębokiego wcięcia 200 znaków i nikt nie może ustalić, do którego jeszcze należy).

W twoim szczególnym przypadku Swift wynalazł sposób, aby tego uniknąć: Zmiennej „let” (która w innych językach jest mniej więcej taka sama jak „końcowa”) należy przypisać wartość dokładnie jeden raz, ale niekoniecznie w deklaracji , abyś mógł podzielić swoją kłopotliwą linię na dwie niezależne wypowiedzi.

PS. Zetknąłem się z linijkami, napisanymi przez ludzi, zawierającymi ponad 400 znaków. Innymi słowy, będziesz musiał przewijać przez wieki, aby przeczytać resztę linii, nawet na 24-calowym monitorze. Nie byłem rozbawiony :-(

gnasher729
źródło
10
Wydaje się, że /* Very long comment to the end of the line */ realCode ();powinienem już złamać inne zasady stylu.
Robert Harvey,
3
/* Very long comment to the end of the line */ realCode ();jest jednym z powodów, dla których IDE mają formaterery kodu, które automatycznie umieszczają komentarz i kod w osobnych wierszach.
2
Pochodzi z tego samego źródła, które napisało niesławnie „if (warunek) \ n \ tgoto exit; \ n \ tgoto exit;”. Zaledwie kilka lat wcześniej.
gnasher729
Uważam, że ustawienie maksymalnej długości linii na 80 znaków zmusza mnie do myślenia w kategoriach funkcji i klas oraz OO, zamiast pisać długą linię tekstu, aby zrobić wszystko za jednym razem. To sprawia, że ​​piszę programy, które inni mogą łatwo przygotować. Po drugie, większość programów (z mojego doświadczenia) widziałem, jak SV pracuje na swoich laptopach i nie mam do dyspozycji wyświetlaczy z dużym ekranem przez cały czas. Pisanie w limitach 80 znaków pomaga każdemu. Po trzecie, możesz podzielić duży ekran monitora na wiele paneli i jednocześnie wyświetlać kod.
alpha_989
3

Tak, wygląda lepiej. Właśnie dlatego „Nie używaj zbyt długich linii!” maksyma jest bardzo silna.

Jeśli chodzi o najlepszą praktykę, nigdy nie używam tych okropnie długich wyrażeń konstruktora. Zawsze bym używał

public class MyClass {

    public void myMethod() {

        final Map<String, List<MyInterfaceHere>> yReference = newMap();

dla niektórych odpowiednio zdefiniowanych, statycznie importowanych wartości newMap(). Uważam to za poważną wadę w Javie, ponieważ nie ma ona wbudowanej wersji.

Kilian Foth
źródło
1

Celem nie jest „utrzymanie linii do 80 znaków”. Celem jest „uczynienie kodu łatwym do odczytania i zrozumienia”. Sztuczny limit 80 znaków pomaga w czytelności, ale nie jest to trudna i szybka reguła, chyba że twoja drużyna tak zdecyduje.

Poprosiłeś o najlepszą praktykę, a najlepszą praktyką jest „skupienie się na uczynieniu kodu tak czytelnym, jak to możliwe”. Jeśli to wymaga więcej niż 80 znaków, niech tak będzie.

Bryan Oakley
źródło
1

Nie bój się uderzać w klawisz Return. Większość współczesnych języków (w tym Java jak w twoim przykładzie) jest całkiem zadowolona z instrukcji, które działają w kilku wierszach.

Wystarczy pomyśleć o tym, gdzie przełamujesz linie, a możesz uzyskać coś, co mieści się w limicie 80 kolumn i nadal jest doskonale czytelne. Oficjalne konwencje kodowania Java określają nawet preferowane miejsca na łamanie linii.

Zrobione dobrze, starannie rozbita linia jest o wiele bardziej czytelna niż ta, która znika z boku ekranu.

Simon B.
źródło
1

Jeśli wymuszasz długość / szerokość linii kodu, użyj narzędzia.

  • Resharper
  • Asystent wizualny
  • itp.

Deweloperzy decydują o rozsądnej długości (80, 120, 200 itd.), Ustaw tę opcję w narzędziu.

Następnie po prostu napisz kod, jak zwykle, bez względu na szerokość lub długość linii. Po zakończeniu działania kliknij prawym przyciskiem myszy i wybierz opcję Wyczyść kod lub podobną opcję. Narzędzie sformatuje kod zgodnie z instrukcją i podzieli długie linie, jak wskazano.

Bezmyślne i łatwe, a każdy plik źródłowy zostanie sformatowany w ten sam sposób.

Jon Raynor
źródło
0

Limit 80 znaków może być trochę za krótki, ale to pomaga. Zgadzam się ze wszystkimi tymi opiniami, że kod powinien być również dobrze sformatowany. np. kod

/ * Bardzo długi komentarz na końcu linii * / realCode ();

może zawierać się w przedziale 80 znaków, ale powoduje zamieszanie, ponieważ uwagi i opcje kodu znajdują się w tym samym pojedynczym wierszu.

Przestrzeganie limitu 80 chr lub nie jest wyborem indywidualnym, ale jeśli rzeczy są widoczne w jednym ujęciu, zawsze zapewnia wygodny widok i uczucie programistom i innym recenzentom.

użytkownik220681
źródło