Pytania otagowane jako solid

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


5
Czy przydaje się mini-refaktoryzacja kodu w nadziei na poprawę jakości, czy jest to po prostu „przenoszenie kodu” bez większych korzyści?
Przykład Natknąłem się na monolityczny kod, który robi „wszystko” w jednym miejscu - ładuje dane z bazy danych, pokazuje znaczniki HTML, działa jak router / kontroler / akcja. Zacząłem stosować SRP przenoszący kod bazy danych do własnego pliku, zapewniając lepsze nazewnictwo rzeczy i wszystko wyglądało dobrze, ale potem zacząłem mieć …

1
Zasada otwartego zamknięcia (OCP) a zasada inwersji zależności (DIP)
Próbowałem zrozumieć różnicę między otwartą zasadą zamkniętą (OCP) a zasadą odwrócenia zależności (DIP). Na podstawie badań, które przeprowadziłem do tej pory w Internecie, doszedłem do wniosku, że „DIP jest jedną z opcji, dzięki której możemy osiągnąć OCP”. Mam rację? Czy możesz podać mi przykład, który nie podąża za DIP, ale …

5
Czy przeciążanie jest przykładem zasady otwartej / zamkniętej?
Wikipedia mówi „jednostki oprogramowania (klasy, moduły, funkcje itp.) powinny być otwarte na rozszerzenie, ale zamknięte na modyfikację” Słowo funkcje złapany oczy, a ja teraz zastanawiam się, czy możemy założyć, że tworzenie przeciążenie dla metody można uznać za przykład otwarty / zamknięty zasady czy nie? Pozwól mi wyjaśnić przykład. Weź pod …

4
Jak określić warunek wstępny (LSP) w interfejsie w języku C #?
Powiedzmy, że mamy następujący interfejs - interface IDatabase { string ConnectionString{get;set;} void ExecuteNoQuery(string sql); void ExecuteNoQuery(string[] sql); //Various other methods all requiring ConnectionString to be set } Warunkiem jest ustawienie / zainicjowanie ConnectionString przed uruchomieniem dowolnej metody. Ten warunek można w pewnym stopniu osiągnąć, przekazując połączenieString za pośrednictwem konstruktora, jeśli …

9
Metody SOLID vs. statyczne
Oto często spotykany problem: Niech będzie projekt sklepu internetowego, który ma klasę produktu. Chcę dodać funkcję, która pozwala użytkownikom publikować recenzje w produkcie. Mam więc klasę Review, która odwołuje się do produktu. Teraz potrzebuję metody, która wyświetla wszystkie recenzje produktu. Istnieją dwie możliwości: (ZA) public class Product { ... public …

4
Jak zmienia się myślenie o wzorcach projektowych i praktykach OOP w dynamicznych i słabo typowanych językach?
Jest już dość pomocne pytanie w tym zakresie („ Wzory projektowe inne niż OOP? ”), Ale jestem bardziej ciekawy przejściowego punktu widzenia dla kogoś, kto dopiero zaczyna pracę z dynamicznymi i słabo typowanymi językami. To znaczy: załóżmy, że programuję w C ++, C # lub Javie od wielu lat i …

3
Czy zasada segregacji interfejsów ma zastosowanie do konkretnych metod?
Ponieważ zasada segregacji interfejsów sugeruje, że żaden klient nie powinien być zmuszany do polegania na metodach, których nie używa, więc klient nie powinien implementować pustej metody dla swoich metod interfejsu, w przeciwnym razie ta metoda interfejsu powinna zostać umieszczona w innym interfejsie. A co z konkretnymi metodami? Czy powinienem oddzielić …

2
Kiedy postępuję zgodnie z SRP, jak powinienem postępować z zatwierdzaniem i zapisywaniem jednostek?
Czytam ostatnio Clean Code i różne artykuły online o SOLID, a im więcej o tym czytam, tym bardziej czuję, że nic nie wiem. Załóżmy, że buduję aplikację internetową przy użyciu ASP.NET MVC 3. Powiedzmy, że mam UsersControllertaką Createakcję: public class UsersController : Controller { public ActionResult Create(CreateUserViewModel viewModel) { } …

3
Czy wykrywalność dla programistów stanowi problem przy stosowaniu zasad SOLID?
Zajmuję się aplikacjami biznesowymi, w których wszyscy inni programiści są przyzwyczajeni do robienia podstawowych aplikacji CRUD lub koncentrują się wyłącznie na tworzeniu ładnych / funkcjonalnych interfejsów. „W sposób, w jaki to robimy, pracownik miałby wszystko, co mógłbyś zrobić z pracownikiem”. I to była prawda. Ta jedna „klasa” zawierała tysiące linii …
10 solid  crud 

5
Czy pogwałcenie zasady otwartego i zamkniętego aktualizowania stałej reprezentującej rzeczywistą wartość?
Mam klasę obliczającą roczny dochód netto pracowników. Ma stałą reprezentującą procent podatku. Ale pewnego dnia stawka podatku się zmieniła, więc muszę naprawić kod. Czy czynność ustalenia tej stałej wskazuje na naruszenie zasady otwartego-zamkniętego , ponieważ postuluje, że klasa powinna być zamknięta na modyfikacje?


2
Zasada segregacji interfejsów: Co zrobić, jeśli interfejsy w znacznym stopniu się pokrywają?
Z Agile Software Development, zasad, wzorców i praktyk: Pearson New International Edition : Czasami metody przywoływane przez różne grupy klientów nakładają się. Jeśli nakładanie się jest niewielkie, interfejsy dla grup powinny pozostać osobne. Wspólne funkcje powinny być deklarowane we wszystkich nakładających się interfejsach. Klasa serwera odziedziczy wspólne funkcje z każdego …

2
Czy istnieje zasada interfejsu „pytaj tylko o to, czego potrzebujesz”?
Zacząłem używać zasady projektowania i korzystania z interfejsów, która mówi w zasadzie: „proś tylko o to, czego potrzebujesz”. Na przykład, jeśli mam kilka typów, które można usunąć, utworzę Deletableinterfejs: interface Deletable { void delete(); } Następnie mogę napisać ogólną klasę: class Deleter<T extends Deletable> { void delete(T t) { t.delete(); …

6
Jaka jest różnica między „wynajęciem” a uczciwym „prawie” w przypadku ostatecznych wywiadów na miejscu? [Zamknięte]
Zamknięte. To pytanie jest nie na temat . Obecnie nie przyjmuje odpowiedzi. Chcesz poprawić to pytanie? Zaktualizuj pytanie, aby było tematem dotyczącym wymiany stosów inżynierii oprogramowania. Zamknięte 6 lat temu . Niedawno miałem wywiady na miejscu z Google i Amazonem i otrzymałem uprzejme listy odrzucające, informujące mnie, że jestem blisko, …
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.