Namenskonvention für abstrakte Klassen [geschlossen]

73

Sollten wir einen Teamcodierungsstandard haben, dem die Namen abstrakter Klassen ein Präfix haben Abstract? z.B

public abstract class AbstractB implements B {}
Paul McKenzie
quelle
7
Ich wette, diese Frage wird geschlossen. Es ist sehr subjektiv. Ich stimme jedoch mit Ja.
Ryan Stewart
8
@bstick: Nooooo! Schnittstellen sind Typen. Nennen Sie sie, was sie sind!
Ryan Stewart
1
@ Ryan Stewart Ich war eine kleine Zunge in der Wange.
Bstick12
1
@bstick: Ja, jemand wird dich ernst nehmen: p
Ryan Stewart
1
Ich fand es nicht subjektiv
Paul McKenzie

Antworten:

90

Ja, wenn Sie sich die Javadocs der Standardbibliothek unter http://download.oracle.com/javase/6/docs/api/ ansehen, werden Sie feststellen, dass die Liste der Klassen im unteren linken Rahmen mit beginnt abstrakte Klassen unter Verwendung der Namenskonvention, die Sie in Ihrer Frage erwähnt haben.

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

Nehmen Sie einen von ihnen, sagen Sie den ersten und überprüfen Sie seine Definition : AbstractAction. Es implementiert in Actionder Tat, was wiederum Ihrer Konvention ähnlich ist. Es ist Subklassen werden genannt wie: ClosedAction, MaximizeActionusw.

Susam Pal
quelle
3
Gegenbeispiel: java.util.Calendar
KGhatak
@ Susam Pal - Eine abstrakte Klasse ohne implementierende Schnittstelle sollte also mit 'Abstract' beginnen! Hinweis: Calander ist eine abstrakte Klasse
KGhatak
1
Ich bin mir nicht sicher, ob dies AbstractMethodErrorhier zutrifft.
zero01alpha
12

Im Allgemeinen ist jede Art von Standard eine gute Sache in einer Teamumgebung. Andernfalls könnten Teammitglieder Klassen so benennen, dass nur sie sie verstehen, und dann könnten Sie eine Mischung aus den verschiedenen Codierungsstilen der Leute erhalten, was zu Verwirrung führt.

KennyRules
quelle
Genau das habe ich mir gedacht. Ich würde es vorziehen, sie mit dem Präfix "Abstrakt" zu benennen, aber das Wichtigste ist, dem Team- / Projektcodierungsstil zu folgen.
Gábor Csikós
5

Für die Lesbarkeit klingt es nach einer guten Idee. Wenn Sie Code lesen, können Sie sofort wissen, um welche Klasse es sich handelt. Solange jeder dem Standard folgt, ist es gut.

RMT
quelle
3

Moderne IDEs zeigen beschreibenden Text an, wenn Sie mit der Maus über ein Objekt fahren. Das Präfix ist in diesem Fall redundant.

James
quelle
3
Das erfordert Javadocs, eine ganz andere Sache für ein Team, um Kämpfe im Codierungsstil zu führen.
Paul McKenzie
3

Ich werde in einer Antwort nicht Ja oder Nein sagen, aber was auch immer Sie wählen, verwenden Sie ein gutes statisches Analysewerkzeug , um dies sicherzustellen.

Ryan Stewart
quelle
2

Wie bei den meisten Fragen dieser Art: "es kommt darauf an". Ich mag Beständigkeit und Klarheit. Wenn es also für Sie und Ihren Shop funktioniert, ist es großartig. Wenn Sie jedoch über ältere abstrakte Klassen verfügen, möchten Sie diese zurückgehen und sie auf dieselbe Namenskonvention umgestalten.

ein Zug
quelle