方法命名约定

时间:2010-10-01 21:07:16

标签: coding-style standards

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

示例

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(使用语言功能 - 在这种情况下重载)。 如果您喜欢样式1,您能否指出任何“官方”文档,并指出这是一个标准?

3 个答案:

答案 0 :(得分:3)

我想说你的挑战不在于方法命名领域,而在于类型设计。负责保存 Person个对象和Address对象的类型似乎是more than one responsibility的类型。这种类型将趋向于生长,生长和增长,并且最终将难以维持。如果您改为创建更专业的类型,方法命名可能会自动变成一个更简单的任务。

如果您仍然希望以相同类型收集这些方法,那么这主要是风格问题。或许可以考虑的一件事是这种类型是否可能被另一种语言编写的代码所消耗,并且不支持方法重载。在这种情况下,更长的名字是要走的路。否则只要坚持最好的事情(或者你工作场所的执政惯例)。

答案 1 :(得分:2)

这是一种风格问题。

如果您不喜欢长方法名称,请使用1。

如果您不喜欢长过载列表,请使用2。

重要的是要保持一致,所以不要在一个项目中混合使用这两种风格。

如果你看到你有很多这样的方法,你可能需要重新考虑你的设计 - 也许涉及继承的解决方案会更合适。

答案 2 :(得分:0)

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

  • 如果参数的类型与多个候选者匹配,则避免歧义。
  • 在C ++中,重载方法可以隐藏超类中相同名称的方法。
  • 在Java中,类型擦除可以防止重载方法因类型参数化而异。

同样值得一提的是,是否可以使用多态而不是重载。