Должен ли я всегда использовать «is» в качестве префикса для логических переменных? [закрыто]

50

Должен ли я всегда использовать в isкачестве префикса для логических переменных? Как насчет логических значений, которые указывают что-то в прошлом? Должен ли я написать isInitializedили wasInitialized? Должен ли я написать для свойств IsManyMembersили HasManyMembers?

Есть ли лучшие практики? Или я должен просто написать в соответствии с английскими правилами?

Марк Твен
источник
2
Связанные (и закрытые) programmers.stackexchange.com/questions/221868/…
superM

Ответы:

54

Не совсем, так как логические значения не всегда используются, чтобы указать, что объект «является» чем-то.

«has» - это одинаково действительный префикс «was», «can» также действительны в определенных обстоятельствах, также я видел используемый суффикс «Able».

So Object herring:-
 isFish = true
 isCat = false
 hasScales = true
 hasFur = false
 canSwim = true
 wasEgg = true
 eatAble = true

Object moggy:-
 isFish = false
 isCat = true
 hasScales = false
 hasFur = true
 canSwim = false
 wasEgg = false
 eatAble = false

Все зависит от того, что делает программу читабельной.

Джеймс Андерсон
источник
37
Я думаю, что я бы выбрал canBeEaten или isEdible вместо eatAble.
kzh
3
@kzh - isEdible это хорошо! Не так уверен насчет canBeEaten, как что-то, что происходит с объектом, а не что-то, что объект может сделать. Приди Пики Я знаю :-).
Джеймс Андерсон
1
А как насчет флага, чтобы указать, разрешено ли что-то или нет? Понятно ли "AllowsExtensions"? Или «IsAllowExtensions» будет понятнее, хотя и дольше?
Обратный инженер
1
если вы используете -able в качестве суффикса, я бы не стал использовать заглавную букву как слово. например, можно носить, а не носить
.
2
@kzh: Я изначально читал eatAbleкак «умеет есть», а не «умеет есть». В общем, это неоднозначно, и его лучше избегать.
Flater
8

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

Кли
источник
3
«если треска слишком сложна для понимания», придерживаясь темы «рыба / кошка» другого ответа, который я вижу
scottyseus