Interesuje mnie, czy wzór ActiveRecord, rozsławiony przez Ruby on Rails, zachęca lub zniechęca do korzystania z zasad projektowania SOLID . Na przykład wydaje mi się, że obiekty ActiveRecord zawierają zarówno logikę domeny, jak i logikę trwałości, co stanowi naruszenie zasady pojedynczej odpowiedzialności.
W starszym kodzie czasami widzę klasy, które są niczym innym jak opakowaniami danych. coś jak: class Bottle { int height; int diameter; Cap capType; getters/setters, maybe a constructor } Rozumiem OO, że klasy są strukturami danych i metodami operowania na nich. Wydaje się, że wyklucza to obiekty tego typu. Dla …
W większości języków OOP obiekty są ogólnie modyfikowalne z ograniczonym zestawem wyjątków (takich jak np. Krotki i ciągi w pythonie). W większości języków funkcjonalnych dane są niezmienne. Zarówno zmienne, jak i niezmienne obiekty wnoszą własną listę zalet i wad. Istnieją języki, które próbują łączyć oba pojęcia, takie jak np. Scala, …
Z czasem mogłem zrozumieć dwie części SOLID - „S” i „O”. „O” - nauczyłem się otwartej zasady zamkniętej za pomocą wzoru dziedziczenia i strategii. „S” - nauczyłem się zasady pojedynczej odpowiedzialności podczas uczenia się ORM (logika trwałości jest odbierana obiektom domeny). W podobny sposób, jakie są najlepsze regiony / zadania …
czy to zła praktyka, że repozytorium wywołań kontrolera zamiast usługi? wyjaśnić więcej: Rozumiem, że w dobrym projekcie kontrolery wywołują serwis i repozytorium użytkowania usługi. ale czasami w kontrolerze nie mam / potrzebuję żadnej logiki i po prostu muszę pobrać z db i przekazać go do przeglądania. i mogę to zrobić …
Według Kiedy prymitywna obsesja nie jest zapachem kodu? , Powinienem utworzyć obiekt ZipCode reprezentujący kod pocztowy zamiast obiektu String. Jednak z mojego doświadczenia wolę widzieć public class Address{ public String zipCode; } zamiast public class Address{ public ZipCode zipCode; } ponieważ myślę, że ten ostatni wymaga ode mnie przejścia do …
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ć …
Czy istnieje dokładna, ale prosta i zrozumiała definicja rozróżnienia między „przypadkiem użycia”, „historią użytkownika” i „scenariuszem użytkowania”? jest sporo wyjaśnień, ale w tej chwili nie widzę nikogo, kto wyjaśniłby różnice w jednym zdaniu lub dwóch ... (np. http://c2.com/cgi-bin/wiki?UserStoryAndUseCaseComparison bardzo długie i trudne do zdobycia, pełne dyskusji)
To pytanie jest nieco niezależne od języka, ale nie do końca, ponieważ programowanie obiektowe (OOP) różni się na przykład w Javie , która nie ma funkcji pierwszej klasy, niż w Pythonie . Innymi słowy, czuję się mniej winny z powodu tworzenia niepotrzebnych klas w języku takim jak Java, ale wydaje …
Jesteśmy w trakcie zmiany sposobu, w jaki nasza aplikacja AS3 komunikuje się z naszym zapleczem, i jesteśmy w trakcie wdrażania systemu REST, aby zastąpić nasz stary. Niestety deweloper, który rozpoczął pracę, jest teraz na długoterminowym zwolnieniu chorobowym i został mi przekazany. Pracowałem z tym przez mniej więcej tydzień i rozumiem …
Wykonując cykl Czerwony, Zielony i Refaktor, zawsze powinniśmy napisać minimalny kod, aby przejść test. W ten sposób nauczono mnie TDD i sposób, w jaki prawie wszystkie książki opisują ten proces. Ale co z rejestrowaniem? Szczerze mówiąc rzadko używałem logowania do aplikacji, chyba że działo się coś naprawdę skomplikowanego, jednak widziałem …
Znam składnię, reguły zastosowane do klasy abstrakcyjnej i chcę znać użycie klasy abstrakcyjnej Klasy abstrakcyjnej nie można utworzyć bezpośrednio, ale można ją rozszerzyć o inną klasę Jaka jest z tego korzyść? Czym różni się od interfejsu? Wiem, że jedna klasa może implementować wiele interfejsów, ale może rozszerzyć tylko jedną klasę …
Program CS mojej szkoły unika jakiejkolwiek wzmianki o programowaniu obiektowym, więc czytam sam, aby go uzupełnić - w szczególności Object Oriented Software Construction autorstwa Bertrand Meyer. Meyer wielokrotnie podkreśla, że klasy powinny ukrywać jak najwięcej informacji o ich implementacji, co ma sens. W szczególności wielokrotnie argumentuje, że atrybuty (tj. Statyczne, …
Nie rozumiem niektórych zapisów diagramów klas UML. Jestem pewien, że wiem, co znaczy Stowarzyszenie . Każda relacja między instancjami dwóch klas, w której instancja jednej klasy musi wiedzieć o instancji drugiej klasy, aby wykonać swoją pracę - jest relacją stowarzyszenia. Skojarzenie często oznacza, że klasa A ma odniesienie (pole) do …
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.