代码之家  ›  专栏  ›  技术社区  ›  Raj Rao

方法命名约定

  •  1
  • Raj Rao  · 技术社区  · 14 年前

    如果方法将类/结构作为输入参数,那么命名它的最佳方法是什么?

    例子

    class Person{}
    class Address{}
    
    class Utility{
      //name **style 1** - use method overloading
      public void Save(Person p){}
      public void Save(Address a){}
    
      *//name **style 2** - use unique names that define what they are doing
      //or  public void SavePerson(Person p){}
      //and public void SaveAddress(Address a){}*
    }
    

    如果你喜欢样式1,你能给我指一下任何“官方”文档吗?这些文档说明这是一个标准?

    3 回复  |  直到 14 年前
        1
  •  3
  •   Fredrik Mörk    14 年前

    我想说你的挑战不在方法命名领域,而是类型设计。负责保存的类型 二者都 Person Address 对象似乎是 more than one responsibility . 这样的一种类型会越来越大,最终会变得难以维持。如果改为创建更专门化的类型,方法命名可能会自动成为一项更简单的任务。

    如果您仍然希望在同一类型中收集这些方法,则主要是风格问题。可能需要考虑的一件事是,这种类型是否会被用另一种语言编写的代码使用,而这种语言不支持方法重载。在这种情况下,名字越长越好。否则,只需坚持感觉最好的(或者你工作场所的主流惯例)。

        2
  •  2
  •   Oded    14 年前

    这是一个风格问题。

        3
  •  0
  •   Andy Thomas    14 年前

    不同的名称完全避免了与方法重载相关的任何问题。例如:

    • 如果参数的类型与多个候选参数匹配,则可以避免歧义。
    • 在C++中,重载方法可以隐藏同名中的同名。

    同样值得一提的是,是否可以使用多态性来代替重载。