Niedawno rozpocząłem nową pracę, w której pracuję nad bardzo dużą aplikacją (15M loc). W mojej poprzedniej pracy mieliśmy podobnie dużą aplikację, ale (na lepsze lub gorsze) korzystaliśmy z OSGi, co oznaczało, że aplikacja została podzielona na wiele mikrousług, które można niezależnie zmieniać, kompilować i wdrażać. Nowa aplikacja to tylko jedna …
Od jakiegoś czasu studiuję i koduję w C #. Ale nadal nie mogę zrozumieć przydatności interfejsów. Za mało przynoszą na stół. Poza dostarczeniem sygnatur funkcji nic nie robią. Jeśli pamiętam nazwy i podpis funkcji, które należy zaimplementować, nie ma takiej potrzeby. Są one po to, aby upewnić się, że wspomniane …
Zawsze czytam, że kompozycja ma pierwszeństwo przed dziedziczeniem. Blogu na przeciwieństwie rodzaju , na przykład, opowiada się za pomocą kompozycji przez dziedziczenie, ale nie mogę zobaczyć, jak polimorfizm został osiągnięty. Mam jednak wrażenie, że kiedy ludzie mówią, że wolą kompozycję, to tak naprawdę wolą kombinację kompozycji i implementacji interfejsu. Jak …
W Javie 8 interfejsy mogą zawierać zaimplementowane metody, metody statyczne i tak zwane metody „domyślne” (których klasy implementujące nie muszą zastępować). W mojej (prawdopodobnie naiwnej) opinii nie było potrzeby naruszania takich interfejsów. Interfejsy zawsze były umową, którą musisz wypełnić, a jest to bardzo prosta i czysta koncepcja. Teraz jest to …
W naszym zespole toczy się obecnie debata na temat tego, czy modyfikacja projektu kodu w celu umożliwienia testowania jednostkowego jest zapachem kodu lub w jakim stopniu można to zrobić bez zapachu kodu. Stało się tak, ponieważ dopiero zaczynamy wprowadzać praktyki, które są obecne w prawie każdej innej firmie programistycznej. W …
Studiując kurs dla początkujących na temat interfejsu sprzętowego / programowego i systemów operacyjnych, często pojawia się pytanie, czy lepiej byłoby wymienić niektóre części sprzętowe na oprogramowanie i odwrotnie. Nie mogę nawiązać połączenia.
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 …
„Klasa abstrakcyjna” i „interfejs” są podobnymi pojęciami, a interfejs jest bardziej abstrakcyjny z tych dwóch. Jednym z czynników różnicujących jest to, że klasy abstrakcyjne zapewniają w razie potrzeby implementacje metod dla klas pochodnych. Jednak w języku C # ten czynnik różnicujący został zmniejszony dzięki niedawnemu wprowadzeniu metod rozszerzenia, które umożliwiają …
Co jest lepsze i dlaczego? (Z punktu widzenia projektowania interfejsu): a) Mieć dwa Show()i Hide()funkcje b) Aby mieć jedną SetVisible(bool visible)funkcję EDYCJA: Na przykład niektóre obiekty mają stan widoczności i ta funkcja służy do jego zmiany. c) wszystkie trzy Show(), Hide(), SetVisible(bool visible)funkcje
W języku C # następujący kod jest poprawny interface I{ int property{get;set;} } To nie ma dla mnie żadnego sensu. Wydaje się to łamać jedną z najważniejszych zasad interfejsów: brak stanu (innymi słowy brak pól). Czy właściwość nie tworzy niejawnego pola prywatnego? Czy to nie byłoby naprawdę złe dla interfejsów?
Obok mnie siedzi kolega, który zaprojektował taki interfejs: public interface IEventGetter { public List<FooType> getFooList(String fooName, Date start, Date end) throws Exception; .... } Problem polega na tym, że obecnie nie używamy tego parametru „end” nigdzie w naszym kodzie, po prostu istnieje, ponieważ w przyszłości będziemy musieli go użyć. Próbujemy …
W inspirującej myśli Richa Hickeya na konferencji goto „ Wartość wartości ” po 29 minutach mówi o narzutach związanych z językiem takim jak Java i mówi: „Wszystkie te interfejsy zabijają ponowne użycie”. Co on ma na myśli? Czy to prawda? W poszukiwaniu odpowiedzi natknąłem się na: Zasada najmniejszej wiedzy AKA …
Używam interfejsów rzadko i uważam je za wspólne w innych kodach. Poza tym w kodzie rzadko tworzę podklasy i superklasy (tworząc własne klasy). Czy to źle? Czy sugerowałbyś zmianę tego stylu? Czy ten styl ma jakieś skutki uboczne? Czy to dlatego, że nie pracowałem przy dużych projektach?
Kiedyś tworzyłem wiele abstrakcyjnych klas / metod. Potem zacząłem używać interfejsów. Teraz nie jestem pewien, czy interfejsy nie powodują, że klasy abstrakcyjne stają się przestarzałe. Potrzebujesz w pełni abstrakcyjnej klasy? Zamiast tego utwórz interfejs. Potrzebujesz abstrakcyjnej klasy z pewną implementacją? Utwórz interfejs, stwórz klasę. Dziedzicz klasę, zaimplementuj interfejs. Dodatkową korzyścią …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.