Spis treści
Nazwy w języku Java, w tym nazwy: zmiennych, metod, klas, i innych obiektów, muszą spełniać trzy następujące wymagania:
- Nazwa musi zaczynać się od litery, podkreślenia _ bądź znaku dolara $
- Kolejnymi znakami, poza tym wymienionymi w punkcie 1., mogą być także cyfry.
- Nazwy nie mogą być takie same, jak nazwy zastrzeżone w języku Java (np. class, public, void itd.).
Przykłady poprawnych nazw (przed nazwą zmiennych jest ich typ – zaraz sobie o nich opowiemy):
char jedenZnak; double poleKola; int liczba_pracownikow; double _pi; int $wynagrodzenieMiesieczne; double wynikWRozliczeniu360;
Przykłady niepoprawnych nazw:
// kazda z ponizszych nazw jest niepoprawna i spowoduje blad kompilacji double 314ToLiczbaPi; // nazwa nie moze zaczynac sie od liczby double promien kola; // spacja w nazwie jest niedozwolona int liczba#pracownikow; // znak # nie może wystapic w nazwie int public; // public to slowo kluczowe w jezyku Java
Spójrzmy na program z powyższymi, błędnymi nazwami zmiennych:
public class NiepoprawneNazwyZmiennych { public static void main(String[] args) { double 314ToLiczbaPi; double promien kola; int liczba#pracownikow; int public; } }
Próba kompilacji powyższego programu zakończy się wypisaniem przez kompilator wielu błędów:
Poza wymienionymi wcześniej regułami, trzeba jeszcze zwrócić uwagę na dwie rzeczy:
- nazwy mogą mieć dowolną długość,
- małe i wielkie litery są rozróżniane, więc zmienne pi oraz PI to dwie różne nazwy.
Przykład zmiennej o długiej nazwie:
// dluga, opisowa nazwa zmiennej double wynikowyObwodKolaKtoryStanowiWartosc2PiR;
Poniżej zdefiniowane zostały dwie zmienne o podobnej nazwie, jednak dla kompilatora są to dwie zupełnie różne od siebie zmienne, ponieważ w ich nazwach zostały użyte litery różnej wielkości:
// dwie rozne zmienne! wielkosc liter jest rozrozniana double pi = 3.14; double PI = 3.14;
Jeżeli spróbowalibyśmy użyć zmiennej popełniając błąd w wielkości znaków, to kompilator zaprotestuje informując nas, że nie wie czym jest dany identyfikator, który napotkał w kodzie:
public class NieznanaNazwaZmiennej { public static void main(String[] args) { int promienKola = 8; // blad! zmienna PROMIENKOLA nie istnieje! System.out.println("Promien kola wynosi: " + PROMIENKOLA); } }
Kompilator, dzięki naszej definicji w trzeciej linii, wie, czym jest promienKola – jest to zmienna typu całkowitego. Kompilator, nie wiedząc jednakże, czym jest PROMIENKOLA, przerwie kompilację i wypisze na ekran:
Gdybyśmy zamiast PROMIENKOLA użyli nazwy promienKola, program skompilowałby się bez problemu.
Nadawanie nazw¶
Nazwy w kodach źródłowych niosą bardzo dużo informacji, o ile są one odpowiednio dobrane do obiektów, które opisują. Spójrz na program liczący pole i obwód koła ze zmienionymi nazwami:
public class MojProgram { public static void main(String[] args) { int a = 8; double b = 3.14; double x = b * a * a; double y = 2 * b * a; System.out.println("Pole kola wynosi: " + x); System.out.println("Obwod kola wynosi: " + y); } }
Patrząc na nazwy zmiennych, nie jesteśmy w stanie odpowiedzieć na pytania:
- Do czego służą te zmienne?
- Jakie wartości będą przechowywać?
- Co jest obliczane w liniach, w których definiujemy zmienne x oraz y?
Powyższy przykład jest trywialny, ale jest to faktyczny problem podczas programowania. Nazywanie obiektów nie jest proste, a wymyślenie dobrej nazwy nierzadko sprawia programistom problemy – czasem nawet wtedy, gdy zapytają kogoś o pomoc w jej wymyśleniu.
Przy nazywaniu zmiennych i innych obiektów należy:
- Używać dobrze dobranych, opisowych nazw, tak, aby zwiększały one czytelność kodu. Zawsze warto zastanowić się nad nazwą.
- Stosować jedną z dwóch konwencji w nazwach, które składają się z więcej niż jednego słowa (w Javie stosujemy Camel Case):
- Camel Case – wielka litera powinna rozpoczynać każde słowo w nazwie, poczynając od drugiego słowa, np. poleKola bądź glownyTelefonKontaktowy.
- lub
- rozdzielanie słów znakiem podkreślenia ( _ ), np. pole_kola bądź glowny_telefon_kontaktowy.