Czy w Javie zaleca się stosowanie zmiennych jednowoliterowych? We fragmentach kodu lub samouczkach często je widzisz. Nie wyobrażam sobie, aby korzystanie z nich było zachęcane, ponieważ sprawia, że kod jest stosunkowo trudniejszy do odczytania i nigdy nie widzę, aby były używane w innych językach programowania!
java
coding-standards
variables
William Edwards
źródło
źródło
Odpowiedzi:
Właściwe nazywanie rzeczy jest trudne. Bardzo trudny. Jeśli spojrzysz na to z innej strony, możesz również wziąć to pod uwagę, że właściwie nazwane rzeczy są ważne. (W przeciwnym razie, dlaczego miałbyś tyle wysiłku nazwać to?)
Ale czasami nazwy rzeczy nie są ważne. Właśnie dlatego mamy takie funkcje jak anonimowe funkcje („lambdas”), na przykład: ponieważ czasami po prostu nie warto nazywać rzeczy.
Istnieje wiele przykładów, w których odpowiednie są jednoliterowe (lub bardzo krótkie) nazwy zmiennych:
i
,j
,k
,l
O indeksach pętlik
orazv
dla klucza i wartości na mapien
dla numeru (np. wMath.abs(n)
)a
,b
,c
O dowolnych obiektów (npmax(a, b)
)e
dla elementu w ogólnejfor each
pętlif
dla funkcji w funkcji wyższego rzędup
dla funkcji predykatu w filtrzeT
,T1
,T2
, ... dla zmiennych typuE
dla zmiennych typu reprezentujących typ elementu kolekcjiR
dla zmiennej typu reprezentującej typ wyniku funkcjiex
dla wyjątku wcatch
klauzuliop
do operacji na mapie lub folds
celu oznaczenia liczby mnogiej, tj. zbioru (np.ns
dla zbioru liczbxs
iys
dla dwóch dowolnych zbiorów obiektów ogólnych)Są bardzo popularne w prawie każdym języku, który znam (i prawdopodobnie także w tych, których nie znam.) Haskell, F #, ML, Ruby, Python, Perl, PHP, C #, Java, Scala, Groovy, Boo, Nemerle, D, Go, C ++, C, nazywasz to.
źródło
k
il
indeksów pętli, to jest zbyt daleko (nie powinien mieć, że wielu zagnieżdżonych pętli zacząć; ekstrakt ich funkcji) . Osobiście nigdy nie używam więcej niż jednej 1-literowej zmiennej na funkcję, ale strzelam do 0.l
lublen
jest używany dla długości iarr
tablicy (npfor(var i=0; l=arr.length; i<l; i++)
.:). Ponadto,fn
mogą być stosowane zamiastf
, gdy odnoszą się do funkcji.Jeśli twoja pętla nie robi nic, użyj zmiennej do zliczania
tak, to najlepsze imię, jakiego możesz użyć. Nic już nie może uczynić semantyki bardziej oczywistym, ale czytanie zajmuje dużo więcej czasu.
Jeśli zmienna jest używana w pętli, przydatna może być znacząca nazwa.
Jeśli twoja zmienna jest używana dla całej metody, jej nazwa powinna być dłuższa; jeśli jest używany w całej klasie, jego nazwa powinna być całkowicie zrozumiała, w przeciwnym razie prawie na pewno zmniejszy przejrzystość twojego kodu.
Krótko mówiąc, im większy zakres zmiennej, tym dłuższa musi być jej nazwa.
źródło
index
podczas iteracji po tablicy.i
jest właściwe słowo o ściśle określonym znaczeniu, a mianowicie „indeks, o który nie musisz się zbytnio przejmować”. Ale myślę, że to kwestia znajomości. Jeśli dużo Haskell czytać, będziesz przyzwyczajeni czytaćm
jako monady ,f
jak funktora ,x
jak jakiś przedmiot ,xs
jak listyx
s i tak dalej.i
jest to „najlepsza nazwa, jakiej możesz użyć” dla pętli, która używa zmiennej tylko do zliczania. W takim przypadku wolałbymcount
użyć nazwy zmiennej: natychmiast zrozumiałej.for (int count = 0; count < 10; count++)
lubwhile (count--)
.Czytając kod w odpowiedzi Kiliana, nie sądzę, że „istnieje pętla i istnieje zmienna, ma ona typ int i ma nazwę, a nazwa to i, i jest inicjowana na 0,. .. ”. Po prostu myślę „pętla ...”, gdzie trzy kropki oznaczają nieistotne szczegóły, o których nawet nie myślę. W mojej głowie programisty ta zmienna tak naprawdę nie istnieje, to po prostu artefakt, który muszę wpisać, podobnie jak for (;;) {}, co czyni ją pętlą.
Ponieważ ta zmienna nawet nie istnieje w moim umyśle, dlaczego miałbym nadawać jej nazwę poza tym, co jest absolutnie konieczne?
źródło
i
, ale_
dla oczywiście bez znaczenia zmiennej. Ale nie wszyscy znają Prologa i prawdopodobnie spowodowałby więcej uwagi niż to, co usuwa.for (...)
nagłówku._
jest legalnym identyfikatorem, jak każda inna, ostatnio zaszła zmiana, że nieużywane zmienne lokalne o nazwie_
(lub zaczynające się od_
) nie generują ostrzeżenia „nieużywana zmienna lokalna”, mimo że Ruby normalnie o nich ostrzega.Jeśli używasz liter i, j, k jako wskaźników w pętli, jest to powszechna praktyka w Javie i innych językach programowania. Chociaż prawdopodobnie lepiej jest użyć pętli dla każdego stylu, na przykład
zamiast
W Javie ten styl zapętlania został wprowadzony całkiem niedawno. Być może dlatego częściej zauważasz to w Javie, ponieważ zapętlanie indeksów było najczęstszym sposobem zapętlania tablicy lub listy.
Istnieje kilka innych przypadków, w których pojedyncze litery mogą być odpowiednie, na przykład podczas implementacji funkcji matematycznej, w której pojedyncze litery, takie jak n, x lub y, mogą być już powszechne. Ale ogólnie nie, nazwij swoje zmienne czymś znaczącym.
źródło