Pytania otagowane jako solid

Mnemoniki dla zestawu zasad projektowania: pojedyncza odpowiedzialność, otwarte-zamknięte, podstawienie Liskowa, segregacja interfejsu, inwersja zależności


8
Jaka jest prawdziwa odpowiedzialność klasy?
Wciąż zastanawiam się, czy uzasadnione jest używanie czasowników opartych na rzeczownikach w OOP. Natknąłem się na ten genialny artykuł , choć nadal nie zgadzam się z jego racją. Aby wyjaśnić problem bardziej szczegółowo, artykuł stwierdza, że ​​nie powinno być na przykład FileWriterklasy, ale ponieważ pisanie jest akcją , powinna być …


11
Upewnij się, że każda klasa ma tylko jedną odpowiedzialność, dlaczego?
Zgodnie z dokumentacją Microsoft, artykułem Wikipedia SOLID lub większością architektów IT musimy upewnić się, że każda klasa ma tylko jedną odpowiedzialność. Chciałbym wiedzieć, dlaczego, ponieważ jeśli wszyscy wydają się zgadzać z tą zasadą, nikt nie wydaje się zgadzać co do przyczyn tej reguły. Niektórzy wskazują na lepszą konserwację, inni twierdzą, …


5
Gdzie należy umieścić stałe i dlaczego?
W naszych przeważnie dużych aplikacjach zwykle mamy tylko kilka lokalizacji dla „stałych”: Jedna klasa dla graficznego interfejsu użytkownika i elementów wewnętrznych (tytuły stron tabulatora, tytuły pól grupy, współczynniki obliczeniowe, wyliczenia) Jedna klasa dla tabel i kolumn bazy danych (ta część jest generowana kodem) oraz czytelne nazwy dla nich (przypisane ręcznie) …

6
Dodatkowa linia w bloku vs dodatkowy parametr w Clean Code
Kontekst W Clean Code , strona 35, to mówi Oznacza to, że bloki w instrukcjach if, instrukcjach else, instrukcjach while i tak dalej powinny mieć długość jednego wiersza. Prawdopodobnie ta linia powinna być wywołaniem funkcji. To nie tylko sprawia, że ​​funkcja zamykająca jest mała, ale także dodaje wartość dokumentalną, ponieważ …
33 clean-code  solid 

9
Projektowanie klasy tak, aby przyjmowała całe klasy jako parametry, a nie poszczególne właściwości
Załóżmy na przykład, że masz aplikację o powszechnie udostępnianej klasie o nazwie User. Ta klasa ujawnia wszystkie informacje o użytkowniku, jego identyfikatorze, nazwie, poziomach dostępu do każdego modułu, strefie czasowej itp. Dane użytkownika są oczywiście szeroko przywoływane w całym systemie, ale z jakiegokolwiek powodu system jest skonfigurowany tak, aby zamiast …
30 java  c#  design  solid 




12
SOLID vs. Unikanie przedwczesnej abstrakcji
Rozumiem, co SOLID ma osiągnąć i używać go regularnie w sytuacjach, w których modułowość jest ważna, a jej cele są wyraźnie przydatne. Jednak dwie rzeczy uniemożliwiają mi konsekwentne stosowanie go w mojej bazie kodu: Chcę uniknąć przedwczesnej abstrakcji. Z mojego doświadczenia wynika, że ​​rysowanie linii abstrakcji bez konkretnych przypadków użycia …

8
Czy istnieją warianty OOP, w których niektóre lub wszystkie zasady SOLID są przeciwne do czyszczenia kodu?
Niedawno miałem rozmowę z moim przyjacielem na temat OOP w tworzeniu gier wideo. Wyjaśniałem architekturę jednej z moich gier, która, ku zaskoczeniu mojego przyjaciela, zawierała wiele małych klas i kilka warstw abstrakcji. Argumentowałem, że był to wynik mojego skupienia się na nadaniu wszystkim Jednej Odpowiedzialności, a także na poluzowaniu sprzężenia …

11
Wybierz wysiłek związany z projektowaniem kodu lub lenistwo w świecie Banku
Przez dwa lata pracowałem w wielkim banku inwestycyjnym. Zrobiłem kilka projektów technicznych z myślą o stworzeniu kodu najbardziej zoptymalizowanego, z poszanowaniem dostosowanych dobrych wzorców projektowych, zasady SOLID, prawa demeter i unikając wszelkiego rodzaju duplikatów kodów ... Kiedy dostawa w produkcji => zero błędów, wszystko stało się zgodnie z oczekiwaniami. Ale …

5
Czy przypadki szczególne z awariami naruszają zasadę substytucji Liskowa?
Załóżmy, że mam interfejs FooInterfacez następującą sygnaturą: interface FooInterface { public function doSomething(SomethingInterface something); } I konkretna klasa, ConcreteFooktóra implementuje ten interfejs: class ConcreteFoo implements FooInterface { public function doSomething(SomethingInterface something) { } } Chciałbym ConcreteFoo::doSomething()zrobić coś wyjątkowego, jeśli przejdzie on przez specjalny typ SomethingInterfaceobiektu (powiedzmy, że się nazywa SpecialSomething). …

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.