Pytania otagowane jako class-design

Ogólne wytyczne dotyczące projektowania klas z najbardziej znanymi praktykami branżowymi.

16
Kiedy stosuje się zasadę pojedynczej odpowiedzialności, co stanowi „odpowiedzialność?”
Wydaje się całkiem jasne, że „zasada pojedynczej odpowiedzialności” nie oznacza „tylko jednej rzeczy”. Po to są metody. public Interface CustomerCRUD { public void Create(Customer customer); public Customer Read(int CustomerID); public void Update(Customer customer); public void Delete(int CustomerID); } Bob Martin mówi, że „klasy powinny mieć tylko jeden powód do zmiany”. …

9
Czy istnieje jakiś „prawdziwy” powód, dla którego nienawidzono wielokrotnego dziedziczenia?
Zawsze podobał mi się pomysł obsługiwania wielokrotnego dziedziczenia w jednym języku. Najczęściej jednak jest celowo zapominany, a domniemanym „zamiennikiem” są interfejsy. Interfejsy po prostu nie obejmują tego samego gruntu, co wielokrotne dziedziczenie, a to ograniczenie może czasami prowadzić do większej liczby kodów wzorcowych. Jedynym podstawowym powodem, dla którego kiedykolwiek to …

13
Jak ostrzec innych programistów przed implementacją klasy
Piszę zajęcia, które „muszą być używane w określony sposób” (chyba wszystkie klasy muszą…). Na przykład, utworzyć fooManagerklasę, która wymaga połączenia do, powiedzmy Initialize(string,string). I, idąc dalej za przykładem, klasa byłaby bezużyteczna, gdybyśmy nie słuchali jej ThisHappenedakcji. Chodzi mi o to, że klasa, którą piszę, wymaga wywołań metod. Ale skompiluje się …

12
Czy przechodzenie instancji przez kilka warstw jest złą praktyką?
Podczas projektowania programu często dochodzę do momentu, w którym muszę przekazywać instancje obiektów przez kilka klas. Na przykład, jeśli mam kontroler, który ładuje plik audio, a następnie przekazuje go do odtwarzacza, a odtwarzacz przekazuje go do odtwarzacza Runner, który przekazuje go gdzie indziej itp. Wygląda to trochę źle, ale nie …


6
Jaka byłaby wada definiowania klasy jako podklasy samej listy?
W moim ostatnim projekcie zdefiniowałem klasę z następującym nagłówkiem: public class Node extends ArrayList<Node> { ... } Jednak po rozmowie z moim profesorem CS stwierdził, że klasa będzie zarówno „okropna dla pamięci”, jak i „zła praktyka”. Nie uważam, że pierwsze jest szczególnie prawdziwe, a drugie subiektywne. Moje uzasadnienie tego użycia …

6
Wolisz członków klasy lub przekazywanie argumentów między metodami wewnętrznymi?
Załóżmy, że w prywatnej części klasy istnieje wartość, która jest wykorzystywana przez wiele prywatnych metod. Czy ludzie wolą zdefiniować tę zmienną jako zmienną składową klasy lub przekazać ją jako argument każdej z metod - i dlaczego? Z jednej strony widziałem argument, że należy zredukować stan (tj. Zmienne składowe) w klasie, …


4
Dlaczego wolisz niestatyczne klasy wewnętrzne niż statyczne?
To pytanie dotyczy tego, czy uczynić zagnieżdżoną klasę w Javie klasą zagnieżdżoną statycznie czy wewnętrznie zagnieżdżoną. Szukałem tutaj i nad przepełnieniem stosu, ale tak naprawdę nie mogłem znaleźć żadnych pytań dotyczących konsekwencji projektowych tej decyzji. Znalezione przeze mnie pytania dotyczą różnicy między statycznymi i wewnętrznymi klasami zagnieżdżonymi, co jest dla …


5
Kiedy i dlaczego używać klas zagnieżdżonych?
Korzystając z programowania obiektowego mamy moc tworzenia klasy wewnątrz klasy (klasa zagnieżdżona), ale nigdy nie tworzyłem zagnieżdżonej klasy w ciągu 4 lat doświadczenia w programowaniu. Do czego służą klasy zagnieżdżone? Wiem, że klasa może być oznaczona jako prywatna, jeśli jest zagnieżdżona i że możemy uzyskać dostęp do wszystkich prywatnych członków …

3
Opcjonalne parametry lub przeciążone konstruktory
Wdrażam a DelegateCommand, kiedy miałem zaimplementować konstruktora (-ów), zaproponowałem dwie następujące opcje projektu: 1: Posiadanie wielu przeciążonych konstruktorów public DelegateCommand(Action<T> execute) : this(execute, null) { } public DelegateCommand(Action<T> execute, Func<T, bool> canExecute) { this.execute = execute; this.canExecute = canExecute; } 2: Posiadanie tylko jednego konstruktora z opcjonalnym parametrem public DelegateCommand(Action<T> …

10
Czy możemy żyć bez konstruktorów?
Powiedzmy, że z jakiegoś powodu wszystkie obiekty są tworzone w ten sposób $ obj = CLASS :: getInstance (). Następnie wstrzykujemy zależności za pomocą ustawiaczy i przeprowadzamy inicjalizację początkową za pomocą $ obj-> initInstance (); Czy są jakieś realne problemy lub sytuacje, których nie można rozwiązać, jeśli w ogóle nie …


2
Czy dobrym pomysłem jest zapewnienie różnych sygnatur funkcji, które robią to samo?
Oto klasa C ++, która składa się z trzech wartości. class Foo{ //Constructor Foo(std::string, int, char); private: std::string foo; char bar; int baz; }; Wszystkie typy parametrów są różne. Mógłbym przeciążyć konstruktora, aby kolejność nie miała znaczenia. class Foo{ //Constructors Foo(std::string, char, int); Foo(std::string, int, char); Foo(char, int, std::string); Foo(char, …

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.