Rozdział 3 - Zmienne - Reguły nazw w języku Java

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.).
Słowa Kluczowe to zastrzeżone słowa, które mają specjalne znaczenie w językach programowania – nie można używać ich jako nazw obiektów. Jeżeli spróbujemy, to kompilacja zakończy się porażką, a kompilator poinformuje nas o zaistniałym błędzie.

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:

Nazwa pliku: NiepoprawneNazwyZmiennych.java
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:

NiepoprawneNazwyZmiennych.java:3: error: not a statement double 314ToLiczbaPi; ^ NiepoprawneNazwyZmiennych.java:3: error: ';' expected double 314ToLiczbaPi; ^ NiepoprawneNazwyZmiennych.java:3: error: not a statement double 314ToLiczbaPi; ^ NiepoprawneNazwyZmiennych.java:4: error: ';' expected double promien kola; ^ NiepoprawneNazwyZmiennych.java:4: error: not a statement double promien kola; ^ NiepoprawneNazwyZmiennych.java:5: error: illegal character: '#' int liczba#pracownikow; ^ NiepoprawneNazwyZmiennych.java:5: error: not a statement int liczba#pracownikow; ^ NiepoprawneNazwyZmiennych.java:6: error: not a statement int public; ^ NiepoprawneNazwyZmiennych.java:6: error: ';' expected int public; ^ NiepoprawneNazwyZmiennych.java:6: error: illegal start of expression int public; ^ NiepoprawneNazwyZmiennych.java:6: error: illegal start of type int public; ^ NiepoprawneNazwyZmiennych.java:8: error: class, interface, or enum expected } ^ 12 errors

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:

Nazwa pliku: NieznanaNazwaZmiennej.java
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:

NieznanaNazwaZmiennej.java:6: error: cannot find symbol System.out.println("Promien kola wynosi: " + PROMIENKOLA); ^ symbol: variable PROMIENKOLA location: class NieznanaNazwaZmiennej 1 error

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.
Warto nadawać naszym zmiennym (i innym obiektom) opisowe nazwy. Zwiększa to czytelność naszego kodu. Pamiętaj – zawsze warto zastanowić się nad nazwą.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Nie musisz podawać swojego imienia, e-mailu, ani strony www, aby opublikować komentarz. Komentarze muszą zostać zatwierdzone, aby były widoczne na stronie.