web-dev-qa-db-ja.com

三人称動詞はいつ使うのですか? (PlayOnAwakeまたはPlaysOnAwake)

最初にいくつかの例:

var val = obj.GetValue();
var can = obj.CanPlay;
var has = obj.HasValue;
var val = obj.RequiresConstantRepaint(); // From Unity
var val = obj.PlayOnAwake; // From Unity
class RequireComponentAttribute // From Unity

ご覧のとおり、メソッドは通常、一人称動詞を使用しますが、常に使用するわけではありません。

プロパティは通常thrid-personを使用しますが、常に使用するわけではありません。

私の例ではクラスRequireComponentAttributeがあり、一人称動詞を使用しています。 (ここに別の問題があります:クラスは通常動詞を使用しません。しかし、属性については多分それは普通です。)

一人称動詞または三人称動詞のどちらを選択するかについてのルールはありますか?

4
Denis535
_var val = obj.GetValue();
var val = obj.PlayOnAwake; // From Unity
_

それは一人称ではなく、 命令的 です。簡単に言えば、それはコマンドです。

  • GetValue()値を取得!
  • PlaySound()このサウンドを再生してください!
  • DeleteFile()そのファイルを削除してください!

これらの命名は、メソッド、特にタスクを実行するメソッド(既知の値を返すのではなく)に使用されます。


_var has = obj.HasValue;
_

あなたが三人称と呼んでいるものは、好奇心旺盛です。 question 、具体的にはyes/noの質問を投げかけます。これは、booleanの性質を表しているためです。

  • isReadOnlyこのファイルは読み取り専用ですか?
  • requiresConstantRepaintこのオブジェクトには定数の再描画が必要ですか?
  • isAdminユーザーは管理者ですか?

これらの命名はブール値に使用されます。これは、フレージングの「はい」/「いいえ」の性質がブール値の真/偽の性質を反映しているためです。


_var val = obj.RequiresConstantRepaint(); // From Unity
_

ブール戻り値が唯一の目的であるメソッドがいくつかあります。これらのメソッドは、メソッド(命令)命名スキームではなくブール(質問)命名スキームに従う傾向があり、真/偽(はい/いいえ)の区別を提供する目的をさらに強調します。


_class RequireComponentAttribute // From Unity
_

属性は少し異なるアプローチに従います。それらの名前付けは一貫性がなく、前述のメソッド/ブールの名前付けよりも意味論的な傾向が少ないことがよくあります。

  • _[XmlIgnore]_は必須の命令です( "XML形式ではこれを無視してください")
  • _[Fact]_は名詞です
  • _[Obsolete]_は形容詞です

属性は通常、クラス/メソッド/プロパティに付加された「特別な」説明として読み取られるため、最も一般的には、名詞と形容詞が使用されます。ただし、前述のはるかに従来型のメソッド/ブールの命名と比較して、ここに明確な線はありません。

14
Flater

Flaterの answer とMartin Maatのコメントが好きです。しかし、私は答えにはもっと具体的なルールがあるべきだと思います。

だから私はそれを理解する方法を説明しようとします。

プロパティとメソッドをカテゴリに分けましょう:

  • Marker命令動詞、名詞、形容詞)-いくつかの属性を設定できるようにすることを目的としています/オブジェクトの特性。 通常は属性(注釈)です。ただし、これもプロパティである場合があります。例:_(Will)PlayOnAwake(Attribute)_、_(Will)CloseWhenError(Attribute)_、IgnoreXml(Attribute)RequireComponent(Attribute)Background(Attribute)Nullable(Attribute)

  • Statethird-person verb)-ある状態についてオブジェクトに質問できるようにすることを目的としています。または、オブジェクトの状態を設定します。例:HasValueIsInitializedIsDisposedIsPlayingAreEqual(a, b)Contains(value)RequiresComponent

  • //データ名詞、形容詞)-オブジェクトがデータを保存/提供できるようにすることを目的としています。例:ChildrenParentContentImage

  • コマンド命令的な動詞)-オブジェクトが何かをしていると言うことを意図しています。例:SetValue(value)GetValue()Initialize()Dispose()Play()

注:マーカーと状態は質問/ステートメントと見なされます。ステートメントが正しい/間違っている場合、true/falseを返します。

1
Denis535