Вопросы с тегом «constructors»

162
Почему я должен использовать фабричный класс вместо прямого создания объекта?

Я видел историю нескольких проектов библиотек классов С # и Java на GitHub и CodePlex, и я вижу тенденцию перехода к фабричным классам в отличие от непосредственного создания объектов. Почему я должен широко использовать фабричные классы? У меня есть довольно хорошая библиотека, где объекты...

49
Есть ли когда-нибудь причина выполнять всю работу с объектом в конструкторе?

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

37
Всегда ли плохо использовать «новый» в конструкторе?

Я читал, что использование «нового» в конструкторе (для любых других объектов, кроме простых значений) является плохой практикой, так как делает невозможным модульное тестирование (так как тогда эти коллаборационисты тоже должны быть созданы и не могут быть смоделированы). Поскольку я не очень...

34
Проверка параметров конструктора в C # - Лучшие практики

Какова лучшая практика для проверки параметров конструктора? Предположим, что немного C #: public class MyClass { public MyClass(string text) { if (String.IsNullOrEmpty(text)) throw new ArgumentException("Text cannot be empty"); // continue with normal construction } } Было бы приемлемо бросить...

33
Должен ли я инициализировать структуры C через параметр или возвращаемое значение? [закрыто]

Компания, в которой я работаю, инициализирует все свои структуры данных с помощью функции инициализации следующим образом: //the structure typedef struct{ int a,b,c; } Foo; //the initialize function InitializeFoo(Foo* const foo){ foo->a = x; //derived here based on other data foo->b = y;...

30
Является ли метод «запуска», «запуска» или «выполнения» хорошей практикой?

В настоящее время я работаю над базой кода, которая имеет много классов, которые реализуют метод Start. Мне кажется, что это двухфазная конструкция, которую я всегда считал плохой практикой. Я не могу сказать разницу между этим и конструктором. Когда целесообразно использовать метод запуска вместо...

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

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

23
Почему не стало обычным делом использовать сеттеры в конструкторе?

Средства доступа и модификаторы (также известные как сеттеры и геттеры) полезны по трем основным причинам: Они ограничивают доступ к переменным. Например, переменная может быть доступна, но не может быть изменена. Они проверяют параметры. Они могут вызвать некоторые побочные эффекты. Университеты,...

23
Законная «настоящая работа» в конструкторе?

Я работаю над дизайном, но продолжаю преодолевать препятствия. У меня есть определенный класс (ModelDef), который по сути является владельцем сложного дерева узлов, созданного путем анализа XML-схемы (например, DOM). Я хочу следовать хорошим принципам проектирования (SOLID) и гарантировать, что...

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

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

21
Конструктор с множеством параметров в сравнении с шаблоном

Хорошо известно, что если в вашем классе есть конструктор с множеством параметров, скажем, больше 4, то это, скорее всего, запах кода . Вам нужно пересмотреть, удовлетворяет ли класс SRP . Но что если мы создадим объект, который зависит от 10 или более параметров, и в конечном итоге закончим...

18
насколько сложным должен быть конструктор

Я веду дискуссию с моим коллегой о том, сколько работы может сделать конструктор. У меня есть класс B, который внутренне требует другого объекта A. Объект A - один из немногих членов, которым класс B должен выполнять свою работу. Все его открытые методы зависят от внутреннего объекта A. Информация...

14
Можно ли сделать конструктор по умолчанию непригодным для использования?

В частности, спрашивая о конструкторе по умолчанию Учитывая, что конструктор инициализирует все данные для объекта, если я создаю класс, который не может быть использован без надлежащей инициализации, разве это не тот случай, когда конструктор по умолчанию бесполезен? Рассмотреть возможность: // A...

13
Как сохранить низкий аргумент и сохранить независимость сторонних зависимостей?

Я использую стороннюю библиотеку. Они передают мне POJO, который для наших намерений и целей, вероятно, реализован так: public class OurData { private String foo; private String bar; private String baz; private String quux; // A lot more than this // IMPORTANT: NOTE THAT THIS IS A PACKAGE PRIVATE...

11
Модульный тест для проверки создания объекта домена

У меня есть модульный тест, который выглядит так: [Test] public void Should_create_person() { Assert.DoesNotThrow(() => new Person(Guid.NewGuid(), new DateTime(1972, 01, 01)); } Я утверждаю, что здесь создается объект Person, т. Е. Проверка не завершается неудачей. Например, если Guid имеет...

11
Как написать конструкторы, которые могут неправильно создать экземпляр объекта

Иногда вам нужно написать конструктор, который может потерпеть неудачу. Например, скажем, я хочу создать экземпляр объекта с путем к файлу, что-то вроде obj = new Object("/home/user/foo_file") Пока путь указывает на соответствующий файл, все в порядке. Но если строка не является допустимым путем,...

10
Разве плохо создавать классы, единственной целью которых является неявное преобразование в другой класс?

Представьте себе ситуацию, когда мы используем библиотеку, которая позволяет вам создавать Circleобъекты, где вы можете указать радиус и центр круга, чтобы определить его. Однако по какой-то причине он также принимает обязательный flavourпараметр. Теперь предположим, что мне действительно нужно...

9
Где должен быть полностью инициализирован объект в CQRS + ES: в конструкторе или при применении первого события?

Похоже, что в сообществе ООП широко распространено мнение, что конструктор класса не должен оставлять объект частично или даже полностью неинициализированным. Что я имею в виду под «инициализацией»? Грубо говоря, атомарный процесс, который приводит вновь созданный объект в состояние, в котором...