メソッド名と関数名の「A」、「an」、「the」:あなたはどう思いますか?[閉まっている]


16

私たちの多くは、このようなメソッド名を見たことがあります。

  • UploadTheFileToTheServerPlease
  • CreateATemporaryFile
  • WriteTheRecordToTheDatabase
  • ResetTheSystemClock

つまり、文法的にも正しい英語の文であり、純粋に散文のように読めるように余分な単語を含むメソッド名。個人的には、私はそのような「リテラル」メソッド名の大ファンではなく、できる限り明確でありながら、簡潔であることを好みます。私にとって、 "a"、 "an"、および "the"のような単語は、メソッド名では単純に不自然に見えるだけで、有用なものを追加することなく、メソッド名を不必要に長くします。前の例では、次のメソッド名を使用します。

  • UploadFileToServer
  • CreateTemporaryFile
  • WriteOutRecord
  • ResetSystemClock

私の経験では、これはより長い名前を書き出す他のアプローチよりもはるかに一般的ですが、私は両方のスタイルを見て、これら2つのアプローチに対する他の人々の考えを知りたいと思っていました。

だから、あなたは「散文のように読めるメソッド名」キャンプか「悪い意味の外国語から英語への翻訳のように大声で読むメソッド名」キャンプにいますか?


7
のような名前のメソッドを見たことはありませんWriteTheRecordToTheDatabase。誰かがこれをチェックインした場合、彼らは真剣に話を聞くでしょう。
ティムロビンソン

13
Please」?うわー
コンフィギュレー

3
私は、wordpressに「the_contents()」、「get_the_post()」などのテンプレートヘルパー関数があることを付け加えたいと思います。
カーソンマイヤーズ

1
@Carson Myers Hah、これは完璧な実例です。WordPressのコードを最後に見たときの記憶を
隠していたに違いない:

回答:


21

私は、散文メソッドが1つの例外を除いて吸うことに同意します。

ユニットテストケース

通常、これらはコードで呼び出されることはなく、テストレポートに表示されます。そのため、もう少し散文を付けて読み出しを行うと便利です。

  • AddedACustomerOrderFailWhenCustomersIdIsInvalid:失敗
  • OutOfBoundsPriceReturnsAnError:合格
  • CanDeleteAnEventFromASeason:合格

これも控えめに行う必要がありますが、文法的な追加により、合格したものと失敗したものを表現するのが少し簡単になる少なくとも1つのケースとして見ることができます。もちろん、あなたの言語/フレームワークがメソッド名以外のテスト記述のテスト記述のための優れたメカニズムを提供しない限り、これは無視されます。


1
+1は、散文メソッド名が実際に有益な場合の良い例です。おもしろいです、あなたがそれについて言及したので、私特にユニットテスト名を書くときにこれ行ったので、具体的には後でテストを実行したときにテストが何をしていたのかを知っていました。
マイクスプロス

これは便利で、Roy Osheroveが提案したMethodUnderTest_Condition_ExpectedBehaviour 単体テストの命名規則に適合しています。例AddOrder_WithInvalidCustomerId_FailsCreateItem_WithOutOfBoundsPrice_ReturnsErrorおよびDeleteEvent_EventExistsInSeason_Succeeds
-StuperUser

@StuperUserの期待される動作、あなたは実際に期待されるテスト結果を出したので、メソッドが何を返すのかわからない。
ediblecode

@danRhul公正な点、私は十分に明確ではありませんでした。.._AdditionFailsそして.._DeletionSucceeds良いはずです。メソッドの結果は記載しましたが、指摘するように、合格/不合格の用語のテストと混同される可能性があります。
StuperUser

10

オフィススペースからローレンスを言い換えると...

いや、いや、この辺で働いていた誰かが 'UploadTheFileToTheServerPlease'という関数を名付けたら、彼は彼を蹴り飛ばしたと信じています。


10

そのような「長い」名前は散文のようには聞こえません。単独の場合-おそらく、残りのコードを伴って、彼らは単に混乱を起こします。見てみな:

bool ResultOfTheUpload
      = UploadTheFileToTheServerPlease(TheNameOfTheFile, TheServersAddress);

Yuuuuk!..

これは有効な英語のテキストではなく、どのプログラミング言語でも1つのようには見えません。したがって、記事にバイトを費やす意味はありません。


1
このアプローチが嫌いな理由の良い例です!質問を書いたとき、私は自分自身が散文のように聞こえるだけでメソッド名に焦点を当てていましたが、あなたに同意します:呼び出しコードを散文のように実際に読むのはかなり難しいので、個々の関数名を書かれたように聞こえるのは無意味です英語。
マイクスプロス

3
私が提案するbool ResultOfTheGentlyUploadOfTheFileToTheServer
Wizard79

私は、「theVariable」と「aMethod」に従う必要がある企業標準を作成した人と仕事をしました。この同じ人は、コードのすべての行を垂直に並べるのも好きでした。
クリス

7

プログラマーの観点からすると、「UploadFileToServer」は「UploadTheFileToTheServerPlease」よりも読みやすく、理解しやすいものです。

プログラミングでは、英語の文法、読みやすさ、理解しやすさよりも重要です!


完全に同意..最初のスタイルで書かれたコードを数日間読んだ場合、それが私を夢中にさせると確信しています。
Naveen

@Naveen:私はこのようなコードを使って作業しましたが、最初に手に入れたのは、これらすべてのメソッドの名前を変更したことです。そして、それだけで開発したかどうか、私にはわからないんだけど、私はあなたがすなわち文章、としてそれらを書くときの機能は、複数の物事を行うようにする傾向があると思いますUploadTheFileAndProcessItAndEmailTheOrdersToTheCustomersうまくいけば何が、非常に現実の生活の中でその悪いが。
マイクスプロス

@Mikeその後、メソッドを2つの異なるメソッドにリファクタリングします;)
Gopi

2

私の人生がどのくらいのタイプミスを抱えているかを考えると、

* UploadTehFileToTehServerPleaz
* WriteTehRecordToTehDatabase
* ResetTehSystemClock
* ICanHazTehCheezburger

まじめな話、クラス名も見てみました。クラスが「ファイル」と呼ばれる場合、おそらく次のようになります。

*UploadToServer
*DownloadFromServer

だからそれは

   File file = new file;
   file.UploadtoServer(ServerAddress);

ほんの些細な例ですが、うまくいけばそれで十分に説明できます。


へへ。私は実際に、「英語」の命名パターンに従ってメソッド名に「Teh」が忍び寄るのを見ました。2番目の点については、メソッド名の冗長性が私のもう1つの厄介な問題だと完全に同意します(File.UploadFileToServer... ugh)。
マイクスプロス

0

個人的には気にしません。私はそれらを見てきましたが、彼らは私を悩ませません。別のプログラマーが彼らについて大声で叫ぶまで、私はそれらについてさえ考えませんでした。誰かがあまり重要ではないことをあまり気にしないのは衝撃的でした。彼は実際にそれについて怒っていたということです。しかし、それは約11年前の私のキャリアの早い時期であり、それ以来、開発者が些細なことに怒っていることは実際には非常に一般的であることがわかりました。開発者のマネージャーがこれほどうまく報酬を得るのはこのためです。彼らは毎日開発者に対処しなければなりません。

そして、「UL_FlToSrv」よりもむしろそれを見たいと思います。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.