Вопрос стиля - PullRequest
       18

Вопрос стиля

2 голосов
/ 05 апреля 2010

Не могли бы вы написать что-то вроде:

enum XYZ_TYPE {X=1, Y=2, Z=3};

Я видел это, и суффикс _TYPE меня смущает в контексте enum. Есть большая вероятность, что это потому, что я не умный.

Ответы [ 5 ]

2 голосов
/ 05 апреля 2010

У меня уже есть предпочтительное соглашение, позволяющее отличать типы от других идентификаторов: я использую CamelCase с начальным капиталом для типов и строчными для других. Константы могут быть заглавными, включая значения enum.

Но "XYZ_TYPE" с любой прописной буквой - это плохое имя для перечисления. Я бы использовал enum Color {RED=1, GREEN=2, BLUE=3};, или enum FuzzyBool {yes=1, no=2, filenotfound=3};, или что-то подобное. Не REDGREENBLUE_TYPE.

В общем, я думаю, что если ваши имена выбраны правильно, вам не нужен суффикс _TYPE. Если ваши имена выбраны неправильно, и, если честно, это может быть сложно, тогда, возможно, вам это нужно, чтобы отличить тип от объекта этого типа. Может быть. Но я предпочитаю использовать кейс.

2 голосов
/ 05 апреля 2010

Я бы так не написал, но вряд ли это будет случайная ситуация. Бросьте удары и сохраните свое разочарование для вещей, которые действительно заслуживают этого, таких как петли для случая . :)

1 голос
/ 05 апреля 2010

В этом суффиксе нет ничего плохого, поскольку перечисления являются их собственными типами, они просто не являются безопасными.

XYZ_TYPE myXYZ = X;
if(myXYZ == 1) { } //This is what I meant by not strongly typed.

C ++ 0x исправляет перечисления, поэтому они строго типизированы.

Просто следуйте тому, что говорит ваш стандарт кодирования об именах типов enum. В конце концов, это не имеет значения, если оно соответствует вашему стандарту кодирования, и это логично.

1 голос
/ 05 апреля 2010

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

0 голосов
/ 05 апреля 2010

Мы бы просто назвали его XYZ, чтобы оно соответствовало нашему соглашению о наименовании типов в CamelCase с лидирующей заглавной буквой. Перечислимые значения будут eX, eY и eZ, следуя соглашению о присвоении имен и переменных в CamelCase с начальной строчной буквой, и нашему соглашению всех значений перечисления, начиная с e (константы начинаются с k, и других префиксов в общем использовании нет. Мы используем очень ограниченный набор Light Side Hungarian.)

Как и во всех других соглашениях, ваш пробег может отличаться. Но суффиксы типов с _TYPE кажутся техникой новичка, которая добавляет мало значения визуальному беспорядку, который стоит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...