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

正确命名查询

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

    我的两个函数有命名问题

    • 我有一个函数 is_void isnt_void ? is_set ? is_not_void ?

    • 我有一对函数,第一个函数安装一个处理程序来捕获后续代码中的错误,第二个函数删除这个处理程序。 install_error_handler/remove_error_handler 看起来又长又丑,我更喜欢一对短动词(比如watch/unwatch)。

    非常感谢您的任何想法。

    谢谢你迄今为止的回答

    更新: 我需要一个函数来表示“is not void”,因为它的用法如下 someArray.map(is_not_void)

    第二个不能是简单的“register”或“install”,因为它的使用没有参数。

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

    一般来说,尽量(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 看起来不像一个 真言

        2
  •  3
  •   BenMorel Manish Pradhan    11 年前

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

        3
  •  1
  •   Ewan Todd    15 年前

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

        4
  •  1
  •   rsp    15 年前

    is_void is_empty , is_not_set is_nothing 而不是 你是空的吗 相反的可能是 is_not_empty , is_set is_something ,最后一个听起来有点滑稽,但可能接近代码中的含义。

    我认为您不必担心过于冗长的命名,您必须注意过于简洁的命名,因为这往往是歧义的来源。

    至于 install_error_handler uninstall_error_handler ,如果这些名称正确描述了用途,我会保留它们。如果没有,请尝试描述它们在代码中的含义(保护、保护、锁定…)

        5
  •  1
  •   Bob Kaufman    15 年前

    回答你问题的第一部分:通常,我在函数名中避免使用否定词。比如:

    IsNotVoid( String s )
    

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

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