Rozmawiałem ze starszymi programistami o konwencjach programistycznych dotyczących naszych projektów (głównie projektów Java / JEE). Nie zgodziłem się z jedną konwencją, którą zaproponował:
Nazwy zmiennych instancji powinny zaczynać się od „_”, zmienne lokalne - „loc”, a parametry metody - „par”, aby łatwo było ustalić pochodzenie i zakres zmiennej.
Chociaż przedstawił argumenty za pamięcią krótkotrwałą i czytelnością, nie zgodziłem się z tym, że raczej zmniejsza ona czytelność, IDE, takie jak zmienne formatu Eclipse, różnią się w zależności od ich typu, a tego problemu można by uniknąć dzięki dobrej konstrukcji klasy i metody.
Czy masz jakieś opinie, argumenty lub analizy, które potwierdzają moją tezę (lub ją sprzeciwiają)?
Odpowiedzi:
Jak mówi Wikipedia na ten temat - Zasady nazywania java,
Zgodnie z moim doświadczeniem ze standardami kodowania, nazwy zmiennych Instance zaczynające się od „_” nie są zbyt dobre, jak mówią standardy wikipedia.
zmienne lokalne z „loc”, a parametry metody z „par”, jak powiedziałeś, łatwo byłoby zidentyfikować zmienne źródło i zakres, ale powinno to być dla ciebie, a nie dla innych programistów, którzy pewnego dnia mogą przeglądać kod w celu konserwacji .
Zgodnie ze specyfikacją Clean Code dotyczącą metod, powinny one być możliwie krótkie, aby można było je odczytać, a nazwy zmiennych nie powinny być odwzorowywane w myślach, powinny być odpowiednie dla operacji wykonywanej przez tę metodę.
Prefiksy elementów / zakresów, nie musisz już prefiksować zmiennych elementów za pomocą m_. Twoje klasy i funkcje powinny być na tyle małe, że ich nie potrzebujesz. Powinieneś używać środowiska edycyjnego, które wyróżnia lub koloruje członków, aby je wyróżnić.
Poza tym ludzie szybko uczą się ignorować prefiks (lub sufiks), aby zobaczyć znaczącą część nazwy. Im więcej czytamy kod, tym mniej widzimy prefiksów. W końcu prefiksy stają się niewidzialnym bałaganem i znacznikiem starszego kodu.
źródło
To stare pytanie, ale i tak zamierzam tutaj napisać. Mam ponad 20 lat programowania i radzenia sobie z kodem innych osób.
Myślę, że nazywanie twojej zmiennej krótkim wskazaniem co do jej zakresu jest naprawdę przydatne dla następnej osoby (lub ciebie), która spojrzy na twój kod.
Jeszcze nie patrzy się na kod w IDE z ładnymi kolorami (i nie pamiętam, co oznaczają kolory, a różne IDE pokazują różne kolory itp.).
To prawda, że metody powinny być wystarczająco krótkie, aby nie było załadowane tonami zmiennych i tonami kodu, ale nawet na jednym krótkim - kiedy spojrzysz na kod, który jest zupełnie nieznany, czasami trudno jest stwierdzić, czy zmienna jest zmienną klasową, lokalną zmienna lub parametr metody.
Umiejętność odróżnienia na pierwszy rzut oka ułatwia zapoznanie się z nieznanym kodem.
Weź ten przykład:
Teraz czas i spójrz na kod (wyodrębniony z ElasticsearchTemplate z projektu spring-data-elasticsearch - kod, który sprawdzałem, co skłoniło mnie do wyszukiwania w Google tego, co ludzie mówią o konwencjach nazewnictwa).
resultsMapper
?requestBuilding
parametr?Oto moja prosta sugestia, jak należy nazywać zmienne:
HOST_NAME
.).resultsMapper
.).a
(npaQuery
,aClazz
).my
(npmyIndexName
,myType
).Powyższy kod staje się:
}
Czy to jest idealne? Nie wydaje mi się Ale powyższe, jeśli chodzi o zmienne, jest teraz łatwiejsze do odczytania. Są inne rzeczy, takie jak wyrównanie i odstępy, do których nie wchodzę w tę odpowiedź, ponieważ nie jest to związane z pytaniem, co ułatwiłoby również czytanie.
Nie lubisz Camel Case? Dobrze, użyj podkreślników itp., Ale poprzedź lokalne zmienne i parametry, aby różniły się od zmiennych instancji klasy.
Nie lubisz
a
imy
- dobrze, po prostu bądź konsekwentny w swoim projekcie i używaj czegoś innego ... ale używaj czegoś.Zasada nr 1: spójność w ramach projektu.
Zasada nr 2: ułatw czytanie i nie wymagaj od czytelnika, aby wiedział wszystko, zanim będzie mógł się uczyć.
źródło
Jest to w dużej mierze kwestia preferencji i jako taka nie ma „poprawnej” odpowiedzi. To pytanie może więc zostać zamknięte. Ale zanim to nastąpi, pozwól mi powiedzieć, że całkowicie się z tobą zgadzam. Prefiksy zmniejszają widoczność, jeśli o mnie chodzi. Nie mówiąc już o tym, że jeśli mają być jakieś prefiksy, należy ich używać do bardziej użytecznych rzeczy, takich jak pierwotna intencja notacji węgierskiej , a nie do rzeczy, które IDE może zapewnić wyróżnianie.
Korzystam z SentenceCase na przykład danych (zmiennych lub stałych) i small_case dla parametrów i zmiennych lokalnych, ponieważ naprawdę jest bardzo niewielka, jeśli w ogóle, różnica między nimi. Nigdy, przenigdy nie używam headlessCamelCase, ponieważ jest kiepski : identyfikator jednoskładnikowy wygląda jak małe litery, nawet jeśli miał być bezgłowyCamelCase.
źródło