Press "Enter" to skip to content

14.1: Zmienne

Cele lekcji

Po zakończeniu tej lekcji…

  • Będziesz potrafić tworzyć/deklarować zmienne.
  • Będziesz wiedzieć, gdzie zmienne są widoczne.

 

Zanim dodamy logikę gry do naszego programu przyjrzymy się kilku elementom zawartym w kodzie.

Na początek zajmiemy się zmiennymi.

Wcześniej już tworzyliśmy zmienne, ale nadal istnieje kilka ważnych zagadnień dotyczących ich tworzenia i używania.

Poniżej zamieszczam kod do tej lekcji. Klasa nie wykonuje żadnej ważnej operacji, ale umożliwi nam pokazanie, jak korzystać ze zmiennych.

namespace Workbench
{
    public class Variables
    {
        // Class-level variables
        public int classVariable1 = 3; // Visible to other classes
        private int classVariable2 = 7; // Only visible to this class
        private int classVariable3; // Declaring the variable, without setting a value
        public void Function1()
        {
            int functionVariable1;
            if(classVariable1 < 5)
            {
                functionVariable1 = 1;
                int innerVariable1;
            }
            if(classVariable1 >= 5)
            {
                functionVariable1 = 2;
                int innerVariable1;
            }
        }
        public void Fuction2()
        {
            int functionVariable1;
            if(classVariable2 < 5)
            {
                functionVariable1 = 3;
                int innerVariable1;
            }
            if(classVariable2 >= 5)
            {
                functionVariable1 = 4;
                int innerVariable1;
            }
        }
    }
}

 

Aby określić, gdzie widoczna jest zmienna, należy przyjrzeć się nawiasom klamrowym, między którymi została ona umieszczona podczas deklarowania. Ogólnie można powiedzieć, że zmienna jest widoczna w całym zakresie ujętym w nawiasach klamrowych.

 

Wiersze 6-8:

To zmienne na poziomie klasy, czyli mogą być używane w dowolnym miejscu w klasie.

Zmienne w wierszach 6-8 są zadeklarowane w nawiasach klamrowych dla klasy (wiersze 4-47), więc są one widoczne między wierszami 4-47 (cała klasa).

Podczas deklarowania zmiennych w wierszach 6-7 są one też przypisywane do wartości. Ta operacja nie zachodzi w przypadku wiersza 8. Więc, zmienna classVariable3 zawiera wartość domyślną, którą dla int jest 0.

Różne typy danych mają różne wartości domyślne, a jeśli zostanie utworzona zmienna, której typem danych jest jedna z naszych klas, ma ona wartość null (pusta/nic).

Zmiennej classVariable1 (wiersz 6) można również użyć poza ta klasą, ponieważ jest ona zadeklarowana jako publiczna, więc jeśli inna klasa utworzy obiekt klasy Zmienne (Variables), będzie mogła zmodyfikować wartość zmiennej classVariable1.

Zmienne classVariable2 i classVariable3 są prywatne, więc druga klasa nie będzie mogła bezpośrednio zmienić wartości tych zmiennych. Niemniej druga klasa może wywołać jedną z funkcji publicznych (Function1 lub Function2). Funkcje te znajdują się w klasie, więc mogą modyfikować zmienne prywatne na poziomie klasy (wiersze 16, 23, 35 i 42).

 

Wiersze 10-27:

Zmienna functionVariable1 w wierszu 12 jest zadeklarowana w nawiasach klamrowych dla Function1 (wiersze 11 i 27), więc jest widoczna wszędzie w ramach tej funkcji.

Zmienna innerVariable1 w wierszu 18 jest zadeklarowana w nawiasach klamrowych w wierszach 15 i 19, więc jest widoczna tylko między tymi wierszami. Dlatego więc możemy zadeklarować inną zmienna o tej samej nazwie w wierszu 25, w ramach innej, zupełnie oddzielonej pary nawiasów klamrowych.

Nie można zadeklarować kolejnej zmiennej functionVarable1 w wierszu 18, ponieważ istnieje już zmienna functionVariable1 widoczna na tym poziomie – zmienna zadeklarowana w wierszu 12.

 

Wiersze 29-46:

Możemy jednak zadeklarować drugą zmienną o nazwie functionVariable1 w wierszu 31, nawet pomimo tego, że ma ona taką samą nazwę jak zmienna w wierszu 12.

Można to zrobić, ponieważ zmienna functionVariable1 z wiersza 12. działa tylko w zakresie wierszy od 11 do 27.

 

Ogólne zasady deklarowania zmiennych

Zazwyczaj zmienne deklaruje się na najniższym możliwym poziomie.

Wszystkie zmienne można zadeklarować jako zmienne na poziomie klasy, a następnie zmienić je w dowolnej funkcji klasy, jednak utrudnia to namierzenie źródeł problemów, które mogą występować w przyszłości. Zmienną można zmienić w wielu miejscach, więc ciężko jest określić, w którym z nich dokonano zmiany.

Jeszcze jedną niezwykle ważną zasadą odnoszącą się do zmiennych jest ich nazewnictwo.

Programy mogą być wykorzystywane przez wiele lat i jeśli do ich kodu wróci się po pół roku czy po 6 latach, to zrozumienie go bez jednoznacznych i przejrzystych nazw zmiennych jest niezwykle trudne. Jeśli klasa, funkcja, właściwość czy zmienna ma sensowną nazwę, to znacznie łatwiej jest zrozumieć jej działanie.

 

Podsumowanie

Wiesz już, gdzie deklarować zmienne i gdzie są one widoczne.

    Leave a Reply

    Your email address will not be published. Required fields are marked *