Есть ли какая-либо разница, когда вы называете аргумент «switch» или «flag»? - PullRequest
0 голосов
/ 02 июня 2018

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

В целом, правильнее ли называть этот аргумент "переключатель" или "флаг" или что-то еще?Есть ли консенсус, и если да, есть ли подразумеваемая разница между этими терминами?

Я слышал, что эти термины взаимозаменяемы, но недавно кто-то сказал, что в то время как «переключатель» выбирает одно из двух вариантов поведения, «флаг» выбирает одно из нескольких вариантов поведения.

1 Ответ

0 голосов
/ 08 июня 2018

В старые времена компьютеров до того, как у них были компиляторы, они использовали для ввода значений в компьютеры с помощью ручных переключателей, каждый из которых представлял один бит.Теперь, поскольку типичные процессоры не имеют типа данных для одного бита, они обычно представлены с использованием целого байта, например, в C unsigned char обычно.При обработке булевых значений не нужно учитывать их положение в значении.Кроме того, ряд операций со значениями bool приводит к единственному значению bool.

Насколько мне известно, термин flag происходит от флагов, регистрируемых в компьютерах, где каждый флаг представляет один бит.Однако с флагами они группируются по размерам в зависимости от размера регистра процессора.

Другое распространенное использование флага - с типами перечисления.При обработке значений флагов-перечислений необходимо учитывать их положение в значении.Кроме того, ряд операций со значениями флага перечисления приводит к значению флага перечисления, а не к одному значению bool.

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

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

...