Определение имен вместо "true" и "false" для типа bool - PullRequest
1 голос
/ 07 января 2011

Я хочу использовать bool для переключения между загрузкой X и загрузкой Y из файла. Я не хочу использовать «true» и «false», потому что это не делает код понятным. Я бы предпочел использовать что-то вроде LOAD_X или LOAD_Y ... Является ли следующий код способ сделать это? Или есть лучший способ?

#define LOAD_X true
#define LOAD_Y false

Редактировать: Хорошо, так что, похоже, enum это путь ... но какой должна быть схема именования? Как все заглавные буквы или строчные буквы для первого слова, прописные буквы для следующих слов и т. Д.

Ответы [ 4 ]

6 голосов
/ 07 января 2011

Вы можете использовать перечисление:

enum LoadType {
    LoadY,
    LoadX
};

Или, возможно, вы предпочтете ограничить область действия перечислителей, используя пространство имен:

namespace LoadType {
    enum Type {
        LoadY,
        LoadX
    };
};

Преимущество использования перечисленияв том, что если ваша функция принимает LoadType (или LoadType::Type во втором примере), вы не можете передать ей произвольное целое число или bool;Вы можете передать его только одному из перечислителей (или что-то явно приведенное к типу перечисления, что действительно легко обнаружить в обзоре кода).

3 голосов
/ 07 января 2011

Я бы использовал перечисление вместо. То, что есть два варианта, не означает, что тип должен быть bool

enum load_type { loadX, loadY };
3 голосов
/ 07 января 2011

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

enum LOADMODE {
    LOAD_X,
    LOAD_Y
};

По крайней мере, предпочитаю константы макросам:

const bool LOAD_X = true;
const bool LOAD_Y = false;

Они будут соблюдать правила области видимости и не будут молчаливоломать вещи, не понимая, когда имена конфликтуют.

0 голосов
/ 07 января 2011

Я думаю, что Load X IS LOAD. Строчные буквы выглядят более дружелюбно, можно выбирать яркие цвета. enum LoadType { LoadY, LoadX все в порядке.

...