Kilka miesięcy temu zacząłem pracować nad nowym projektem, a kiedy przejrzałem kod, uderzyło mnie ilość użytych metod statycznych. collectionToCsvString(Collection<E> elements)Przechowuje się w nich nie tylko metody użytkowe , ale także mnóstwo logiki biznesowej. Kiedy zapytałem faceta odpowiedzialnego za uzasadnienie tego, powiedział, że to sposób na ucieczkę od tyranii Springa . …
Jak zorganizowane są obiekty w pamięci? Na przykład wiem, że funkcja to fragment kodu w pamięci, który oczekuje parametrów przez stos i / lub rejestry i obsługuje własną ramkę stosu. Ale obiekty są znacznie bardziej skomplikowaną strukturą. Jak są zorganizowani? Czy każdy obiekt ma „linki” do metod i przekazuje adres …
Programuję w wielu językach, takich jak Java, Ruby, Haskell i Python. Muszę przełączać się między wieloma językami dziennie z powodu różnych projektów, nad którymi pracuję. Problem polega na tym, że często zapominam pisać selfjako pierwszy parametr w definicjach funkcji w Pythonie tak samo, jak w przypadku wywoływania metod na tym …
Próbuję nauczyć się inżynierii oprogramowania i napotykam sprzeczne informacje, które mnie dezorientują. Uczyłem się OOP i czym są abstrakcyjne klasy / interfejsy i jak z nich korzystać, ale potem czytam, że należy „preferować kompozycję zamiast dziedziczenia”. Rozumiem, że skład ma miejsce, gdy jedna klasa tworzy / tworzy obiekt innej klasy …
Czytam książkę Zasady, praktyki i wzorce wstrzykiwania zależności i czytam o koncepcji nieszczelnej abstrakcji, która jest dobrze opisana w książce. Obecnie refaktoryzuję bazę kodu C # przy użyciu wstrzykiwania zależności, aby zamiast blokowania były używane wywołania asynchroniczne. W tym celu rozważam interfejsy, które reprezentują abstrakcje w mojej bazie kodu i …
W projektowaniu opartym na domenach warstwa domeny może mieć kilka (tradycyjnych) usług. Na przykład w domenie użytkownika możemy mieć: UserFactory, który buduje obiekty użytkownika na różne sposoby UserRepository, które jest odpowiedzialne za interakcję z usługami przetrwania w warstwie infrastruktury Czy usługa użytkownika w warstwie domen jest po prostu mediatorem i …
Wydobywanie funkcjonalności na metody lub funkcje jest niezbędne dla modułowości kodu, czytelności i interoperacyjności, szczególnie w OOP. Ale to oznacza, że będzie więcej wywołań funkcji. W jaki sposób podział naszego kodu na metody lub funkcje faktycznie wpływa na wydajność w nowoczesnych * językach? * Najpopularniejsze: C, Java, C ++, C …
Zauważyłem więc, że można uniknąć umieszczania funkcji prywatnych w nagłówkach, wykonując coś takiego: // In file pred_list.h: class PredicateList { int somePrivateField; friend class PredicateList_HelperFunctions; public: bool match(); } // In file pred_list.cpp: class PredicateList_HelperFunctions { static bool fullMatch(PredicateList& p) { return p.somePrivateField == 5; // or whatever } } …
Typowa implementacja repozytorium DDD nie wygląda zbyt dobrze, na przykład save()metoda: package com.example.domain; public class Product { /* public attributes for brevity */ public String name; public Double price; } public interface ProductRepo { void save(Product product); } Część infrastruktury: package com.example.infrastructure; // imports... public class JdbcProductRepo implements ProductRepo { …
W moim systemie często działają z kodami Airport ( "YYZ", "LAX", "SFO", itp), są one zawsze dokładnie w tym samym formacie (3 litery, reprezentowane jako wielkie litery). System zazwyczaj zajmuje się 25-50 z tych (różnych) kodów na każde żądanie API, z sumą ponad tysiąca alokacji, są one przekazywane przez wiele …
Zastanawiałem się nad tym, kiedy używać prywatnie, a kiedy chronione w klasach. (Rozszerzę to pytanie również na końcowe klasy i metody, ponieważ jest ono powiązane. Programuję w Javie, ale myślę, że dotyczy to każdego języka OOP) Akceptowana odpowiedź brzmi: Dobrą zasadą jest: uczyń wszystko tak prywatnym, jak to możliwe. I …
Czy można uczciwie powiedzieć, że dobrą praktyką jest domyślne ustawianie wszystkiego z privategóry podczas kodowania? A następnie uaktualnij go tylko wtedy, protectedgdy podklasa tego potrzebuje, lub publicjeśli potrzebuje innej klasy?
become:Wiadomości w Smalltalk powoduje jednego obiektu do zmiany na inny, wpływając na wszystkie odwołania do niego. Jakie zastosowania ma ta funkcja języka? Czy wykorzystuje się go w prawdziwym kodzie? Czy to tylko ciekawość? Czy używanie go jest uważane za dobrą / złą praktykę?
Zamknięte . To pytanie jest oparte na opiniach . Obecnie nie przyjmuje odpowiedzi. Chcesz poprawić to pytanie? Zaktualizuj pytanie, aby można było na nie odpowiedzieć faktami i cytatami, edytując ten post . Zamknięte 5 lat temu . W moim kodzie wstrzykuję program rejestrujący do wielu moich klas za pomocą listy …
Moje pytanie dotyczy specjalnego przypadku superklasy Animal. Moja Animalpuszka moveForward()i eat(). Sealrozszerza się Animal. Dogrozszerza się Animal. I jest specjalne stworzenie, które rozszerza także Animaltzw Human. Humanimplementuje również metodę speak()(nie zaimplementowaną przez Animal). W implementacji metody abstrakcyjnej, która akceptuje Animal, chciałbym użyć tej speak()metody. To nie wydaje się możliwe bez …
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.