Mnemoniki dla zestawu zasad projektowania: pojedyncza odpowiedzialność, otwarte-zamknięte, podstawienie Liskowa, segregacja interfejsu, inwersja zależności
Właśnie projektuję moją aplikację i nie jestem pewien, czy poprawnie rozumiem SOLID i OOP. Klasy powinny robić jedną rzecz i robić to dobrze, ale z drugiej strony powinny reprezentować rzeczywiste obiekty, z którymi pracujemy. W moim przypadku przeprowadzam ekstrakcję funkcji w zbiorze danych, a następnie analizuję uczenie maszynowe. Zakładam, że …
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ć …
Dzisiaj właśnie widziałem ten artykuł, który opisał znaczenie zasady SOLID w rozwoju F # F # i zasady projektowania - SOLID Odnosząc się do ostatniego - „zasady inwersji zależności”, autor powiedział: Z funkcjonalnego punktu widzenia te pojemniki i koncepcje wtrysku można rozwiązać za pomocą prostej funkcji wyższego rzędu lub wzorca …
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ą, …
Uważam, że zasady SOLID są bardzo przydatne, gdy myślimy o projektowaniu obiektowym. Czy istnieje podobny / równoważny zestaw zasad niezależnych od języka dostosowanych do programowania funkcjonalnego?
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) …
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ż …
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 …
Prawdopodobnie uważałbym za zapach kodu, a nawet anty-wzorzec, aby mieć klasę, która implementuje 23 interfejsy. Jeśli to rzeczywiście jest anty-wzór, jak byś to nazwał? A może po prostu nie przestrzega zasady pojedynczej odpowiedzialności?
Śledziłem to wysoko głosowane pytanie dotyczące możliwego naruszenia zasady substytucji Liskowa. Wiem, czym jest zasada podstawienia Liskowa, ale wciąż nie jest jasne, co może pójść źle, gdybym jako programista nie myślał o tej zasadzie podczas pisania kodu zorientowanego obiektowo.
SOLID obejmuje zasadę podstawienia Liskowa, która zakłada, że „obiekty w programie powinny być zastępowalne instancjami ich podtypów bez zmiany poprawności tego programu”. Ponieważ klasy statyczne z metodami statycznymi (trochę jak Mathklasa) w ogóle nie mają instancji, czy mój system jest SOLIDNY, jeśli mam klasy statyczne z metodami statycznymi?
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 …
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 …
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 …
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). …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.