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

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

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

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

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

5
Должен ли я инициализировать структуры 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; //derived here based on other data foo->c = …

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

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

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

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

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

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

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

1
Можно ли сделать конструктор по умолчанию непригодным для использования?
В частности, спрашивая о конструкторе по умолчанию Учитывая, что конструктор инициализирует все данные для объекта, если я создаю класс, который не может быть использован без надлежащей инициализации, разве это не тот случай, когда конструктор по умолчанию бесполезен? Рассмотреть возможность: // A class for handling lines in a CSV file class …

3
Как сохранить низкий аргумент и сохранить независимость сторонних зависимостей?
Я использую стороннюю библиотеку. Они передают мне 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 CONSTRUCTOR OurData(/* …

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.