Соглашения об именах: как назвать булеву переменную?


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

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

другой выбор будет "isNotLast". Однако это не очень хорошая практика (код завершен, стр. 269, используйте положительные имена булевых переменных).

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

11 51

11 ответов:

isBeforeTheLastItem

isInFrontOfTheLastItem

isTowardsTheFrontOfTheList

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

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

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

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

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

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

isPenultimateOrPrior

isBeforeEnd

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

Как насчет:

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

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

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

if (item.last)
    ...

do {
   ...
} until (item.last);

Я бы назвал переменную beforeLast.

два вопроса, чтобы думать о

  1. какова область действия переменной (другими словами: вы говорите о локальной переменной или поле?)? Локальная переменная имеет более узкую область действия по сравнению с полем. В частности, если переменная используется внутри относительно короткого метода, я бы не так заботился о ее имени. Когда область является большой именование является более важным.

  2. Я думаю, что есть врожденный конфликт в том, как вы относитесь к этому переменная. С одной стороны, вы говорите "false, когда объект является последним в списке", где, с другой стороны, вы также хотите назвать его "inFront". Объект, который является (не) последним в списке, не поражает меня как (не) inFront. Это я бы пошел с isLast.

Я бы пошел с isUnlast.

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