0

例(JavaScriptの場合):

//Not that I would ever add a method to a base JavaScript prototype... 
//(*wink nudge*)...
Array.prototype.lastIndex = function() {          
  return this.length - 1;
}

console.log(array[array.lastIndex()]);

vs

console.log(array[array.length - 1]);

技術的に言えば、後者の方法は1つ少ない文字を使用しますが、マジックナンバーも使用します。確かに、この場合、読みやすさは実際には影響を受けないかもしれませんが、マジックナンバーは最悪です。どちらを使用するのが良いですか?

4

4 に答える 4

6

私は、多くの場合、実際には「マジックナンバー」として数えられないという意見1です0。最後のアイテム(つまり)のインデックスを参照している場合、それは間違いなく、私がマジックナンバーlength - 1を考慮しない1回です。1

于 2012-08-01T21:28:56.037 に答える
1

異なる言語には、配列の最後の要素にアクセスする独自の慣用的な方法があり、それを使用する必要があります。たとえば、Groovyでは次のようになります。

myArray.last()

Cにいる間、次のことを行う可能性が非常に高くなります。

my_array[len - 1]

Common Lispでは、次のようなものです。

(first (last my_list))
于 2012-08-01T21:34:08.787 に答える
1

1は魔法の数ではないという@DragoonWraithに同意します。ただし、それはマジック ナンバーに関するものではなく、読みやすさに関するものです。最後のインデックス使用が必要myArray.lastIndex()な場合、最後の要素使用myArray.last()またはが必要な場合myArray.lastElement()。よりも読みやすく理解しやすいmyArray[myArray.length - 1]

于 2012-08-02T06:47:03.633 に答える
0

私の見解では、ほとんどのプログラマーが慣れ親しんでいるスタイルを探すべきです。この種の配列構文を使用する言語 (つまり、C の影響を受けた命令型言語) で 2 週間以上プログラミングを行っている人なら誰でも、配列が 0 から始まるインデックス付けを使用するという考えに慣れるでしょう。コードは意味を理解しarray[array.length-1]ます。

メソッド呼び出しは少し標準的ではなく、言語固有であるため、その言語に完全に慣れていない場合は、理解にもう少し時間がかかります。length-1これだけでも、私はスタイルを好むようになります。

于 2012-08-01T21:37:32.810 に答える