This situation probably is not entirely uncommon to some of you: you have some functionality to put in a class but the perfect name (*) for that class is taken by one of the classes in the System
namespace or other namespace/class that's not yours but you're using
/import
ing.
(*) By perfect I mean small, concise and clear names.
For instance I have an Utils
class that has a Diagnostics
(mostly debug utils) class and a Drawing
class. I could:
- have a
DrawingUtils
class and aDiagnosticsUtils
class, but that just smells like bad structure. - pick a thesaurus and be done with an worse, longer or awkward name that's casually still not taken.
- Write class names in my native language instead of English.
- Ask the smart guys at StackOverflow.
I think options 1-3 aren't promising :(
EDIT:
Since my chosen answer doesn't address the problem definitively (neither I do), what I'd recommend for people facing the same situation is to ask yourselves: Will you frequently use the conflicting BCL class/namespace? If no, then let your name conflict (as I did with Diagnostics). If yes, add a word that limits the possibilities of your class/namespace.
In practice, this means:
"Drawing"
: Something that draws.
"MyCustomControlDrawing"
: Something that draws only on MyCustomControl
. e.g.: "WidgetDrawing"
.
EDIT2:
Another solution to take a look next time: Extension Methods (courtesy of Lawnmower).