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.