Pytania otagowane jako design

Pytania dotyczące rozwiązywania problemów i planowania rozwiązania poprzez projektowanie oprogramowania.

4
czy ten sposób nazywania funkcji jest złą praktyką?
Mam następujący kod: public void moveCameraTo(Location location){ moveCameraTo(location.getLatitude(), location.getLongitude()); } public void moveCameraTo(double latitude, double longitude){ LatLng latLng = new LatLng(latitude, longitude); moveCameraTo(latLng); } public void moveCameraTo(LatLng latLng){ GoogleMap googleMap = getGoogleMap(); cameraUpdate = CameraUpdateFactory.newLatLngZoom(latLng, INITIAL_MAP_ZOOM_LEVEL); googleMap.moveCamera(cameraUpdate); } Myślę, że w ten sposób eliminuję na przykład odpowiedzialność za to, co …

6
Jaka jest najlepsza definicja wstrzykiwania zależności?
Za każdym razem, gdy ktoś do mnie dociera i prosi, abym w sposób koncepcyjny zdefiniował wtrysk zależności i wyjaśnił prawdziwe zalety i wady używania DI w projektowaniu oprogramowania. Przyznaję, że mam trudności z wyjaśnieniem koncepcji DI. Za każdym razem muszę im opowiedzieć historię o zasadzie pojedynczej odpowiedzialności, składzie nad spadkiem …


2
Architektura systemu alertów
Chciałbym stworzyć system, który obsługuje wiadomości alarmowe z różnych programów i może przetwarzać te alarmy do mniej wymagających klientów za pośrednictwem poczty elektronicznej. Wszystko to byłoby zawarte w jednej sieci wewnętrznej. Myślę, że chcę, aby podstawowa architektura wyglądała mniej więcej tak: Główny problem, który mam obecnie, to bit „modułu obsługi …

4
Jak dokładnie kompilator odzyskuje po błędzie typu?
Przeczytałem kilka artykułów, artykułów i sekcji 4.1.4, rozdział 4 kompilatorów: Zasady, techniki i narzędzia (2. wydanie) (aka „The Dragon Book”), które wszystkie omawiają temat odzyskiwania błędów kompilatora składniowego. Jednak po eksperymentach z kilkoma nowoczesnymi kompilatorami zauważyłem, że odzyskują one również po błędach semantycznych , a także błędach składniowych. Rozumiem dość …

6
Jak uniknąć niekończącego się iterowania poprzez równie nieoptymalne projekty?
Prawdopodobnie tak jak wielu, często napotykam bóle głowy z problemami projektowymi, w których na przykład istnieje pewien wzór / podejście projektowe, które wydaje się intuicyjnie pasować do problemu i przynosi pożądane korzyści. Bardzo często występuje pewne zastrzeżenie, które utrudnia wdrożenie wzorca / podejścia bez jakiejś pracy, która następnie neguje korzyści …


2
Pokrycie - wada algorytmu - jak pozbyć się jego wykorzystania?
Wprowadzenie Wiele głównych silników renderujących grafikę wektorową ma wadę algorytmiczną. Renderują każdy kształt osobno i antyializę, obliczając pokrycie pikseli, a następnie układają je jeden na drugim. Tak, to proste, ale prawidłowe rozwiązania są jeszcze prostsze. Prowadzi to do problemów związanych z pomieszaniem, ponieważ ogranicza zakres pokrycia przez przejrzystość. Mieszanie alfa …

1
System powiadomień z sieci społecznościowej
tło Pracuję nad aplikacją dla klienta, która zawiera niektóre funkcje sieci społecznościowych. Początkowo opracowywałem mobilny front-end, ale okoliczności sprawiły, że jestem odpowiedzialny za rozwój back-endu. Jako ogólny kontekst, nasz system pozwala użytkownikom śledzić innych użytkowników i otrzymywać powiadomienia o tych, których obserwują, jak można oczekiwać od sieci społecznościowej. Zastrzeżenie polega …

2
Czy obiekty żądania / odpowiedzi HTTP powinny być niezmienne?
Myślę, że można bezpiecznie powiedzieć, że większość aplikacji internetowych opiera się na paradygmacie żądanie / odpowiedź. PHP nigdy nie miało formalnej abstrakcji tych obiektów. Jedna grupa próbuje to zmienić: https://github.com/php-fig/fig-standards/blob/master/proposed/http-message.md W pewnym sensie udało im się jednak śledzić kwestię niezmienności. Z jednej strony obiekt zapytania / odpowiedzi zazwyczaj wymaga bardzo …

4
Dlaczego generatory i funkcje Pythona współdzielą słowo kluczowe „def”?
Rozważ następujące: def some_function(): return 1 def some_generator(): yield 1 W powyższym kodzie some_functionjest funkcja, podczas gdy some_generatorjest generatorem. Wyglądają dość podobnie. Problem, który mam podczas odczytywania kodu, polega na tym, że muszę skanować każdą linię w „funkcji” w poszukiwaniu yieldsłowa kluczowego, zanim będę mógł ustalić, czy jest to faktycznie …

1
Jak uniknąć gadatliwych interfejsów
Tło: Projektuję aplikację serwera i tworzę osobne biblioteki DLL dla różnych podsystemów. Dla uproszczenia załóżmy, że mam dwa podsystemy: 1) Users2)Projects Publiczny interfejs użytkownika ma metodę taką jak: IEnumerable<User> GetUser(int id); A publiczny interfejs projektów ma metodę taką jak: IEnumerable<User> GetProjectUsers(int projectId); Na przykład, kiedy musimy wyświetlić użytkowników dla określonego …

6
Projektowanie metod związanych z bazą danych, które lepiej zwrócić: prawda / fałsz czy wpływ na wiersz?
Mam kilka metod, które wykonują pewne zmiany danych w bazie danych (wstawianie, aktualizowanie i usuwanie). ORM używam powrót wiersz dotknięte wartości int dla tych rodzaju metody. Co powinienem zwrócić po „mojej metodzie”, aby wskazać stan powodzenia / niepowodzenia operacji? Rozważ kod, który zwraca int: A.1 public int myLowerLevelMethod(int id) { …

2
Używanie pakietów (klejnotów, jajek itp.) Do tworzenia oddzielnych architektur
Główny problem Widząc dobre wsparcie większość nowoczesnych platform programowania ma do zarządzania pakietami (myślę gem, npm, pipitp), to ma sens, aby zaprojektować aplikację lub system składający się z wewnętrznie opracowanych pakietów, tak aby promować i tworzyć luźno architekturę? Przykład Przykładem może być tworzenie pakietów dostępu do bazy danych, a także …

1
Programowanie ekstremalne dla jednego programisty [zamknięte]
Zamknięte . To pytanie musi być bardziej skoncentrowane . Obecnie nie przyjmuje odpowiedzi. Chcesz poprawić to pytanie? Zaktualizuj pytanie, aby skupiało się tylko na jednym problemie, edytując ten post . Zamknięte 4 lata temu . W ciągu ostatnich dwóch tygodni pracowałem z kilkoma podstawowymi koncepcjami programowania ekstremalnego w małej grze …

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.