[c++] akcesory a publiczne zmienne skladowe

0

Jestem początkującym programistą więc po pierwsze prosiłbym o jak najprostszą odpowiedź. A konkretnie chodzi mi o użycie akcesorów w klasach. Programowania uczę się z podręcznika w którym jest napisane ze dobrym nawykiem jest używanie własnie akcesorów do zmiany wartości lub jej odczytania ze zmiennych składowych prywatnych niż używanie zmiennych publicznych, lecz nie jest wyjaśnione dlaczego. Zastanawia mnie dlaczego lepiej używać pośredniego akcesora niż od razu odwoływać się np do składowej publicznej w ten sposób: car.okno=50;. Byłbym wdzięczny gdyby ktos również zamieścił jakiś krótki program przedstawiający zalety użycia akcesorów.

1

Programowania uczę się z podręcznika w którym jest napisane ze dobrym nawykiem jest używanie własnie akcesorów do zmiany wartości lub jej odczytania ze zmiennych składowych prywatnych niż używanie zmiennych publicznych, lecz nie jest wyjaśnione dlaczego.

Bo pola publiczne są niekoszerne. Z „dobrymi nawykami” jest tak, że należy je stosować z głową, a nie ślepo się trzymać za wszelką cenę. O tym twórcy „dobrych nawyków” często zapominają.
Do każdego «nigdy» jakie przeczytasz, dodawaj sobie w myślach „…z wyjątkiem, kiedy jednak”. a do każdego «zawsze» dodawaj „z wyjątkiem, kiedy jednak nie”.

wyobraźmy sobie na przykład jakąś prostą klasę, np. liczba zespolona:

class complex {
  public:
    float re;
    float im;
// ...
};

tworzenie akcesorów tutaj byłoby przerostem formy nad treścią.

akcesory sens mają, jeśli dopuszczamy możliwość (nawet tylko teoretyczną), żeby przy zapisie/odczycie mógł być wykonywany jakiś magiczny kod (odświeżenie, walidacja…). Ale jeśli chcemy podkreślić, jak w przykładzie wyżej, że podczas dostępu do pola nic dodatkowego się nie dzieje i dziać się nie będzie — lepsze jest pole publiczne.

0

Dzięki za szybką odpowiedź, ale i tak to zagadnienie sprawia mi wiele trudności. Nie chodzi mi o samo pisanie kodu z akcesorami, bo to mi nie sprawia żadnych problemów, lecz o zastosowanie. Nie widzę po prostu potrzeby używania pośrednich akcesorów jeżeli można pracować na bezpośrednich zmiennych składowych publicznych, a mimo to wielu programistów zaleca ich używanie, a nie rozumiem po co? Czy mogłby ktoś mi to wytłumaczyć nieco prościej? Czym się różni program napisany z akcesorami od programu korzystającego ze zmiennych publicznych? Co daje korzystanie z akcesorów i w jakich sytuacjach z nich korzystać?

1

Odwołanie się do składowej przez metodę ma kilka plusów, przede wszystkim:

  1. metoda robi ze składową tylko to co powinna
  2. masz większą kontrolę nad tym co się dzieje ze składową (np ograniczenie tylko do odczytu jej wartości)
  3. zwiększa "intuicyjność" kodu
0

No tym razem trochę zrozumiałem;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1