Эта ситуация, вероятно, не совсем необычна для некоторых из вас: у вас есть некоторая функциональность для добавления в класс, но идеальное имя (*) для этого класса берется одним из классов в пространстве имен System
или другом пространстве имен /class, который не принадлежит вам, но вы using
/import
ing.
(*) Совершенно я имею в виду небольшие, сжатые и четкие имена.
Например, у меня есть класс Utils
, который имеет класс Diagnostics
(в основном debug utils) и класс Drawing
. Я мог:
- имеют класс
DrawingUtils
и классDiagnosticsUtils
, но это просто пахнет плохой структурой. - выберите тезаурус и сделайте с худшим, длинным или неудобным именем, которое случайно не было принято.
- Введите имена классов на моем родном языке вместо английского.
- Спросите умных парней в StackOverflow.
Я думаю, что варианты 1-3 не обещают: (
EDIT:
Поскольку мой выбранный ответ не решает проблему окончательно (я тоже не делаю), то, что я рекомендую для людей, сталкивающихся с одной и той же ситуацией, - это спросить себя: часто будете использовать конфликтующее пространство BCL/пространство имен? Если нет, то пусть ваше имя конфликтует (как и с Диагностикой). Если да, добавьте слово, которое ограничивает возможности вашего класса/пространства имен.
На практике это означает: "Drawing"
: Что-то, что рисует. "MyCustomControlDrawing"
: то, что рисует только на MyCustomControl
. например: "WidgetDrawing"
.
EDIT2:
Другое решение, которое можно посмотреть в следующий раз: Методы расширения (любезно предоставлено Lawnmower).