web-dev-qa-db-ja.com

関数名を前置詞で終わらせるのは良い習慣ですか?

名前の前置詞が最初の(ほとんどの場合のみ)パラメーターに適用されるメソッドの例を見てきました。しかし、他の例では、この種の命名規則を使用していません。どちらがより読みやすいと思いますか?たとえば、次のようなメソッドを作成する必要があります:

getColorFor(Player player)

またはこのように?

getColor(Player player)

このシナリオでは、メソッドはパラメーターとして指定されたプレーヤーを表す色を返します。

7
user3738870

意味のある説明を追加する場合、または「精神」に適合する場合... はい

.NETの OrderBy() および ElementAt() が良い例です。

個人的に、私はlikeを読み取るコードかなり英語に似ています。誰かのコードを読み取ることから、大量の推測、ホバリング、掘り起こし、そして難解な知識を必要としますwhenそれは何をするのかはっきりと教えてくれます。

そして、私が知る限り、 このように感じるのは私だけではありません。

19
svidgen

短い方が良いですが、短いWordに最適な場合は明確化が必要になることがあります。ユーモラスな例:

var translator = new Translator();
var result = translator.French("sister");
//throws TargetIsMarriedException

これの方が良い:

var translator = new Translator();
var result = translator.FrenchFor("sister");
//sets result to "soeur"

これはおそらく、Microsoft独自の複合名の例の背後にある理由です。次に例を示します。

@html.TextBoxFor( m => m.Field );

たとえば、最初の単語が名詞または動詞のいずれかである場合、これは特に役立ちます。次に例を示します。

graphics.Color(x,y);

どちらかかもしれません

graphics.ColorOf(x,y);

または

graphics.SetColor(x,y);
7
John Wu

面白いアイデアのようですが、やりすぎだと思います。私はそれが使用されるのを見たことがありません。

名前に完全な英語の構文を再形成する必要はありません。特に値が追加されない場合は特にそうです。短い名前は初心者のプログラマーにとっても完全に明白です。

2
Aganju

興味深い質問です。

@Aganjuはやり過ぎだと同意します。

_()_だけでは、これらの引数の "with"、 "by"、または "in the context of"などの意味があるため、関数を指定する識別子のテキストでは必要ありません。

多くの言語では、_()_なしで識別子getColorを使用すると、それは呼び出しではなく関数またはメソッド自体を参照します。たとえば、関数自体をどこか他の人が使用できるようにパラメータとして渡したい場合などです。正式に_()_は、その関数に引数を「適用」することを意味すると思います。これは、関数型プログラミング指向の言語で時々見られ、JavaScriptにも、たとえば、bindapplyがあります。

OOPを使用している場合は、次のようになります。player.getColor()これにより、getColorが実行されていることがある程度明確になりますbyplayer(おそらく他の引数のコンテキストで( "with")を取る場合).

さらに、前置詞を追加するという概念は、おそらくより多くのパラメーターにうまく対応しません。

すべてではありませんが、一部の言語では呼び出し側で実際の引数に(仮パラメーター名によって)ネーミングを提供しているため、getColor(for:=player)を実行できます。これにより、説明的な名前を付けることができます(前置詞以上)複数のパラメータ。

0
Erik Eidt