我正在编写一个方法来设置作为参数传递的对象的属性。该方法接受一个类型为interface的参数,该方法的返回类型是相同的接口。我想知道这种方法是否有某种命名约定。我想的是:
FillInInterfaceTypeData 或 InitInterfaceTypeData ,但对我来说听起来都很笨拙。你怎么想?
答案 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) { ... }