Une question ouverte et délicate, mais c'est un problème auquel je suis toujours confronté:
Les logiciels faciles à entretenir et à utiliser sont bien conçus. Essayer de rendre une conception intuitive signifie nommer vos composants de manière à ce que le prochain développeur puisse déduire la fonction du composant. C'est pourquoi nous ne nommons pas nos classes "Type1", "Type2", etc.
Lorsque vous modélisez un concept réel (par exemple, un client), cela est généralement aussi simple que de nommer votre type après la modélisation du concept réel. Mais lorsque vous construisez des choses abstraites, qui sont plus orientées système, il est très facile de manquer de noms qui sont à la fois faciles à lire et à digérer.
Cela empire (pour moi) en essayant de nommer des familles de types, avec un type de base ou une interface qui décrit ce que les composants doivent faire, mais pas comment ils fonctionnent. Cela conduit naturellement chaque type dérivé à essayer de décrire la saveur de l'implémentation (par exemple IDataConnection
et SqlConnection
dans le .NET Framework), mais comment exprimer quelque chose de compliqué comme "fonctionne par réflexion et recherche d'un ensemble spécifique d'attributs"?
Ensuite, lorsque vous avez finalement choisi un nom pour le type que vous pensez décrire ce qu'il essaie de faire, votre collègue demande "WTF est-ce que cela DomainSecurityMetadataProvider
fait réellement ? "
Existe-t-il de bonnes techniques pour choisir un nom bien intentionné pour un composant, ou comment créer une famille de composants sans obtenir de noms confus?
Existe-t-il des tests simples que je peux appliquer à un nom pour mieux comprendre si le nom est "bon" et devrait être plus intuitif pour les autres?