Соглашения об именах: Как назвать логическую переменную? - PullRequest
56 голосов
/ 04 августа 2009

Мне нужно хорошее имя переменной для логического значения, которое возвращает false, когда объект является последним в списке.

Единственное приличное имя, которое я могу придумать, это «inFront», но я не думаю, что это достаточно описательно.

Другим выбором будет isNotLast. Это не очень хорошая практика (Code Complete, стр. 269, Использовать положительные логические имена переменных).

Мне известно, что я могу изменить определение переменной. Таким образом, true возвращается, когда объект является последним и вызывает переменную 'isLast', однако это облегчило бы эту задачу, если бы у меня было первое объяснение.

Ответы [ 12 ]

54 голосов
/ 04 августа 2009
isBeforeTheLastItem

isInFrontOfTheLastItem

isTowardsTheFrontOfTheList

Может быть, слишком многословно, но они могут дать вам идеи.

32 голосов
/ 04 августа 2009

Мой голос - назвать IsLast и изменить функциональность. Если это действительно не вариант, я бы оставил имя как IsNotLast.

Я согласен с Code Complete (используйте положительные логические имена переменных), я также считаю, что правила созданы для того, чтобы их нарушать. Ключ в том, чтобы сломать их только тогда, когда вам абсолютно необходимо. В этом случае ни одно из альтернативных имен не является таким ясным, как имя, которое «нарушает» правило. Так что это один из тех случаев, когда нарушение правил может быть нормальным.

17 голосов
/ 04 августа 2009

hasFollowingItems? или hasFollowingXXXXs, где XXXX - это любой элемент в вашем списке?

13 голосов
/ 04 августа 2009

Лично больше всего я бы изменил логику или посмотрел бы на бизнес-правила, чтобы понять, диктуют ли они какое-либо потенциальное наименование.

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

4 голосов
/ 04 августа 2009

isPenultimateOrPrior

isBeforeEnd

2 голосов
/ 14 июня 2012

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

if (item.last)
    ...

do {
   ...
} until (item.last);
2 голосов
/ 04 августа 2009

Haskell использует init для ссылки на все элементы, кроме последнего элемента списка (в основном обратное значение tail); isInInit сработает, или это слишком непрозрачно?

1 голос
/ 04 августа 2009

Как насчет:

 hasSiblings
 or isFollowedBySiblings (or isFolloedByItems, or isFollowedByOtherItems etc.)
 or moreItems

Хотя я думаю, что даже если вы не должны привыкать к нарушению «правил», иногда лучшим способом достижения чего-либо может быть исключение из правила (руководящие принципы Code Complete), а в вашем случае - имя переменная isNotLast

0 голосов
/ 09 мая 2019

Мне нужно хорошее имя переменной для логического значения, которое возвращает false когда объект является последним в списке.

В соответствии с самым последним Руководством по стилю PEP 8 для кода Python имена переменных «должны быть строчными, со словами, разделенными подчеркиванием, чтобы улучшить читаемость». Таким образом, вы должны назвать свою переменную, например,

is_not_last

Другие языки программирования используют стиль lowerCamelCase для переменных (например, firstName, lastName). Однако Python предпочитает стиль underscore_separated.

0 голосов
/ 02 октября 2012

Я бы пошел с isUnlast.

Это коротко, содержательно и прекрасно описывает ситуацию!

...