最近我一直在为 OOP 中的方法名称而苦苦挣扎,我决定解决这个问题。为此,我试图从自然语言的角度对方法的名称进行分类。到目前为止,我已经弄清楚了这些类别:
1]命令:
elem_list.append('x')
bank_account.deposit(50)
game.get_score()
append
, deposit
,get_score
是这里的命令。您要求对象做某事(或要求解释器对它们做某事-取决于观点)。这些方法包含各种形式的动词:只是动词,动词+名词,动词+形容词+名词,有时是名词+动词(进一步阐明动词的含义)。命令可能是最常见的名称。
2]查询:
connection.is_open()
snake.is_dead()
window.can_hide()
这些并不常见。它们的形式是被动动词+形容词(这种形式肯定可以更好地描述,我不是以英语为母语的人)。基本上,您在这里查询对象的状态。
以下是我不确定的类别,因为我还没有真正看到很多这样的方法名称(尽管这可能是我有限的经验):
3]声明:
button.widget_selected(event)
window.screen_changed(screen)
在这里,您通知一个对象发生了某些事情并期望它完成它的工作。该方法基本上是一个事件处理程序。形式通常类似于名词+传递时态动词。我不确定这个类别,因为您可以通过在前面加上动词 eg handle
:将其转换为命令,button.handle_widget_selected(event)
这在调用该方法时似乎更自然。
4]名词名称
snake.crash_animation()
game.introduction()
我不太喜欢这些,因为我认为名词应该保留给数据。并且可以简单地转化为第一类。
所以我的问题是你是否同意这种分类,以及你是否认为第三和第四类中的名称在 OOP 范式方面是好还是坏。