интерфейсы: Foo
Причина: Ваш код не должен знать, что они имеют дело с интерфейсом. Написание «IFoo» делает именно это. Вместо этого Foo дает понять, что «Foo» является общим, а объектом позади него может быть «NumFoo» или «StrFoo». Коду действительно не нужно.
абстрактные классы: AbstractFoo
Причина: ваш код никогда не будет использовать этот класс напрямую. Вы всегда будете подклассифицировать этот класс, чтобы сделать любые классы, которые используются другим кодом. Поэтому программисту должно быть ясно, что класс является абстрактным. И какой лучший способ назвать его Abstract! Места, где вам нужно использовать ссылки типа AbstractFoo, вы должны пересмотреть вместо этого интерфейс. (Конечно, это невозможно в C++)
Enums: FooType или FooEnum. Лично FooType лучше, потому что Type более легко относится к «реальному миру», который делает Enum.
Cheers!
Интерфейсы, насколько мне известно, имеют соглашение об именах JavaBeans, которое диктует, что их следует называть как прилагательное, обычно заканчивающееся на 'able'. Поэтому, если 'Foo' было действием, интерфейс должен быть назван' Fooable'. –
@ RudiKershaw: Не всегда ... и мой опыт в том, что со временем это уменьшилось. Контр-примеры включают «CharSequence», все коллекции, различные DOM-интерфейсы. –
Соглашения JavaBeans применимы только для кода, написанного для программных компонентов многоразового использования плагинов, поэтому многие соглашения, как представляется, в значительной степени игнорируются в стандартных целях.Но мне нравится использовать «Fooable», именование, потому что это просто помогает мне отличить от обычных классов с первого взгляда. –