8

我不是以英语为母语的人,所以我对返回布尔值的函数的命名约定感到困惑。

我知道以下函数名称是常规的:

bool is_valid();
bool is_sorted();
bool is_empty();
bool has_children();
bool can_draw();

但是,我想知道以“is, are, can, has, etc.”以外的动词开头的另一个函数名称是否也常规如下:

bool TryToCloseWindow();    // check to see if the user tries to close the window
bool IntendToCloseWindow(); // as above
bool FileExists();          // check to see if the file exists

如果你是一个以英语为母语的程序员和程序员,你觉得这三个函数的名字是不是约定俗成的呢?

4

3 回答 3

8

对标题问题的简短回答:不同。有很多不同的约定,甚至可能比程序员的约定还要多。一些约定希望在每个 bool 返回函数名称的开头都有一个“is”,而另一些则没有。并且不要为下划线、CamelCase、lowerCamelCase 等问题而烦恼/争论。只要你坚持你选择的那个,它们都是同样可读的。

我认为重要的函数名称表达了它们在做什么。返回布尔值的函数通常出现在条件或循环的上下文中。所以我认为最好把你想要的名字放在这样的上下文中,看看它是否听起来正确。例如if (fileExists()) { /* ... */ }听起来不错。tryToCloseWindow()听起来像“嘿,编译器/程序,请关闭那个窗口”。您的评论给出了一个提示,这不是您想要的。也许使用'userIsClosingWindow()'或类似的东西。“意图”不是我用于函数名称的动词。意图某事。意思是你想做某事,你心里有它,你在想它,但没有真正的行动。所以如果打算关闭一个窗口,就这样做,或者离开它。无需告诉编译器“嘿,我打算关闭那个窗口,几行后我可能真的会这样做......”。而且您无法确定用户是否打算关闭窗口。除非他将他的 Microsoft Mindreader 设备插入 USB 端口并且您可以访问 API,否则请给我一个链接,谢谢 ;)

于 2012-11-30T07:34:25.280 回答
1

一般来说,这应该是如下命名约定,以小写开头。

bool tryToCloseWindow();    // check to see if the user try to close the window
bool intendToCloseWindow(); // as above
bool fileExists();          // check to see if the file exists
于 2012-11-30T05:27:18.303 回答
0

如果您使用的名称isValid()更有意义。

它将返回值true左右falseif(isValid()) ...任何人都可以轻松理解这个概念。

通常并非所有组织都遵循相同的命名约定。这取决于公司到公司,开发商到开发商。

于 2012-11-30T05:39:02.050 回答