Pytania otagowane jako class-design

Ogólne wytyczne dotyczące projektowania klas z najbardziej znanymi praktykami branżowymi.

5
Jak rozłożyć konstruktor?
Powiedzmy, że mam klasę wroga, a konstruktor wyglądałby mniej więcej tak: public Enemy(String name, float width, float height, Vector2 position, float speed, int maxHp, int attackDamage, int defense... etc.){} Wygląda to źle, ponieważ konstruktor ma tak wiele parametrów, ale kiedy tworzę instancję wroga, muszę określić wszystkie te rzeczy. Chcę również …


7
Jaki jest pomysł nazewnictwa klas za pomocą sufiksu „Info”, na przykład: „SomeClass” i „SomeClassInfo”?
Pracuję w projekcie, który dotyczy urządzeń fizycznych i byłem zdezorientowany, jak prawidłowo nazwać niektóre klasy w tym projekcie. Biorąc pod uwagę fakt, że rzeczywiste urządzenia (czujniki i odbiorniki) to jedno, a ich reprezentacja w oprogramowaniu jest inna, myślę o nadaniu nazw niektórym klasom za pomocą wzorca nazwy sufiksu „Info”. Na …

4
Po co definiować obiekt Java za pomocą interfejsu (np. Mapa) zamiast implementacji (HashMap)
W większości kodu Java widzę, że ludzie deklarują takie obiekty Java: Map<String, String> hashMap = new HashMap<>(); List<String> list = new ArrayList<>(); zamiast: HashMap<String, String> hashMap = new HashMap<>(); ArrayList<String> list = new ArrayList<>(); Dlaczego preferuje się definiowanie obiektu Java za pomocą interfejsu, a nie implementacji, która będzie faktycznie używana?

7
W którym momencie niezmienne klasy stają się ciężarem?
Przy projektowaniu klas do przechowywania modelu danych przeczytałem, że przydatne może być tworzenie niezmiennych obiektów, ale w którym momencie ciężar listy parametrów konstruktora i głębokich kopii staje się zbyt duży i trzeba zrezygnować z niezmiennego ograniczenia? Na przykład, tutaj jest niezmienna klasa reprezentująca nazwaną rzecz (używam składni C #, ale …

2
Oswajanie klas „funkcji narzędziowych”
W naszej bazie kodu Java wciąż widzę następujący wzorzec: /** This is a stateless utility class that groups useful foo-related operations, often with side effects. */ public class FooUtil { public int foo(...) {...} public void bar(...) {...} } /** This class does applied foo-related things. */ class FooSomething { …




4
Jak konkretny powinien być wzorzec pojedynczej odpowiedzialności dla klas?
Załóżmy na przykład, że masz program do gier konsolowych, który ma wszystkie metody wejścia / wyjścia do iz konsoli. Byłoby inteligentny, aby utrzymać je wszystkie w jednej inputOutputklasie lub przerwać je do większej liczby klas konkretnych jak startMenuIO, inGameIO, playerIO, gameBoardIO, itd. Tak, że każda klasa ma około 1-5 metodami? …

5
Klasy podstawowe jako fabryki?
W weekend pisałem trochę kodu i chciałem napisać fabrykę jako metodę statyczną w klasie bazowej. Moim pytaniem jest po prostu wiedzieć, czy jest to podejście idomatyczne? Wydaje mi się, że może nie być tak, że klasa podstawowa ma wiedzę o klasie pochodnej. To powiedziawszy, nie jestem pewien prostszego sposobu na …
14 c#  class-design 


2
Projekt: metoda obiektowa a metoda osobnej klasy, która przyjmuje parametr jako parametr?
Na przykład, czy lepiej zrobić: Pdf pdf = new Pdf(); pdf.Print(); lub: Pdf pdf = new Pdf(); PdfPrinter printer = new PdfPrinter(); printer.Print(pdf); Inny przykład: Country m = new Country("Mexico"); double ratio = m.GetDebtToGDPRatio(); lub: Country m = new Country("Mexico"); Country us = new Country("US"); DebtStatistics ds = new DebtStatistics(); …

4
Duża klasa z jedną odpowiedzialnością
Mam Characterklasę linii 2500, która: Śledzi wewnętrzny stan postaci w grze. Ładuje i utrzymuje ten stan. Obsługuje ~ 30 przychodzących poleceń (zwykle = przekazuje je do Game, ale niektóre polecenia tylko do odczytu są natychmiast reagowane). Odbiera ~ 80 połączeń od Gamepodejmowanych działań i odpowiednich działań innych osób. Wydaje mi …

2
Czy powinienem ujawniać „obliczoną” wartość jako właściwość lub metodę?
Mam klasę C #, która reprezentuje typ zawartości w systemie zarządzania treścią internetową. Mamy pole, które pozwala edytorowi treści WWW wprowadzić szablon HTML do wyświetlania obiektu. Zasadniczo używa składni kierownicy do podstawiania wartości właściwości obiektu w ciągu HTML: <h1>{{Title}}</h1><p>{{Message}}</p> Czy z perspektywy projektowania klas powinienem udostępniać sformatowany ciąg HTML (z …

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.