代码之家  ›  专栏  ›  技术社区  ›  user187291

正确的命名查询

  •  0
  • user187291  · 技术社区  · 16 年前

    我的两个函数存在命名问题

    • is_void 如果参数为“空”(在某种意义上),则返回true。如何调用相反的函数? isnt_void ? is_set ? is_not_void ?

    • install_error_handler/remove_error_handler

    someArray.map(is_not_void)

    5 回复  |  直到 16 年前
        1
  •  1
  •   D.Shawley    16 年前

    对于#2,如果你将一个错误处理程序传递到方法中;安装/卸载应该足够了。

        2
  •  3
  •   BenMorel Manish Pradhan    12 年前

    在命名的情况下 not is_void() 在这种情况下,第一个原则告诉我们根本不存在函数,因为用户总是可以否定布尔返回。换言之, is_void()

    install_... remove_... 第二个原则适用于这种情况。短动词的问题在于它们非常模糊,但并不总是可以通过命名来消除歧义。最重要的是,它们尽可能具有描述性,并且你应用了一些一致的方法。如果你使用 watch_... unwatch_... watch_errors 旁边 observe_warnings

    install_..._handler uninstall_..._handler add_observer 过滤条件结束 watch_condition unwatch_condition 取消关注 真实世界

        3
  •  1
  •   Ewan Todd    16 年前

    测试功能是个好主意。然而,我警告不要使用否定命名,因为这会引发双重(或更多)否定逻辑 if (not is_not_void(a)) 一个简单的非运算符就足够了: if (not is_void(a)) .

        4
  •  1
  •   rsp    16 年前

    根据您的更新,我假设您的意思是需要一个指向该方法的指针。我总是尽量使用尽可能清晰的名字,所以我会先问自己 is_void 根据你的文本,我建议 is_empty , is_not_set is_nothing is_void 相反的可能是 is_not_empty , is_set is_something ,最后一个听起来有点滑稽,但可能接近代码中的含义。

    至于 install_error_handler uninstall_error_handler ,如果这些名字正确地描述了目的,我会保留它们。如果没有,试着用你的代码来描述它们的含义(守卫、保护、锁定……)

        5
  •  1
  •   Bob Kaufman    16 年前

    回答你问题的第一部分:通常,我会避免函数名中的负数。类似于:

    IsNotVoid( String s )
    

    可能看起来无害,但你总是会做这样的事情

    if ( ! IsNotVoid( s ) && ! IsNotVoid( t ) )
    {
    }
    

    …这将使下一个程序员思考太难,无法立即辨别你的意图。