オブジェクトがリストの最後にあるときにfalseを返すブール値には、適切な変数名が必要です。
私が思いつく唯一のまともな名前は「inFront」ですが、私はそれが十分に説明的であるとは思いません。
別の選択肢は「isNotLast」です。ただし、これは良い方法ではありません(コードの完了、269ページ、正のブール変数名を使用)。
変数の定義を変更できることを認識しています。そのため、オブジェクトが最後で変数 'isLast'を呼び出すときにtrueが返されますが、最初の説明があればこのタスクが簡単になります。
isBeforeTheLastItem
isInFrontOfTheLastItem
isTowardsTheFrontOfTheList
多すぎるかもしれませんが、それらはあなたにアイデアを与えるのに役立つかもしれません。
私の投票は、IsLastという名前を付けて機能を変更することです。それが本当にオプションではない場合、IsNotLastのままにします。
Code Complete(正のブール変数名を使用)に同意します。また、ルールが破られるようになっていると思います。重要なのは、絶対に必要な場合にのみそれらを壊すことです。この場合、代替名はどれも、ルールを「破る」名前ほど明確ではありません。そのため、これはルールを破ることで問題ない場合の1つです。
hasFollowingItems?またはhasFollowingXXXXsで、XXXXはリスト内のアイテムが何であるか?
個人的に何よりも、ロジックを変更するか、ビジネスルールを調べて、潜在的な命名を指示しているかどうかを確認します。
なぜなら、ブール値を切り替える実際の条件は、実際には「最後」であるという行為だからです。ロジックを切り替えて、「IsLastItem」などの名前を付ける方がより好ましい方法だと思います。
isPenultimateOrPrior
isBeforeEnd
Haskellはinit
を使用して、リストの最後の要素(基本的にtail
の逆)を除くすべてを参照します。 isInInit
は機能しますか、それとも不透明すぎますか?
単純なセマンティック名はlast
です。これにより、次のようなコードは常に正のコードになります。
if (item.last)
...
do {
...
} until (item.last);
どうですか:
hasSiblings
or isFollowedBySiblings (or isFolloedByItems, or isFollowedByOtherItems etc.)
or moreItems
「ルール」にブレーキをかける習慣を身に付けてはいけない場合でも、何かを達成するための最良の方法は、ルールの例外を作成すること(コード完了ガイドライン)である場合があり、あなたの場合、変数に名前を付ける- isNotLast
考慮すべき2つの問題
変数のスコープは何ですか(つまり、ローカル変数またはフィールドについて話しているのですか?)?ローカル変数は、フィールドと比較して狭いスコープを持ちます。特に、変数が比較的短いメソッド内で使用される場合、その名前はあまり気にしません。スコープが大きい場合、ネーミングがより重要です。
この変数の扱い方には、本質的な矛盾があると思います。一方では「オブジェクトがリストの最後にある場合はfalse」と言いますが、他方では「inFront」とも呼びます。リストの最後にある(ない)オブジェクトは、inFrontとして(ない)印象を与えません。これは、isLastで行います。
変数beforeLast
を呼び出します。
オブジェクトがリストの最後にある場合にfalseを返すブール値の適切な変数名が必要です。
最新の PEP 8 Style Guide for Python Code によると、変数名は「読みやすくするために、必要に応じて単語をアンダースコアで区切って小文字にする必要があります。」例えば、変数に名前を付ける必要があります.
is_not_last
他のプログラミング言語は、変数にlowerCamelCaseスタイルを使用します(firstName、lastNameなど)。ただし、Pythonはunderscore_separatedスタイルを好みます。