Именование логических переменных для взаимоисключающих параметров, а не для отношения Истина / Ложь - PullRequest
0 голосов
/ 03 мая 2018

Я ищу способ назвать логическую переменную, которая представляет две взаимоисключающие опции, чтобы было ясно, что выбрано, когда переменная имеет значение True или False, не глядя на реализацию.

В качестве примера представьте, что ваша программа выбирает между Chicken xor Fish. В настоящее время в базе данных переменная будет называться «lChickenOrFish». Глядя на это просто, неясно, будет ли lChickenOrFish = True представлять Chicken, или если он будет представлять Fish. Чтобы узнать, вам нужно будет открыть код и найти, где он используется, и интерпретировать оттуда.

Я знаю, что вместо этого вы могли бы иметь две переменные, lChicken и lFish, но это открывает возможность наличия lChicken = True и lFish = True в одной строке, что будет ошибкой, и, следовательно, потребуется код для проверки этого .

Вы также можете просто использовать lChicken в качестве имени, и lChicken = 0 неявно означает «Рыба». Но затем, если программисту нужно знать, что такое другой вариант, он должен открыть код, чтобы найти его, что является той же проблемой, что и раньше. А в некоторых случаях может быть даже неясно, есть ли другой вариант поиска, в зависимости от того, что делает логическое значение.

Так есть ли способ сделать это понятным для программиста, который просто смотрит на базу данных SQL Server, не просматривая фактическую реализацию в коде?

1 Ответ

0 голосов
/ 03 мая 2018

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

enum FoodValue {
  Chicken = 1,
  Fish = 2
}

var dbValue = FoodValue.Chicken;

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

...