Вопросы с тегом «class-design»

Общие рекомендации о том, как разрабатывать классы с использованием лучших известных отраслевых практик.

199
При использовании принципа единой ответственности, что представляет собой «ответственность»?

Кажется довольно ясным, что «принцип единой ответственности» не означает «только одно». Вот для чего нужны методы. public Interface CustomerCRUD { public void Create(Customer customer); public Customer Read(int CustomerID); public void Update(Customer customer); public void Delete(int CustomerID);...

123
Есть ли «реальная» причина, по которой множественное наследование ненавидят?

Мне всегда нравилась идея поддержки множественного наследования в языке. Чаще всего это преднамеренно, и предполагаемая «замена» - это интерфейсы. Интерфейсы просто не охватывают все то же основание, что и множественное наследование, и это ограничение может иногда приводить к дополнительному...

96
Как предупредить других программистов о реализации классов

Я пишу классы, которые «должны использоваться особым образом» (я думаю, все классы должны ...). Например, я создаю fooManagerкласс, который требует вызова, скажем, Initialize(string,string). И, чтобы продвинуть пример немного дальше, класс был бы бесполезен, если бы мы не слушали его...

60
Это плохая практика, чтобы пропустить экземпляры через несколько слоев?

При разработке моей программы я часто дохожу до того, что мне приходится передавать экземпляры объекта через несколько классов. Например, если у меня есть контроллер, который загружает аудиофайл, а затем передает его проигрывателю, а проигрыватель передает его в playerRunnable, который снова...

55
Должен ли получатель генерировать исключение, если его объект имеет недопустимое состояние?

Я часто сталкиваюсь с этой проблемой, особенно в Java, даже если я думаю, что это общая проблема ООП. То есть: поднятие исключения выявляет проблему дизайна. Предположим, что у меня есть класс, который имеет String nameполе и String surnameполе. Затем он использует эти поля, чтобы составить полное...

48
Что может быть недостатком для определения класса как подкласса списка самого себя?

В моем недавнем проекте я определил класс со следующим заголовком: public class Node extends ArrayList<Node> { ... } Однако, после обсуждения с моим профессором CS, он заявил, что урок будет «ужасным для памяти» и «плохой практикой». Я не обнаружил, что первое особенно верно, а второе...

39
Предпочитаете членов класса или передавать аргументы между внутренними методами?

Предположим, что в частной части класса есть значение, которое используется несколькими частными методами. Предпочитают ли люди определять это как переменную-член для класса или передавать его в качестве аргумента каждому из методов - и почему? С одной стороны, я мог бы привести аргумент, что...

37
Является ли создание подклассов для конкретных случаев плохой практикой?

Рассмотрим следующий дизайн 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 string Name { get { return...

37
Почему предпочитают нестатические внутренние классы статическим?

Вопрос в том, сделать ли вложенный класс в Java статическим вложенным классом или внутренним вложенным классом. Я искал здесь и на Stack Overflow, но не смог найти никаких вопросов, касающихся последствий этого решения для дизайна. Я нашел вопросы о разнице между статическими и внутренними...

35
Это хорошая практика для создания ClassCollection другого класса?

Допустим, у меня есть Carкласс: public class Car { public string Engine { get; set; } public string Seat { get; set; } public string Tires { get; set; } } Допустим, мы создаем систему для парковки, я собираюсь использовать много Carклассов, поэтому мы создаем CarCollectionкласс, который может иметь...

30
Когда и зачем использовать вложенные классы?

Используя объектно-ориентированное программирование, у нас есть возможность создать класс внутри класса (вложенный класс), но я никогда не создавал вложенный класс за 4 года своего опыта программирования. Для чего нужны вложенные классы? Я знаю, что класс может быть помечен как закрытый, если он...

28
Необязательные параметры или перегруженные конструкторы

Я реализую DelegateCommand, и когда я собирался реализовать конструктор (ы), я предложил следующие два варианта дизайна: 1: Наличие нескольких перегруженных конструкторов public DelegateCommand(Action<T> execute) : this(execute, null) { } public DelegateCommand(Action<T> execute,...

25
Можем ли мы жить без конструкторов?

Допустим, по какой-то причине все объекты созданы таким образом: $ obj = CLASS :: getInstance (). Затем мы внедряем зависимости с помощью сеттеров и выполняем начальную инициализацию с помощью $ obj-> initInstance (); Есть ли реальные проблемы или ситуации, которые нельзя решить, если мы вообще...

23
Является ли хорошей идеей предоставлять разные сигнатуры функций, которые делают одно и то же?

Вот класс C ++, который создается с тремя значениями. class Foo{ //Constructor Foo(std::string, int, char); private: std::string foo; char bar; int baz; }; Все типы параметров разные. Я мог бы перегрузить конструктор, чтобы порядок не имел значения. class Foo{ //Constructors Foo(std::string, char,...

21
Когда вы должны использовать закрытый / внутренний класс?

Чтобы уточнить, о чем я спрашиваю, public class A{ private/*or public*/ B b; } против public class A{ private/*or public*/ class B{ .... } } Я могу определенно подумать о некоторых причинах, чтобы использовать одну или другую, но то, что я действительно хотел бы видеть, - это убедительные примеры,...

21
Как вы можете разложить конструктор?

Допустим, у меня есть класс Enemy, и конструктор будет выглядеть примерно так: public Enemy(String name, float width, float height, Vector2 position, float speed, int maxHp, int attackDamage, int defense... etc.){} Это выглядит плохо, потому что конструктор имеет так много параметров, но когда я...

20
Какова идея именования классов с суффиксом «Info», например: «SomeClass» и «SomeClassInfo»?

Я работаю в проекте, который имеет дело с физическими устройствами, и меня смутило, как правильно назвать некоторые классы в этом проекте. Учитывая фактические устройства (датчики и приемники) - это одно, а их представление в программном обеспечении - другое, я думаю о присвоении имен некоторым...

16
В какой момент неизменные классы становятся бременем?

При разработке классов для хранения вашей модели данных, которые я прочитал, может быть полезно создавать неизменяемые объекты, но в какой момент бремя списков параметров конструктора и глубоких копий становится слишком большим, и вы должны отказаться от неизменного ограничения? Например, вот...