我有两个函数的命名问题
我有一个函数is_void
,如果参数为“空”(在某种意义上),则返回true。你怎么称呼相反的功能? isnt_void
? is_set
? is_not_void
我有一对函数,第一个安装处理程序以捕获后续代码中的错误,第二个删除此处理程序。 install_error_handler/remove_error_handler
看起来太长而且丑陋,我更喜欢一对短动词(比如看/不看)。
非常感谢任何想法。
感谢目前为止的答案
更新:我需要一个“非空”功能,因为它会像someArray.map(is_not_void)
一样使用
第二个不能简单地“注册”或“安装”,因为它没有参数使用。
答案 0 :(得分:3)
我不完全确定你为什么需要#1的不同功能;如果它不是空的,则is_void将返回false。
对于#2,如果您将错误处理程序传递给方法;安装/卸载应该足够了。
答案 1 :(得分:1)
回答问题的第一部分:作为一项规则,我避免使用函数名称中的否定词。类似的东西:
IsNotVoid( String s )
可能看起来无害,但总是会,你会做类似
的事情if ( ! IsNotVoid( s ) && ! IsNotVoid( t ) )
{
}
......这将使下一个程序员认为太难以不能立即辨别出你的意图。
答案 2 :(得分:1)
测试功能是个好主意。但是,我警告不要使用否定命名,因为它会引发双重(或更多)负逻辑if (not is_not_void(a))
。一个简单的非运算符就足够了:if (not is_void(a))
。
答案 3 :(得分:1)
一般来说,尽量(1)尽量减少接口函数的数量,(2)提供精确一致的名称。
在命名not is_void()
的情况下,第一个原则告诉我们根本不存在该函数,因为用户总是可以否定布尔返回。换句话说,is_void()
是一个约束检查函数,由调用者决定在必要时明确否定约束。
install_...
和remove_...
案例是适用第二项原则的地方。短动词的问题在于它们非常模糊,但并不总是可以通过命名来消除歧义。最重要的是它们尽可能具有描述性,并且您应用了一些一致的方法。如果您使用watch_...
和unwatch_...
,请始终使用它们。在watch_errors
旁边没有observe_warnings
。不一致将导致用户查找命名差异的原因。
就我个人而言,我更喜欢install_..._handler
和uninstall_..._handler
或add_observer
过滤条件优于watch_condition
和unwatch_condition
,因为 unwatch 对我来说,它看起来不像是真实的单词。
答案 4 :(得分:1)
从您的更新中我假设您的意思是需要指向该方法的指针。我总是尽量使用名字,所以我先问自己is_void
的含义是什么。在您的文字中,我建议is_empty
,is_not_set
或is_nothing
而不是is_void
,对立面可以是is_not_empty
,is_set
或{{1} },最后一个听起来有点滑稽,但可能接近你代码中的含义。
我认为你不必防范过于冗长的命名,你必须注意过于简洁的命名,因为这往往是歧义的来源。
对于is_something
和install_error_handler
,如果这些名称正确描述了目的,我会保留它们。如果没有尝试用你的代码描述它们的含义(保护,保护,锁定......)