Запитання з тегом «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 = z; //derived …

3
Чи є методом "запуск", "запуск" чи "виконання" хорошою практикою?
Зараз я працюю над кодовою базою, в якій є багато класів, які реалізують метод "Старт". Мені це здається двофазним будівництвом, що я завжди вважав поганою практикою. Я не можу сказати різницю між цим та конструктором. Коли доцільно використовувати метод запуску замість нормальної побудови об'єкта? Коли я вважаю за краще використовувати …

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: Маючи лише один конструктор з необов'язковим параметром public …

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 CSV_Entry { private: …

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 …

6
Як написати конструктори, які можуть не вдатися належним чином створити об'єкт
Іноді потрібно написати конструктор, який може вийти з ладу. Наприклад, скажіть, що я хочу створити об'єкт шляхом до файлу, щось подібне obj = new Object("/home/user/foo_file") Поки шлях вказує на відповідний файл, все добре. Але якщо рядок не є дійсним шляхом, речі повинні зламатися. Але як? Ви можете: кинути виняток повернути …

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.