Pytania otagowane jako design

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

11
Projektowanie literału idealnego zasięgu
Zastanawiałem się, jak zająć się projektowaniem literału „idealnego” zakresu, gdybym zaprojektował język. Dla tych, którzy nie znają literału zakresu w instrukcji reprezentującej zakres wartości, np. 1-4. Są najczęściej używane w pętlach for / foreach Wydaje się, że należy wziąć pod uwagę kilka kwestii Obsługa przedziałów włączających i wyłącznych, przypisywanie +1 …


6
Czy Dijkstra zamierzał modularyzować kod, pisząc o rozdzieleniu problemów?
Najpierw przeczytałem fragment artykułu Edsgera W. Dijkstry z 1974 r. „O roli myśli naukowej”: Pozwól, że wyjaśnię ci, co według mojego gustu jest charakterystyczne dla każdego inteligentnego myślenia. Chodzi o to, że chce się dogłębnie przestudiować aspekt przedmiotu w oderwaniu dla własnej spójności, cały czas wiedząc, że zajmuje się tylko …

2
Szczegółowość wyjątków
Natknąłem się na debatę między kilkoma przyjaciółmi i mną. Wolą ogólne wyjątki, takie jak ClientErrorExceptioni ServerErrorExceptionze szczegółami jako pola wyjątku, podczas gdy ja wolę sprecyzować rzeczy. Na przykład mogę mieć kilka wyjątków, takich jak: BadRequestException AuthenticationFailureException ProductNotFoundException Każdy z nich zbudowany w oparciu o kod błędu zwrócony z interfejsu API. …

7
Czy sprawiam, że moje zajęcia są zbyt szczegółowe? Jak stosować zasadę pojedynczej odpowiedzialności?
Piszę dużo kodu, który obejmuje trzy podstawowe kroki. Zdobądź skądś dane. Przekształć te dane. Umieść te dane gdzieś. Zazwyczaj używam trzech rodzajów zajęć - zainspirowanych ich wzorami projektowymi. Fabryki - aby zbudować obiekt z jakiegoś zasobu. Mediatorzy - aby skorzystać z fabryki, przeprowadzić transformację, a następnie użyć dowódcy. Dowódcy - …

2
Czy to dobre podejście do hierarchii klas opartej na „pImpl” w C ++?
Mam hierarchię klas, dla której chciałbym oddzielić interfejs od implementacji. Moim rozwiązaniem jest posiadanie dwóch hierarchii: hierarchii klas uchwytów dla interfejsu i niepublicznej hierarchii klas dla implementacji. Podstawowa klasa uchwytu ma wskaźnik do implementacji, który pochodne klasy uchwytów rzutują na wskaźnik typu pochodnego (patrz funkcja getPimpl()). Oto szkic mojego rozwiązania …
9 design  c++  c++11 

3
Czy interfejs może zależeć od konkretnych klas?
Tworzę interfejs w Javie dla niestandardowej procedury obsługi błędów. Chcę przekazać obiekt błędu argumentu, ale potrzebuję go, aby był dzieckiem Exceptionklasy. Czy mogę używać mojej zdefiniowanej nazwy klasy w interfejsie? Czy nie zmniejszy to interfejsu, ponieważ nie będzie zależny od żadnej implementacji? Próbuję zrobić coś takiego: public class CustomException { …

1
Projektowanie kodu: Delegowanie dowolnych funkcji
Na PPCG często mamy wyzwania King of the Hill , które rzucają przeciwko sobie różne boty kodu. Nie lubimy ograniczać tych wyzwań do jednego języka, dlatego prowadzimy komunikację między platformami w stosunku do standardowych operacji we / wy. Moim celem jest napisanie frameworka, w którym autorzy wyzwań będą mogli ułatwić …


2
Zasada segregacji interfejsów: Co zrobić, jeśli interfejsy w znacznym stopniu się pokrywają?
Z Agile Software Development, zasad, wzorców i praktyk: Pearson New International Edition : Czasami metody przywoływane przez różne grupy klientów nakładają się. Jeśli nakładanie się jest niewielkie, interfejsy dla grup powinny pozostać osobne. Wspólne funkcje powinny być deklarowane we wszystkich nakładających się interfejsach. Klasa serwera odziedziczy wspólne funkcje z każdego …


5
Czy są jakieś istotne wady uzależnienia od abstrakcji?
Czytałem tę wiki na temat Stable Abstractions Principle (SAP) . SAP stwierdza, że ​​im bardziej stabilny pakiet, tym bardziej powinien on być abstrakcyjny. Oznacza to, że jeśli pakiet jest mniej stabilny (bardziej prawdopodobne, że się zmieni), powinien być bardziej konkretny. Nie do końca rozumiem, dlaczego tak powinno być. Z pewnością …

3
CRUD API: Jak określić, które pola należy zaktualizować?
Załóżmy, że masz jakąś strukturę danych, która jest utrwalona w jakiejś bazie danych. Dla uproszczenia nazwijmy tę strukturę danych Person. Masz teraz zadanie zaprojektowania interfejsu CRUD API, który pozwala innym aplikacjom tworzyć, czytać, aktualizować i usuwać Persons. Dla uproszczenia załóżmy, że dostęp do tego interfejsu API można uzyskać za pośrednictwem …

1
Przegląd projektu serializacji w C ++
Piszę aplikację C ++. Większość aplikacji odczytuje i zapisuje dane potrzebne do cytowania, a ten nie jest wyjątkiem. Stworzyłem projekt wysokiego poziomu dla modelu danych i logiki serializacji. To pytanie wymaga przeglądu mojego projektu z uwzględnieniem tych konkretnych celów: Aby mieć łatwy i elastyczny sposób odczytywania i zapisywania modeli danych …
9 design  c++  c++11 

2
Czy musimy zweryfikować użycie całego modułu, czy tylko argumenty metod publicznych?
Słyszałem, że zalecane jest sprawdzenie poprawności argumentów metod publicznych: Czy należy sprawdzić wartość zerową, jeśli nie spodziewa się wartości zerowej? Czy metoda powinna zweryfikować swoje parametry? MSDN - CA1062: Sprawdź poprawność argumentów metod publicznych (mam tło .NET, ale pytanie nie jest specyficzne dla C #) Motywacja jest zrozumiała. Jeśli moduł …

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.