Czytam „ Czysty kod ” Roberta Martina, aby, mam nadzieję, zostać lepszym programistą. Chociaż jak dotąd żaden z nich nie był przełomowy, zmusił mnie do odmiennego myślenia o sposobie projektowania aplikacji i pisania kodu.
Jest jedna część książki, z którą nie tylko się nie zgadzam, ale nie ma dla mnie sensu, szczególnie w odniesieniu do konwencji nazewnictwa interfejsów. Oto tekst zaczerpnięty bezpośrednio z książki. Pogrubiłem ten aspekt, który wydaje mi się mylący i chciałbym wyjaśnić.
Wolę pozostawić interfejsy bez ozdób. Poprzednie I, tak powszechne w dzisiejszych legendarnych brodzikach, jest w najlepszym razie rozproszeniem, aw najgorszym przypadku zbyt dużą ilością informacji. Nie chcę, aby użytkownicy wiedzieli, że przekazuję im interfejs .
Może dlatego, że jestem tylko studentem, a może dlatego, że nigdy nie zajmowałem się programowaniem zawodowym lub zespołowym, ale chciałbym, aby użytkownik wiedział, że jest to interfejs. Istnieje duża różnica między implementacją interfejsu a rozszerzeniem klasy.
Moje pytanie sprowadza się więc do: „Dlaczego powinniśmy ukrywać fakt, że jakaś część kodu oczekuje interfejsu?”
Edytować
W odpowiedzi na odpowiedź:
Jeśli Twój typ to interfejs lub klasa to Twoja firma, a nie osoba korzystająca z Twojego kodu. Dlatego nie powinieneś ujawniać szczegółów swojego kodu w tym kodzie strony trzeciej.
Dlaczego nie powinienem „ujawniać” szczegółów tego, czy dany typ jest interfejsem czy klasą dla kodu strony trzeciej? Czy to nie jest ważne, aby zewnętrzny programista korzystający z mojego kodu wiedział, czy będą implementować interfejs, czy rozszerzać klasę? Czy różnice po prostu nie są tak ważne, jak chcę, żeby były w mojej pamięci?
to know whether they will be implementing an interface or extending a class
: tak, ale większość użytkowników twojego kodu wywoła go, nie zaimplementuje ani nie rozszerzy, i naprawdę nie obchodzi go, co to jest.