是否存在应该设置传递对象的属性的方法的命名约定

时间:2010-04-30 11:50:17

标签: language-agnostic oop

我正在编写一个方法来设置作为参数传递的对象的属性。该方法接受一个类型为interface的参数,该方法的返回类型是相同的接口。我想知道这种方法是否有某种命名约定。我想的是:

FillInInterfaceTypeData InitInterfaceTypeData ,但对我来说听起来都很笨拙。你怎么想?

4 个答案:

答案 0 :(得分:3)

这里没有严格的规则。这两个名字听起来都不错,但我通常会使用类似PopulateInterfaceTypeData的内容。

答案 1 :(得分:1)

FillInInterfaceTypeData听起来不错。也许你甚至可以简单地指出我认为所有数据都适合的数据类型。毕竟这完全取决于上下文。

答案 2 :(得分:1)

我认为这取决于你填充对象的内容和原因?

您是否设置了默认值?在这种情况下,像InitialiseTypeData或DefaultTypeData这样的东西可能有意义..

你是否正在清除他们的价值观?也许对象的状态被移动到另一个状态。在这种情况下,可以使用DeactivateBankAccount或MakeUserMarried,或者对对象进行的操作。


小心代码味道 通常(当然不总是如此)你会发现如果你在命名方法时遇到困难,这表明某些设计不太合适,这可能导致进一步的困难。

您可能需要在设计中考虑其他事项。

例如,如果此方法设置默认值,这不是应该在类的构造函数中出现的吗?

如果接口表示所有需要相同值的多个类类型,那么这些类中的每一个都可以分成1个类,表示每个类之间的相同内容以及表示差异的另一个类。 / p>

interface IA
{
  int a;
  int b;
}
class X : IA
{
  int a;
  int b;
  int c:
}
class Y : IA
{
  int a;
  int b;
  int d:
}

可以重构为

class A
{
  int a;
  int b;
}

class X
{
  A a;
  int c:
}

class Y
{
  A a;
  int d:
}

然后,类A的构造函数可以设置其默认值。您不再需要花费任何精力来思考一个好的函数名称。您还可以获得更正交的系统,更容易测试和应对变化。

显然,这可能不是你的情况,我只是强调你何时努力寻找一个好名字,因为你的设计需要改进!

答案 3 :(得分:0)

取决于您使用的语言类型:如果它支持动态绑定,您可以删除“TypeData”后缀并让运行时执行其工作。

只需命名您的方法

SetDefaultsFor(Customer c) { ... }
SetDefaultsFor(Dog d)      { ... }