Staram się trzymać konwencji języka odnośnie np. używania notacjiWielbłądziej (Java) czy też WersjiZWielkąPierwsząLiterą (C# -- ogólnie wiele API MS).
Nigdy nie używam polskich nazw. Staram się ograniczać liczbę języków w jednym pliku. Gdy robię interfejs aplikcji intranetowej, JavaScript ląduje w plikach .js, style CSS w .css, a znaczniki HTML w .html. Unikam zagnieżdżania jednego w drugim i prawie zawsze wychodzi.
Zasada ograniczania liczby języków dotyczy też języków naturalnych. Dlatego nigdy nie pomieszałbym polskiego z angielskim, szczególnie na tym samym poziomie abstrakcji. Komunikaty po polsku byłyby jeszcze OK, ale identyfikatory raz po polsku, a raz po angielsku -- mowy nie ma (jedynie czasem, "na kartce" gdy chcę kogoś nauczyć, używam polskich identyfikatorów).
Staram się, by jedno pojęcie było reprezentowane w aplikacji przez jedno słowo lub frazę. Np. wszystkie metody wytwórcze mają przedrostek create
(a nie że jedne createXxx
, drugie buildXxx
, trzecie jeszcze coś innego). Wszystkie zmienne oznaczające długość mają przyrostek Count
(a nie Size
lub Length
).
Staram się, by nazwy nie różniły się jedną literą. Np. gdy mam dwie funkcje: jedna, która usuwa jeden obiekt i druga, która usuwa kilka obiektów, raczej nie dodaję tylko s
na końcu (remove(listener)
/ removeListeners(someListeners)
), tylko jeszcze dodaję słowo All
(removeListener(listener)
/removeAllListeners(someListeners)
).
Niekiedy czerpię wprost ze wzorców projektowych, tj. mogę dodać przyrostek Decorator
lub Builder
w zależności od potrzeb.
W JavaScripcie czasem gubimy kontekst wykonania, tj. wartość this
. Wtedy, zgodnie z popularną konwencją, zapisuję wartość this
w zmiennej o nazwie that
. Podobnie, np. obiekty biblioteki jQuery zawsze zapisuję w zmiennych zaczynających się od znaku $
.
Do nazw przywiązuję dużą wagę. Często refaktoryzuję. Kłuje mnie coś w żołądku, gdy widzę nieudaną nazwę. Czasem zmieniam ją na długą i opisową, ale wtedy się zastanawiam, czy może zmienna nie jest zbyt skomplikowana, może klasa ma za dużo odpowiedzialności itp.
W Twoim przykładzie na pewno nie użyłbym nazwy Object2
. Może adekwatne byłoby np. PhysicalObject
?