Может ли кто-нибудь посоветовать мне, какой подход использовать при написании C#
конструкторов?
В других языках, например C++
, все в порядке - вы обычно не делаете внутренние поля видимыми и не предоставляетеgetters / setters для них.
Это означает, что вы можете предоставить своему классу конструкторы, которые инициализируют всех / некоторых ваших локальных членов и будут счастливы.
C#
, однако, имеет properties
, что позволяет нам писать что-то вроде:
Class x = new Class { Field1 = new Field1 ...., Field2 = new Field2 }
Это позволяет создавать цепочки для построения объекта и, как я предполагаю, может удалить много конструкторов, которые потребуются, если мы неproperties
.
Объединяя это со значениями по умолчанию для свойств, как я полагаю, мы можем полностью избавиться от неспециализированных конструкторов, которые на самом деле выполняют некоторую работу.
Теперь - можно ли удалять избыточные конструкторы и разрешать создание объектов с помощью инициализации поля?
Каковы недостатки этого подхода?ч?Может ли кто-нибудь дать общие рекомендации о комбинировании использования полей и конструкторов, некоторые rules of thumb
, вероятно?
Спасибо.