Jestem przyzwyczajony do ograniczania instrukcji średnikiem w Javie, więc oczywiście robię to również w kodzie Scala. Uważam również, że kod jest łatwiejszy do odczytania, ponieważ jest oczywiste, gdzie kończy się jedna instrukcja, a zaczyna inna. Ale wiele razy, gdy umieszczam fragment kodu Scala na SO, kod jest edytowany tylko po to, aby usunąć średniki.
- Czy powinienem używać średników, czy nie? Czy istnieją jakieś „oficjalne” wytyczne lub styl kodowania?
- Czy są przypadki, w których wymagane są średniki, w przeciwnym razie kod jest niejednoznaczny?
coding-style
scala
Petr Pudlák
źródło
źródło
Odpowiedzi:
Nie ma oficjalnie „właściwego” sposobu, aby to zrobić, ale większość praktykujących omija średniki wszędzie, gdzie jest to możliwe (dlatego tak wiele osób odruchowo usuwa średniki).
Język bardzo stara się sprawić, że w ogóle zapomnisz o konieczności kończenia instrukcji. Niestety, nie do końca się udaje, więc istnieją różne skomplikowane sytuacje, w których średniki, dodatkowy zestaw nawiasów lub podobne „wskazówki” są konieczne, aby uniknąć niechcianej semantyki. Takie sytuacje są prawie tak rzadkie, że zwykle nie musisz o nich myśleć. Opinie różnią się od tego, czy oznacza to, że powinieneś interpunkować defensywnie (tak myślę), czy nigdy nie przerywać, dopóki nie napotkasz kłopotów (tak myśli większość użytkowników). Ostatecznie zależy to od tego, czy identyfikujesz się jako renegat czy modelowy obywatel.
źródło
Jak bardzo chcesz zrozumieć, jakich języków używasz? Chcesz zagrać w jego mocne strony, czy nie? Składnia Scali zachęca do przejrzystego i zwięzłego kodu; kilka skrajnych przypadków, w których skorzystanie z tej przyczyny powoduje problemy dla parsera Scala, jest pouczające (to znaczy, że można dowiedzieć się więcej o Scali, spotykając się z nimi i ucząc się, jak ich unikać) i stopniowo naprawiać (np. notację sufiksową ). Defensywne użycie średnika może oznaczać, że nigdy nie będziesz musiał się uczyć o tych problemach, ale czy naprawdę uważasz to za dobrą rzecz? Rozwiązania tych problemów zwykle mają inne implikacje, ale nie wykorzystasz tych możliwości.
Inną kwestią jest to, że, jak przyznaje Kilian, większość programistów Scali domyślnie pomija średniki. Jak zamierzasz pracować z kodem innych osób, jeśli sam unikniesz używania idiomatycznej Skali? Przekonasz się, że jest to o wiele trudniejsze niż to konieczne.
Nie mogę wystarczająco podkreślić, że te funkcje parsera Scala zostały wybrane w celu zachęcenia do czystego, wielokrotnego użytku i funkcjonalnego (w sensie fp) kodu. Weźmy na przykład składnię operatora infix; zachęca programistów do dostarczania klas prostych, jednozadaniowych metod, które dobrze komponują się razem. Biblioteka kolekcji Scali pokazuje, jak pięknie to może działać. Klasycznie wyszkoleni deweloperzy Java, którzy to przyjmą, będą mieli tendencję do rozwijania lepszych nawyków i nowych sposobów myślenia o swoim kodzie. Ci, którzy trzymają się tych wszystkich znanych kropek i nawiasów, przegapią. Twierdzę, że dotyczy to również tych, którzy są zbyt nieśmiali, aby porzucić średnik.
źródło