問題の説明
関数のメソッド名について考えることがよくあります。オブジェクトの状態を変更または取得するセッターとゲッターのように。オブジェクトの使用方法が間違っているのかもしれませんが、setter と getter の使用がうまくいかない場合がよくあります。具体的な質問がいくつかありました。
質問
- 標準化されたメソッド名を使用するのが好ましいですか、それとも解決している問題のドメインにあるメソッド名を使用するのが好まれますか? (例えば、ゲームでは boolean の win、isWinner() を使用できます)。
- 略語が適切なのはいつですか? また、どのように略す必要がありますか?たくさん書かなければならないときに略語を作成していることに気付くことがよくありますが、それは悪い基準のように思えます。私の意見では、コードレビュー担当者はメソッドに立ち寄って、何が起こっているのかを理解する必要があるからです。「どのように省略すべきか」とは、次のことを意味し
message
ます。msg
、mes
、そして例えばaverage
;avg
、av
、またはinitializing
、init
、initialize
など. - メソッドの主な機能を最後に配置する必要がある理由はありますか? たとえば、
welcomeMsg()
(最後にある機能)、msgWelcome()
(前にある機能)。 - 3種類の方法しかありませんか?セッター (更新、初期化に使用)、ゲッター、および条件テスト? つまり、基本的にこれら 3 つの間のすべてのメソッドを細分化することがわかりますか?
特定の状況
特に、私が絞首刑執行人ゲームを作成していたこの種の状況では、名前付けに問題がありました。アンダースコアでマスクされた非表示の文字列が表示される場合、ユーザーが正しい文字を入力するたびに、マスクされた文字列が正しい文字で正しい場所に更新されます。以下は、私が使用したいくつかのメソッド名で、質問があります。
welcomeMessage() {} //could be either msgWelcome, welcomeMsg, there will be many more messages. What is a good way for message method names?
initialiseGame() {} //could as well be initGame or setupGame changing, ugh.
checkIfWon() {} //hasWon() is probably better.
askUserInput() {} //seems like a common thing to do, what is a good way to do this, is creating a method for this common or do people often do this inline within an other method? The userinput should match specific conditions.
countMatches() {}//to check how many of the letters given by the userInput match the hidden word. calculateMatches(), enumMatches(), enumerateMatches(), getMatches all seem plausible alternatives.
containsOnlyLetters(String string) {}//checks if input contains only letters. isOnlyLetters() makes it more clear that it is a boolean, but seems to be further away from problem description.