Вспомогательные классы и юнит-тестирование - PullRequest
0 голосов
/ 07 декабря 2010

При написании кода, который часто встречается в нескольких файлах классов, я склонен помещать их в вспомогательный файл.

Должен ли вспомогательный или вспомогательный класс быть внедрен в классы, где он необходим?Или лучше просто иметь ссылку на него "Композиция"?

С уважением

Ответы [ 3 ]

2 голосов
/ 07 декабря 2010

Ваши причины выбора Composition vs Inheritance должны быть хорошо известными принципами SOLID.Тогда «композиция благосклонности перед наследованием» является следствием их, IMO.

IMO у вас есть класс Utility, когда

  • это статично (как сказал Саурабх);
  • задачи не связаны с конкретным доменом, но связаны с необработанными данными (например, утилита для реверсирования списков);
  • его функции не имеют побочных эффектов;
  • альтернативы нетреализации его функций.

В любом случае, с расширениями C # теперь редко можно создавать служебный класс.

С помощью служебного класса вам не нужно его внедрять (этостатичный и проверяемый).Если вместо этого у вас есть композиция, принцип инверсии зависимостей гласит, что вы должны «зависеть от абстракций, а не от конкреций», поэтому вы можете покинуть контейнер для внедрения своих абстракций.

0 голосов
/ 07 декабря 2010

Я бы сказал, что вам не нужна сложность инъекций, если вы не помогаете множеству разновидностей класса помощника, каждый из которых делает одно и то же по-своему. Я бы сказал, что состав разумный; в качестве альтернативы вы можете сделать это утилитой или статическим классом инструментария, что может сделать ваш код немного более явным.

0 голосов
/ 07 декабря 2010

Лучше сделать это как класс Utility, который является статическим классом.

Зависимость - это то, что тесно связано с конкретным классом, но я бы сказал, что в вашем сценарии вам нужен служебный класс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...