Konwencja nazewnicza + operacja na jednym obiekcie w pozostałych klasach

0

Hej,

Bez przedłużania. Jak nazywacie pola prywatne w klasach (w sensie np. _classNumber czy classNumber, bo ja jednak wolę tą drugą opcję), obydwie są często używane, a według mnie używając pierwszego sposobu kod zaczyna trochę dziwnie wyglądać przy wielu takich polach. Co jeśli chodzi o nazwy metod; tryb rozkazujący? (GetNumber czy jakoś inaczej; np. NumberGetter ja od czasu do czasu mam zamiar użyć innej nazwy niż ta pierwsza, chociaż tutaj ten przykład nazewnictwa jest raczej bez sensu).

PS.
Nie chcę zakładać nowego tematu, więc napiszę to tu. Pytanie ma raczej charakter "tak" lub "nie". Mam klasę Level i multum klas z niej korzystających. I tutaj pojawia się problem, wszystkie te klasy muszą korzystać z jednego obiektu klasy Level, aby nie było sprzeczności w programie oczywiście. Można pomyśleć: klasa statyczna lub singleton. Jak najbardziej fajne rozwiązanie, ale tylko wtedy i wyłącznie wtedy, gdy byłby jeden "poziom" w programie. Jak radzicie sobie z takim problemem? Na pewno zwykła klasa, i co teraz jakieś wielokrotne przekazywanie obiektu klasy Level, czy może jakaś metoda coś zwracająca, a może pokombinować coś z polami statycznymi? Nie wiem jak to ugryźć, a dodam, że raczej nic z dziedziczeniem nie wchodzi w grę. Jakieś pomysły.

Wielkie dzięki
pozdrawiam

2

_classNumber czy classNumber

W zasadzie w prywatnych polach nie powinno się stosować podkreślenia ale w wielu firmach stosuje się ten zapis i mnie osobiście on nie przeszkadza.

GetNumber czy jakoś inaczej; np. NumberGetter

Naturalnie w formie rozkazującej czyli GetNumber.

Można pomyśleć: klasa statyczna lub singleton. Jak najbardziej fajne rozwiązanie, ale tylko wtedy i wyłącznie wtedy, gdy byłby jeden "poziom" w programie. Jak radzicie sobie z takim problemem?

Instaluje się w projekcie coś co zowie się kontenerem IoC i tam rejestruje zwykłą klasę z czasem życia typu singleton. Obiekt takiej klasy wstrzykuje się później do konstruktora jako argument, np. za pomocą interfejsów lub bezpośrednio.

1

Sięgnij do źródła

https://docs.microsoft.com/en-us/dotnet/standard/design-guidelines/general-naming-conventions

X DO NOT use underscores, hyphens, or any other nonalphanumeric characters.

0

Napiszę jeszcze raz drugą część mojego pytania, tym razem trochę wyraźniej, aby bardziej zilustrować problem. Chodzi o to, że mam jakąś klasę, załóżmy że nazywa się Level. Ma ona jakieś publiczne i prywatne pola oraz kilka metod. Ale co najważniejsze przechowuje jakieś dane, np. położenie obiektów (trzyma je w tablicy lub w liście i operuje na nich). Mam też w mojej aplikacji kilka innych klas, które potrzebują, np. użyć jednej z metod w klasie Level, aby coś dodać do naszej planszy lub pobrać dane z naszej zaktualizowanej listy itd. W związku z czym wszystkie te klasy powinny operować na tym samym obiekcie klasy Level. Bo w innym wypadku jedna klasy coś zmienni na swoim obiekcie, a druga klasa już tej zmiany nie zauważy.

Ta sytuacja miała tylko przedstawić problem, że kilka lub kilkanaście klas mają korzystać z tego samego obiektu klasy (w tym przypadku Level). A jak wiadomo Level'i może być kilka, czyli musi się dać tworzyć instancje tej klasy.

Starałem się trochę bardziej zilustrować problem, albo i nawet zagadnienie lecz nie wiem czy się udało. Bez konkretnego kodu może być ciężko to przedstawić.

0

Aha, faktycznie nie napisałem z czym mam problem.
Problemem jest to jak najłatwiej "rozprowadzić" obiekt klasy Level po wszystkich pozostałych klasach, tak aby wszystkie korzystały z tego samego obiektu. Aktualnie rozwiązuję to, że mam jakąś główną klasę, z której "wydaję polecenia", tworzę w niej:

Level level = new Level();

i przekazuję z tej głównej klasy zmienną level do wszystkich klas po kolei, aczkolwiek nie podoba mi się ten pomysł, jest trochę sztuczny, gdyż muszę tworzyć dużo nadprogramowego kodu.

A jak nie mam takiej głównej klasy to dopiero problem.

2

Problemem jest to jak najłatwiej "rozprowadzić" obiekt klasy Level po wszystkich pozostałych klasach

Utwórz obiekt i przekazuj pozostałym obiektom przez konstruktory ich klas. Zrób to albo ręcznie albo przez IoC, z tymże nie jako singleton, bo tworzenie poziomu jako singleton, tak jak chcesz, jest co najmniej bardzo dziwne.

0

Ja się spotkałem z takim czymś tylko w dwóch przypadkach w języku C bo tam kiedyś każdy robił co chciał i w pythonie bo tam nie ma prywatnych i tak czasem się używa, żeby poinformować, że jest to prywatne.

Zwykle nie klasy preferuje się camel case.
A klasy normalnie z dużej.

W sumie to jeden but, ale jak ktoś w javie pisał to wie, że klasy z dużej i to ułatwia pracę, nie zgubisz się.

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