2011-07-28 3 views
44

Должен ли у нас стандартный код кодирования, что имена абстрактных классов имеют префикс Abstract? напримерусловное обозначение именования классов

public abstract class AbstractB implements B {} 
+6

Я уверен, что этот вопрос будет закрыт. Это очень субъективно. Я голосую, да. –

+0

Но если ваш интерфейс B не будет называться InterfaceB по тому же стандарту – bstick12

+7

@bstick: Nooooo! Интерфейсы - это типы. Назовите их такими, какие они есть! –

ответ

62

Да, на самом деле, если вы посмотрите на javadocs стандартной библиотеки по адресу http://download.oracle.com/javase/6/docs/api/, вы обнаружите, что список классов в нижнем левом фрейме начинается с абстрактных классов, используя соглашение об именах, упомянутое в вашем вопросе.

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 

Возьмите любой один из них, скажем, первый, и проверить его определение: AbstractAction. Он действительно реализует Action, который снова похож на ваше соглашение. Это подклассы названы как: ClosedAction, MaximizeAction и т.д.

+2

counter example: java.util.Calendar – KGhatak

+0

@ Susam Pal - Итак, абстрактный класс без интерфейса реализации должен начинаться с 'Abstract'! Примечание: Calander - абстрактный класс – KGhatak

5

Для читаемости это звучит неплохо. При чтении кода вы сразу узнаете, что такое класс. Пока все следуют стандарту, это хорошо.

11

Как правило, любой тип стандарта - это хорошая вещь в настройке команды. В противном случае члены команды могут называть классы таким образом, что только они понимают, а затем вы можете получить сочетание разных стилей кодирования людей, что приводит к путанице.

+0

Это именно то, что я думал. Я бы предпочел называть их абстрактным префиксом, но самое главное - придерживаться стиля команды/проекта. –

4

Современные IDE будут всплывать описательный текст при наведении на объект. В этом случае префикс избыточен.

+2

, который требует javadocs, целую «черную вещь» для команды, которая сражается за битвы в стиле кодирования. –

2

Я не буду говорить яй или нет в ответ, но что бы вы ни выбрали, используйте хороший static analysis tool, чтобы обеспечить его.

2

Как и большинство вопросов этого типа: «это зависит». Мне нравится последовательность и ясность, поэтому, если это сработает для вас и вашего магазина, отлично. Однако, если у вас есть устаревшие абстрактные классы, вы захотите вернуться и реорганизовать их на одно и то же соглашение об именах.

Смежные вопросы