Cześć,
przeglądając archiwa youtubowe związane z programowaniem w pewnym momencie dotarłem do ściany, w której pisząc kod patrzysz potem na niego i w sumie widzisz, że nie jest źle, ale to, czego się nasłuchałeś sugeruje Ci z tyłu głowy, że za jakiś czas, to jakie decyzje podjąłeś "kopnie Cię" przy dodawaniu nowych rzeczy, bądź poprawianiu jakiegoś błędu.
Z jednej strony słyszysz, aby "chronić niezmienniki", "najlepiej wszystkie pola do konstruktora", nie robić klas, które muszą mieć jakiś "postconstruktor", zastanawiać się, czy Ty na pewno piszesz klasę, czy strukturę, unikać funkcji void itd.* Niby człowiek wie, że konferencje są po to, żeby coś przedstawić i zaproponować tak bardziej radykalnie, niż ustawa przewiduje, ale głupio by było słuchać tyle godzin i zero refleksji, tak przejść obojętnie.
Przejdę do setna sprawy - otóż zacząłem używać sonara przy pracy z projektem. Napisałem klasę, która ma pola publiczne, a jedyną zmienną prywatną jest połączenie do bazy danych.
Można by rzecz, że klasa robi robotę - z jednej strony, gdy potrzebuję, to komplet pól inicjalizuję w konstruktorze, gdzie faktycznie wtedy potrzeba połączenia do bazy danych klasa sobie ładnie kompletuje brakujące dane, z drugiej strony, dzięki temu, że są publiczne, w innej klasie tworzę sobie vector takich obiektów uzupełniając zawartość obiektu "w locie", porozkładane na kilka małych funkcji, przez zwykły operator=
do każdej zmiennej.
No i przy takim wynalazku jest zgłaszany błąd Classes should not contain both public and private data members.
Stąd też pojawił się dylemat w mojej głowie - czy takie pomieszanie klasy ze strukturą jest złe? Czy może po prostu napisać gettery i settery sztuka dla sztuki? A może zignorować to, bo bez kontekstu, który tutaj starałem się możliwie nakreślić jak najbardziej, że nie ma sensu się przejmować i trzeba iść dalej?
źródła:
Dlaczego wątpliwości są w wytwarzaniu kodu w C++, a w źródłach w większości to konferencje Javy? - Pewnie dlatego, że jednak większość "biznesu" tam siedzi, a poza tym chyba kwestia prelegentów i tego jak prezentują.