C# и «лучший» подход к кодированию для шаблона Builder/Converter/Creator? [закрыто]C#

Место общения программистов C#
Anonymous
C# и «лучший» подход к кодированию для шаблона Builder/Converter/Creator? [закрыто]

Сообщение Anonymous »

Я пришел из Java, поэтому склонен возвращаться к Java-измам в своем коде на C#. Мой вопрос заключается в том, какой шаблон кодирования является лучшим выбором в C# с точки зрения стиля и соглашения. Очевидно, что это часто сводится к мнению. Всегда приятно, когда кто-то говорит: «вот стандартный способ» разрешить спор и двигаться дальше.
В C# есть простые структуры. Мне нужна была функция типа преобразователя для преобразования объектов b и c в тип объекта A, простую структуру.
Я не могу использовать инициализатор объекта, потому что мне нужно выполнять различные вычисления, которые просто слишком сложно для встраивания. Инкапсуляция здесь очень помогает.
Какой способ предпочтительнее?
  • статический метод класса A
    конструктор класса A
  • класс-строитель
  • библиотека-конвертер
Я могу придумать около 6 способов сделать это. Но что будет отраслевым стандартом?
Я бы использовал статический метод для класса A в Java 11. В Java 11 нет строгого понятия "структуры", теперь это " Record» в Java 17. Таким образом, в Java 11 стилистически это было бы нормально. В C# кажется немного безвкусным портить красивый список общедоступных полей с помощью этой функции конвертера. Может быть, это запах кода?
Если это имеет значение, мой вариант использования — я просто хочу преобразовать типы при создании цепочки функций. Мне не нужно создавать объекты с нуля (и инициализатор объекта уже выполняет эту роль). Мне не нужна универсальность Строителя или Конвертера. Единственная причина сделать это - стиль и соглашение.
Я также думаю, что конструктор может быть запахом кода в отличие от инициализатора объекта, но я действительно не знаю.
Подводя итог, все мои варианты имеют негативные последствия, поэтому скажите мне, что делать.

Подробнее здесь: https://stackoverflow.com/questions/791 ... or-pattern

Вернуться в «C#»