我对构造函数中通常使用Initialize
方法的内容感到有点困惑。
为什么我不能把所有内容放在构造函数中,为什么下面的示例调用initialize方法?
private IAzureTable<Product> _productRepository;
public ProductService(string dataSourceID)
{
Initialize(dataSourceID);
}
private void Initialize(string dataSourceID)
{
this._productRepository = StorageHelper.GetTable<Product>(dataSourceID);
}
是否有通常使用的约定?
在此示例中,我是否需要this
方法中的Initialize
一词?
答案 0 :(得分:10)
为什么我不能把所有内容放在构造函数中,为什么下面的示例调用initialize方法?
您可以将它全部放在构造函数中。在这个简单的例子中,你应该。构造函数用于初始化对象。
有时你会遇到更复杂的事情:
Initialize
方法,因为您希望在构建的单独时间调用它。这些代码都不是这种情况,所以我只是跳过它并将代码抛出到构造函数中。
是否有通常使用的约定?
没有。人们做任何最容易阅读和理解的事情,无论需要编写最少的额外代码,以及任何导致代码重复最少的事情。
但是,如果您将Initialize
方法公开,而不是从构造函数中调用它,我强烈建议您将其称为Initialize
。设计它只需要调用一次。
在这个例子中,我需要“this”这个词。在Initialize方法?
没有。您永远不需要使用this
来访问类成员,除非您有另一个具有相同名称的本地变量。这是一个案例:
public class Something
{
private string someValue;
public class Something(string someValue)
{
// must use "this" to access the member variable,
// because a local variable has the same name
this.someValue = someValue;
}
}
答案 1 :(得分:4)
您发布的是私人帮助方法,而不是类。
它被简单地使用,因此构造函数不会被初始化代码弄得乱七八糟,以便为所做的事情提供一个好名字。
在您的具体示例中,它似乎没什么价值。
答案 2 :(得分:1)
首先,如果将功能分离到自己的方法中,代码看起来是可读的。
其次,有时在某些情况下,您希望将initialize设为public,以便开发人员可以在调用构造函数后使用它,因为您不希望代码在构造函数中运行。如果您有一个表单并且希望在显示表单之前运行一些初始化代码等,则通常就是这种情况。
答案 3 :(得分:1)
1:使用初始化方法可能有两个方面:
在你的具体例子中虽然意义不大。
2:如果是this
:
再次在你的例子中它的意义不大。它可以在基类和当前类的属性或方法的实现之间使用无关紧要(即,您使用base.
而不是this.
)
答案 4 :(得分:1)
没有达成一致的标准,但“Initialize”是一个众所周知的词,任何读取代码的人都可以立即识别出来,并告诉我所有关于该方法目的的知识。它可以被称为Bob()
,但这没那么有用!
为什么我不能把所有东西放在构造函数中?
您可以,但将其分解为方法有助于提高可读性。当你的构造函数是一行代码时,它并不是必需的。
在这个例子中,我需要“this”这个词。在Initialize方法?
在你发布的代码中没有,没有必要。为什么会这样?可以通过工具自动生成,可能只是某人使用的约定或风格,可能是从需要它的其他地方粘贴的......