Если это операция над IList
, то это должен быть метод расширения IList
.
Вообще, следует избегать классов типа Utils
и Helper
. Чаще всего вы обнаружите, что то, что вы можете считать утилитарным методом, на самом деле является довольно специфическим методом, который, вероятно, принадлежит к отдельному классу (как вы и говорите). Тем не менее, существуют специфические случаи, когда Util
-подобные классы (классы, которые группируют связанные полезные методы) являются допустимыми сущностями.
Конечно, вам следует поместить его в класс 'ListUtilities' или PointListUtilities
. Тогда вы не нарушите принцип единой ответственности, что является основной проблемой с универсальным классом 'Utilities'.
Нет ничего плохого в "глобальных" переменных и методах. Вы используете их постоянно. Фреймворк любит называть их «статическими» классами или «статическими» методами.
Мне это редко требуется, но я обычно добавляю внутренний статический класс Util в пространство имен, в котором метод / переменная требуется для C # и модуль для VB.NET.
Примеры из .NET Framework
System.Collections.Specialized.CollectionsUtil
System.Net.WebUtility