Wątek przeniesiony 2015-03-14 20:20 z C# i .NET przez somekind.

Zrozumieć SOLID

0

Długo się zastanawiałem nad założeniem tego tematu, ale po prostu chciałbym zrozumieć relację między klasami, ponieważ na uczelni nie uczą nas / nie wychylamy się po za GUI + 1 klasę w której jest zawarta cała funkcjonalność. Więc ostatnio zacząłem czytać "Agile programowanie zwinne - zasady, wzorce i praktyki zwinnego wytwarzania oprogramowania w c#". Jak wiadomo człowiek uczy się na własnych błędach, ale nie zauważy ich jeśli ktoś mu ich nie wytknie więc pytanie do was, co w tym kodzie łamie zasady SOLID?

http://4programmers.net/Pastebin/3885

2

Masz jedną klasę, która służy do zapisu i odczytu - to chociażby jest złamanie SRP. Jeszcze większym naruszeniem tej zasady jest klasa OneVariables (swoją drogą, nie rozumiem tej nazwy), patrząc po ilości ifologii przy zapisie, powinny to być ze 4 klasy. A najgorsze chyba jest to, że za odczyt danych i aktualizowanie kontrolki GUI odpowiada jedna metoda.
W klasie bazowej trzymasz dane potrzebne klasom pochodnym (i to tylko niektórym), więc dodanie nowej klasy dziedziczącej będzie wymagało modyfikacji bazowej - łamiesz OCP i LSP.

A oprócz łamania SOLID, to:

  1. Kopiujesz masę kodu dotyczącą otwierania i używania strumieni.
  2. Zamiast przekazać dane do metody w argumentach, operujesz na polach klasy.
  3. Konkatenujesz stringi w nieskończoność zamiast użyć StringBuilder.
0

Za obsługę GUI odpowiada:

http://4programmers.net/Pastebin/3887

W takim razie jak miałbym ten kod pisać od nowa, musiał bym stworzyć dwie oddzielne klasy abstrakcyjne, jedna by odpowiadała za zapis do pliku druga za odczyt. Kolejny aspekt to klasy PersonData i VariableData, jeśli chciałbym dodać kolejną klasę w przyszłości np. PhoneBookData to wraz musiał bym modyfikować klasy abstrakcyjne, jak to załatwić?

0

Czy ja dobrze zrozumiałem, że według zasad zwinnego programowania klasa powinna odpowiadać, maksymalnie za jeden typ czynności (np. Wysyłanie danych do bazy danych ) i może odpowiadać za maksymalnie jedną inną klasę?

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0