Jeśli miałbyś kolegę, który nie rozumiał korzyści płynących z separacji obaw lub nie rozumiał go wystarczająco, by konsekwentnie stosować się w codziennej pracy, jak byś im to wyjaśnił?
code-quality
object-oriented
Marcie
źródło
źródło
Odpowiedzi:
Wyobraź sobie, że masz program, który został wydany. Pojawia się klient i proponuje zapłacić za ulepszenie jednej z jego funkcji. Aby otrzymać pieniądze, musisz zmienić swój program, aby dodać nową funkcję. Niektóre rzeczy, które wpłyną na twoją marżę zysku to:
Rozdzielenie obaw pomaga uzyskać bardziej pozytywne odpowiedzi na te pytania.
źródło
Spójrz na szpital i pomyśl o wszystkich różnych rolach związanych z opieką nad pacjentem: pielęgniarki, lekarze, asystenci medyczni, technicy, pracownicy biurowi, kawiarnie itp.
Czy jest jakaś osoba, która wie, jak wszystkie te osoby wykonują swoją pracę? Nie, ponieważ byłoby to przytłaczające. Muszą rozdzielić różne obowiązki na odrębne role, a punkty kontaktowe między tymi rolami są bardzo konkretne.
źródło
Jeśli on / ona pracuje w biurze, weź to jako przykład, wyjaśnij rolę każdego sztabu w tym biurze i zapytaj go, co by się stało, gdyby te sztaby nie zostały podzielone zgodnie z ich pracą?
źródło
Spojrzałbym na to, jak nie zastosował SoC w swoim kodzie / projekcie i zamieniłem to w rzeczywisty przykład, z którym mógł się odnosić i co jest oczywiście niepożądane.
Na przykład, jeśli ma klasę, w której klient musi dostarczyć kilka informacji, które nie są istotne dla tych klientów, skorzystałbym z analogii piekarni, w której musisz przynieść własne ziarna i drożdże, jeśli chcesz kupić chleb.
źródło
Jednym z przykładów może być programista html, który może chcieć rozdzielić html, css i javascript na osobne pliki. W ten sposób możesz zmienić wygląd czegoś, mówiąc po prostu modyfikując css lub zachowanie czegoś poprzez zmianę pliku javascript ładowanego osobno. Jeśli masz responsywną lub adaptacyjną stronę, ten paradygmat działa dobrze, ponieważ możesz załadować różne css lub javascript w zależności od okienka użytkownika lub agenta użytkownika. Jednak jeśli zmodyfikujesz HTML lub szablon, istnieje prawdopodobieństwo, że albo css, albo javascript może się zepsuć. Te odrębne obawy mogą być również zależne.
Innym podejściem jest spakowanie całego javascript i HTML css w grupę komponentów lub modułów. Oznacza to, że możesz wprowadzać zmiany w jednym module i nie powinno to wpływać na inne komponenty lub moduły na stronie, które są obok niego powiązane, nie są powiązane. Tutaj pliki css, js i html są scalane w jeden komponent, który można przetestować jednostkowo. Tak więc rozdzielenie problemów ma postać pojedynczych składników atomowych, które można testować jednostkowo, a nie oddzielenia znaczników, stylu i elementów behawioralnych. To drugie podejście jest bardziej odpowiednie do tworzenia bardziej złożonych aplikacji internetowych.
edytować. Ponieważ otrzymałem negatywną odpowiedź na ten komentarz, pomyślałem, że ponownie go odwiedzę i spróbuję zakwalifikować niektóre z moich pow. Niestety, każda informacja zwrotna tutaj nie jest szczególnie konstruktywna, ale widziałem ciekawą dyskusję gdzie indziej, która patrzy na React, obecną gorącą technologię w tworzeniu stron internetowych, przykład ze świata rzeczywistego i pyta, czy to łamie separację obaw, a w szczególności, czy łamie zasady metodologii projektowania zorientowanego obiektowo SOLID Feather.
Techniczna perspektywa programisty JavaScript
Perspektywa projektanta UX / UI
Perspektywa zespołu
https://hashnode.com/post/does-react-really-violate-separation-of-concern-by-putting-html-and-js-in-a-single-file-cil3bn5hj0011a65347rsdut0
Na stronie znajduje się również link do interesującej prezentacji Pete Hunta z Facebooka, w której mówi on o komponentach, a nie o szablonach i rozróżnia obawy w aplikacji językowej, a nie wyodrębnia obawy dotyczące frameworka, tj. Szablony, css i javascript itp.
Jeśli chodzi o rozróżnianie swoich obaw w języku aplikacji, może to obejmować użycie różnych wzorców do oddzielenia lub oddzielenia kodu do postaci modułowej, która może być testowana jednostkowo itp.
Podsumowując, wyodrębnienie problemów może zależeć od twojej roli lub punktu widzenia, jak wspomniano gdzie indziej.
źródło