问题描述
我经常发现自己在考虑要编写的函数的方法名称。像setter和getter一样改变或获取对象的状态。也许我没有以正确的方式使用对象,但我经常发现自己处于使用 setter 和 getter 似乎不太适合的情况。我有几个具体的问题。
问题
- 是更喜欢使用标准化的方法名称还是使用您正在解决的问题领域中的方法名称?(例如,在游戏中您可以使用 boolean won,isWinner())。
- 什么时候适合缩写?你应该如何缩写?当我不得不写很多东西时,我经常会发现自己在创建缩写词,但这似乎是一个糟糕的标准,因为在我看来,代码审查员应该放弃一种方法并了解正在发生的事情。“你应该如何缩写”我的意思是:应该
message
是;msg
,mes
, 例如average
;avg
,av
, 或initializing
,init
等initialize
。 - 是否有理由将方法的主要功能放在最后?例如,
welcomeMsg()
(最后的功能),msgWelcome()
(前面的功能)。 - 你只有3种不同的方法吗?Setter(用于更新、初始化)、getter 和条件测试?所以你基本上可以看到细分这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.