web-dev-qa-db-fra.com

convention de dénomination de classe abstraite

Devrions-nous avoir une norme de codage d'équipe selon laquelle les noms des classes abstraites ont le préfixe Abstract? par exemple.

public abstract class AbstractB implements B {}
60
Paul McKenzie

Oui, en fait, si vous regardez les javadocs de la bibliothèque standard à http://download.Oracle.com/javase/6/docs/api/ vous constaterez que la liste des classes dans le cadre en bas à gauche commence par des classes abstraites utilisant la convention de dénomination que vous avez mentionnée dans votre question.

AbstractAction
AbstractAnnotationValueVisitor6
AbstractBorder
AbstractButton
AbstractCellEditor
AbstractCollection
AbstractColorChooserPanel
AbstractDocument
AbstractDocument.AttributeContext
AbstractDocument.Content
AbstractDocument.ElementEdit
AbstractElementVisitor6
AbstractExecutorService
AbstractInterruptibleChannel
AbstractLayoutCache
AbstractLayoutCache.NodeDimensions
AbstractList
AbstractListModel
AbstractMap
AbstractMap.SimpleEntry
AbstractMap.SimpleImmutableEntry
AbstractMarshallerImpl
AbstractMethodError
AbstractOwnableSynchronizer
AbstractPreferences
AbstractProcessor
AbstractQueue
AbstractQueuedLongSynchronizer
AbstractQueuedSynchronizer
AbstractScriptEngine
AbstractSelectableChannel
AbstractSelectionKey
AbstractSelector
AbstractSequentialList
AbstractSet
AbstractSpinnerModel
AbstractTableModel
AbstractTypeVisitor6
AbstractUndoableEdit
AbstractUnmarshallerImpl
AbstractWriter

Prenez l'un d'entre eux, par exemple le premier, et vérifiez sa définition: AbstractAction. Il implémente en effet Action qui est à nouveau similaire à votre convention. Ses sous-classes sont nommées comme: ClosedAction, MaximizeAction, etc.

81
Susam Pal

En général, tout type de norme est une bonne chose en équipe. Sinon, les membres de l'équipe pourraient nommer les classes de manière à ce qu'ils soient les seuls à comprendre et vous pourriez alors obtenir un mélange des différents styles de codage des gens, ce qui crée de la confusion.

12
KennyRules

Pour la lisibilité, cela semble être une bonne idée. En lisant le code, vous pourrez tout de suite savoir ce qu'est la classe. Tant que tout le monde suit la norme, c'est bien.

5
RMT

Les IDE modernes afficheront un texte descriptif lorsque vous survolerez un objet. Le préfixe est redondant dans ce cas.

3
James

Je ne dirai pas oui ou non dans une réponse, mais quoi que vous choisissiez, utilisez un bon outil d'analyse statique pour vous en assurer.

3
Ryan Stewart

Comme pour la plupart des questions de ce type: "ça dépend". J'aime la cohérence et la clarté, donc si cela fonctionne pour vous et votre boutique, tant mieux. Cependant, si vous avez des classes abstraites héritées, vous voudrez alors revenir en arrière et les refactoriser à la même convention de dénomination.

2
atrain