Przykład # 1: Mam widok wyświetlany w mojej aplikacji MVVM (użyjmy Silverlight do celów dyskusji) i klikam przycisk, który powinien zabrać mnie na nową stronę. Przykład # 2: Ten sam widok ma inny przycisk, który po kliknięciu powinien otworzyć widok szczegółów w oknie potomnym (oknie dialogowym). Wiemy, że obiekty Command …
Obecnie pracuję w systemie, w którym są Użytkownicy, a każdy użytkownik ma jedną lub wiele ról. Czy dobrą praktyką jest używanie wartości Lista Enum na Użytkowniku? Nie mogę wymyślić nic lepszego, ale to nie jest w porządku. enum Role{ Admin = 1, User = 2, } class User{ ... List<Role> …
Od dłuższego czasu zajmuję się programowaniem internetowym i gdzieś straciłem orientację, dlaczego robimy to, co robimy dzisiaj (lub jak zaczęliśmy robić rzeczy w ten sposób)? Zacząłem od podstawowego programowania stron ASP i bardzo wcześnie logika wyświetlania i biznesu była na stronie mieszana. Rozwój po stronie klienta był bardzo zróżnicowany (VBScript, …
Mój przyjaciel pracuje dla małej firmy nad projektem, którego każdy programista nienawidziłby: jest zmuszany do jak najszybszego zwolnienia, jest jedynym, który wydaje się dbać o dług techniczny, klient nie ma zaplecza technicznego itp. Opowiedział mi historię, która kazała mi pomyśleć o stosowności wzorców projektowych w projektach takich jak ten. Oto …
Co w programowaniu nazywa się zasadą najmniejszego zdziwienia? Jak ta koncepcja jest związana z projektowaniem dobrych interfejsów API? Czy dotyczy to tylko programowania obiektowego, czy też przenika inne techniki programowania? Czy ma to związek z zasadą „robienia jednej rzeczy w metodzie i robienia tego dobrze”?
Biorę klasę projektowania oprogramowania, w której powinienem wybrać oprogramowanie open source do analizy z punktu widzenia projektowania oprogramowania. To musi być duży projekt: nie mniej niż 100 000 linii kodu. Naprawdę chciałbym wybrać oprogramowanie, które jest bardzo dobrze zaprojektowane i zaprojektowane tak, aby mieć dobry wgląd w dobre projektowanie oprogramowania. …
Zawsze zdawałem sobie sprawę ze znaczenia stosowania wzorców projektowych. Jestem ciekawy, jak inni programiści wybierają ten najbardziej odpowiedni. Czy korzystasz z szeregu cech (takich jak schemat blokowy), aby pomóc Ci podjąć decyzję? Na przykład: Jeśli obiekty są powiązane, ale nie chcemy określać konkretnej klasy, rozważ opcję Streszczenie Kiedy tworzenie instancji …
Z wzorców projektowych „Gang of Four” jest metoda Factory: class Factory(product) case product when a new A when b new B when c new C end new Factory(a) Dlaczego jest to bardziej przydatne niż o trzech klasach a, boraz ci nazywając je indywidualnie?
Widziałem wiele implementacji wzorca Builder (głównie w Javie). Wszystkie mają klasę encji (powiedzmy Personklasę) i klasę konstruktora PersonBuilder. Konstruktor „układa” różne pola i zwraca new Personargument z przekazanymi argumentami. Dlaczego jawnie potrzebujemy klasy konstruktora, zamiast umieszczać wszystkie metody konstruktora w Personsamej klasie? Na przykład: class Person { private String name; …
Czy wzorzec „Konstruktora” ogranicza się do rozwiązania anty-wzorca „konstruktora teleskopowego”, czy też można powiedzieć, że dotyczy również bardziej ogólnego problemu skomplikowanego tworzenia niezmiennych obiektów? StringBuilderKlasy ma słowo „budowniczy” w nazwie, ale to nie ma nic, teleskopowe do czynienia z konstruktorów, to po prostu pomaga nam zebrać wszystkie dane, które musimy …
Co jest ogólnie przyjętą praktyką między tymi dwoma przypadkami: function insertIntoDatabase(Account account, Otherthing thing) { database.insertMethod(account.getId(), thing.getId(), thing.getSomeValue()); } lub function insertIntoDatabase(long accountId, long thingId, double someValue) { database.insertMethod(accountId, thingId, someValue); } Innymi słowy, czy ogólnie lepiej jest przekazywać całe obiekty, czy tylko pola, których potrzebujesz?
Mam fragment kodu, w którym iteruję mapę, dopóki jakiś warunek nie jest spełniony, a następnie użyję tego warunku, aby zrobić więcej rzeczy. Przykład: Map<BigInteger, List<String>> map = handler.getMap(); if(map != null && !map.isEmpty()) { for (Map.Entry<BigInteger, List<String>> entry : map.entrySet()) { fillUpList(); if(list.size() > limit) { limitFlag = true; break; …
Czytałem powiązane pytanie Czy istnieją jakieś wzorce projektowe, które są niepotrzebne w dynamicznych językach, takich jak Python? i pamiętam ten cytat na Wikiquote.org Wspaniałą rzeczą w dynamicznym pisaniu jest to, że pozwala wyrazić wszystko, co jest obliczalne. A systemy typu nie-systemy są zazwyczaj rozstrzygalne i ograniczają cię do podzbioru. Ludzie, …
Ciekawe, jakie są wady używania wzorca ActiveRecord do dostępu do danych / obiektów biznesowych. Jedyne, co mogę wymyślić z góry, to to, że narusza zasadę pojedynczej odpowiedzialności, ale wzorzec AR jest na tyle powszechny, że sam ten powód nie wydaje się „wystarczająco dobry”, aby uzasadnić nieużywanie go (oczywiście moje widok …
Mój współpracownik i ja mamy różne opinie na temat relacji między klasami podstawowymi a interfejsami. Jestem przekonany, że klasa nie powinna implementować interfejsu, chyba że z tej klasy można korzystać, gdy wymagana jest implementacja interfejsu. Innymi słowy, lubię widzieć taki kod: interface IFooWorker { void Work(); } abstract class BaseWorker …
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.