Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Zasada jednej odpowiedzialności
szczrzcz
post
Post #1





Grupa: Zarejestrowani
Postów: 153
Pomógł: 0
Dołączył: 20.04.2017
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


"Nigdy nie powinno być więcej niż jednego powodu do modyfikacji klasy."

Nie rozumiem tego krótkiego zdania.

"...POWÓD do modyfikacji klasy. "

"Jaki masz POWÓD do modyfikacji klasy?"

Co za cholerny POWÓD? Mogę znaleźć milion powodów do modyfikacji poniższej klasy, która jest wzorem klasy gdzie "jest zachowana zasada jednej odpowiedzialności":

  1. //pseudokod
  2. class Pocisk{
  3. public Pocisk()
  4. {
  5. _trafnoscPocisku = 0.5;
  6. _pociskZniszczylCel = false;
  7. _pociskaZostalZuzyty = false;
  8. }
  9.  
  10. public void Zniszcz()
  11. {
  12. if (!SprawdzCzyPociskZostalZuzyty())
  13. {
  14. _pociskaZostalZuzyty = true;
  15.  
  16. if (SprawdzCzyPociskZniszczylCel())
  17. _pociskZniszczylCel = true;
  18. else
  19. _pociskZniszczylCel = false;
  20. }
  21. else
  22. {
  23. throw new PociskZostalJuzZuzyty();
  24. }
  25. }
  26.  
  27. private bool SprawdzCzyPociskZostalZuzyty()
  28. {
  29. return _pociskaZostalZuzyty == false;
  30. }
  31.  
  32. private bool SprawdzCzyPociskZniszczylCel()
  33. {
  34. var rand = new Random();
  35. return rand.NextDouble() < _trafnoscPocisku;
  36. }
  37. }


Mogę chcieć dodać metodę: sprawdz_czy_pocisk_jest_czysty(), czysc(), i sto innych absurdalnych.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Ten "jeden powod" bierzesz zbyt doslownie.

Metody, ktore wymieniles to nadal jeden powod. Tym powodem jest twoj pocisk.
Co innego, jakbys chcial dopisac metode: dostarczycPizzeDlaZolnierzy()
Wowczas masz dwa powody do modyfikacji klasy: pocisk i zolnierze
Go to the top of the page
+Quote Post
szczrzcz
post
Post #3





Grupa: Zarejestrowani
Postów: 153
Pomógł: 0
Dołączył: 20.04.2017
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


dzięki, chyba bardziej nie zrozumiałem słowa "modyfikacja" klasy.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 06:14