Ostatnio miałem zwyczaj „maskowania” kolekcji Java za pomocą przyjaznych dla ludzi nazw klas. Kilka prostych przykładów: // Facade class that makes code more readable and understandable. public class WidgetCache extends Map<String, Widget> { } Lub: // If you saw a ArrayList<ArrayList<?>> being passed around in the code, would you // …
Muszę rozszerzyć istniejący moduł projektu. Nie podoba mi się sposób, w jaki to zostało zrobione (dużo anty-wzorca, takiego jak kopiowanie / wklejanie kodu). Nie chcę wykonać pełnego refaktora z wielu powodów. Czy powinienem: tworzyć nowe metody przy użyciu istniejącej konwencji, nawet jeśli uważam, że to źle, aby uniknąć zamieszania dla …
Aby obsłużyć kilka możliwych błędów, które nie powinny powstrzymywać wykonywania, mam errorzmienną, którą klienci mogą sprawdzać i używać do zgłaszania wyjątków. Czy to jest anty-wzór? Czy istnieje lepszy sposób, aby sobie z tym poradzić? Na przykład w akcji możesz zobaczyć API mysqli PHP . Załóżmy, że problemy z widocznością (akcesory, …
Moi koledzy lubią mówić „logowanie / buforowanie / itd. To problem przekrojowy”, a następnie wszędzie używają odpowiedniego singletonu. A jednak uwielbiają IoC i DI. Czy to naprawdę słuszna wymówka, by złamać zasadę SOLI D.
Podczas pisania biblioteki dla dużego projektu, nad którym pracuję w pracy, pojawił się problem, który wymagał wysłania tokena na adres e-mail, a następnie przesłania go z powrotem do kodu, z którego można go następnie wykorzystać. Mój kolega mówi, że po prostu czytam ze STDIN (używając Pythona:), code = input("Enter code: …
Pytanie Gdzie powinienem umieścić funkcje niezwiązane z klasą wywołało debatę na temat tego, czy w C ++ sens ma łączenie funkcji narzędziowych w klasie, czy po prostu ich istnienie jako wolnych funkcji w przestrzeni nazw. Pochodzę z tła w języku C #, gdzie ta ostatnia opcja nie istnieje, a zatem …
Rozmawiałem ze współpracownikiem i skończyły się sprzeczne intuicje na temat celu podklasy. Moją intuicją jest to, że jeśli podstawową funkcją podklasy jest wyrażenie ograniczonego zakresu możliwych wartości jej elementu nadrzędnego, prawdopodobnie nie powinna to być podklasa. Argumentował za odwrotną intuicją: ta podklasa reprezentuje bardziej „specyficzny” obiekt, a zatem relacja podklasy …
Rozważ następujący projekt public class Person { public virtual string Name { get; } public Person (string name) { this.Name = name; } } public class Karl : Person { public override string Name { get { return "Karl"; } } } public class John : Person { public override …
Załóżmy, że mam strumień Rzeczy i chcę je „wzbogacić” w połowie strumienia, mogę peek()to zrobić, np .: streamOfThings.peek(this::thingMutator).forEach(this::someConsumer); Załóżmy, że mutowanie Rzeczy w tym punkcie kodu jest poprawnym zachowaniem - na przykład thingMutatormetoda może ustawić pole „lastProcessor” na bieżący czas. Jednak peek()w większości kontekstów oznacza „patrz, ale nie dotykaj”. Używa …
Istnieje kilka nazw, w przypadku których sięgasz po te nazwy, wiesz, że już coś pomieszałeś. Na przykład: XxxManager Jest to złe, ponieważ klasa powinna opisywać, co robi klasa. Jeśli najbardziej konkretnym słowem, jakie można wymyślić dla tego, co robi klasa, jest „zarządzać”, to klasa jest zbyt duża. Jakie inne anty-wzorce …
Czytałem artykuł o złych praktykach programistycznych . Wspomniał - „Kod jo-jo”, który konwertuje wartość na inną reprezentację, a następnie konwertuje ją z powrotem do miejsca, w którym się zaczęła (np. Konwersja dziesiętnego na ciąg znaków, a następnie z powrotem na dziesiętny lub wypełnianie ciągu, a następnie przycinanie go) Nie rozumiem, …
Właśnie omówiłem wybór projektu po przejrzeniu kodu. Zastanawiam się, jakie są twoje opinie. Jest ta Preferencesklasa, która jest wiadrem dla par klucz-wartość. Wartości zerowe są legalne (to ważne). Oczekujemy, że niektóre wartości mogą jeszcze nie zostać zapisane i chcemy automatycznie obsługiwać te przypadki, inicjując je z predefiniowaną wartością domyślną na …
Ostatnio natknąłem się na artykuł MSDN na temat rozgałęziania i łączenia oraz SCM: Rozgałęzianie i łączenie podkładu - Chris Birmele . W artykule mówią, że „połączenie wielkiego wybuchu” to łączący się antypattern: Big Bang Merge - odroczenie połączenia gałęzi do końca prac rozwojowych i próba scalenia wszystkich gałęzi jednocześnie. Uświadomiłem …
Czy istnieje anty-wzorzec opisujący historycznie rozwijany system oprogramowania, w którym wielu programistów właśnie dodało nowe funkcje do systemu, ale nikt tak naprawdę nie pilnował ogólnej architektury ani nigdy nie przeprowadzono refaktoryzacji? Wydaje mi się, że dzieje się tak, gdy zarząd / klient ciągle prosi o nową funkcję i nikt nigdy …
W ciągu ostatnich kilku miesięcy potknąłem się kilka razy o następującą technikę / schemat. Nie mogę jednak znaleźć konkretnej nazwy, ani nie jestem w 100% pewien wszystkich jej zalet i wad. Wzór wygląda następująco: W interfejsie Java zestaw typowych metod jest definiowany jak zwykle. Jednak przy użyciu klasy wewnętrznej domyślna …
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.