Информация об изменениях

Сообщение Re: Класс ради класса от 14.08.2022 9:02

Изменено 14.08.2022 9:11 Буравчик

Re: Класс ради класса
Здравствуйте, elmal, Вы писали:

E>Отсюда вопрос, я что — действительно слишком придираюсь, или по крайней мере в C# является бест практикой на каждый чих создавать класс с одним публичным методом и чтоб вызывающий код для простейшего случая не вызывал одну функцию, а вынужден сначала создавать объект оператором new, а затем вызывать один единственный метод чтоб что то посчитать?


Норм. Разработчик реализовал алгоритм и инкапсулировал его в класс — нормальная практика.
Это особенно удобно, если логика сложная (разбивается на несколько функций) и/или логика требует некоторой параметризации (передается в конструктор).

Минусы статиков по сравнению с обычным классом:
— если логика сложная — то все вспомогательные функции тоже должны быть статик
— если появятся параметры класса, то придется все статики переделать в нормальные методы (а параметры обязательно появятся)
— код прибит к классу — никакого тестирования, никакого IoC

Обычный (не статик) класс легко превратить в статик — просто создав единственный экземпляр класса (ага, синглетон), и обращаться к нему.
Это тоже не очень хороший вариант, но он имеет меньше перечисленных выше проблем.

P.S. Ну и в целом, класс с одним публичным методом — нормальная практика при использовании IoC и DI
Re: Класс ради класса
Здравствуйте, elmal, Вы писали:

E>Отсюда вопрос, я что — действительно слишком придираюсь, или по крайней мере в C# является бест практикой на каждый чих создавать класс с одним публичным методом и чтоб вызывающий код для простейшего случая не вызывал одну функцию, а вынужден сначала создавать объект оператором new, а затем вызывать один единственный метод чтоб что то посчитать?


Норм. Разработчик реализовал алгоритм и инкапсулировал его в класс — нормальная практика.
Это особенно удобно, если логика сложная (разбивается на несколько функций) и/или логика требует некоторой параметризации (передается в конструктор).

Минусы статиков по сравнению с обычным классом:
— если логика сложная — то все вспомогательные функции тоже должны быть статик
— если появятся параметры класса, то придется все статики переделать в нормальные методы (а параметры обязательно появятся)
— код прибит к классу — никакого тестирования, никакого IoC

Обычный (не статик) класс легко превратить в статик — просто создав единственный экземпляр класса (ага, синглетон), и обращаться к нему.
Это тоже не очень хороший вариант, но он имеет меньше перечисленных выше проблем.

P.S. Ну и в целом, класс с одним публичным методом — нормальная практика при использовании IoC и DI

ДОБАВЛЕНО:
Понятно, что для "простейшего случая" это все может быть оверхедом — ведь все зависит от ситуации, от требований. Если случай был уж совсем простой, и можно было ограничиться одной простой чистой функцией, то предлагаю считать, что разработчик просто предомонстрировал в тестовом задании умение работать с таким паттерном (инкапсуляция алгоритма в класс). Тоже имхо не плохой вариант.