我已经提交了一段代码供审阅,我得到的反馈是,更好的做法是让构造函数调用构造函数而不是像下面的set语句重复:
public GenericFileReader(string fileName)
{
_filename = fileName;
_encoding = Encoding.GetEncoding("windows-1252");
}
public GenericFileReader(string fileName, Encoding encoding)
{
_filename = fileName;
_encoding = encoding;
}
我理解有一种方法可以使构造函数调用构造函数如下所示:
public GenericFileReader(string fileName) :
this(fileName, Encoding.GetEncoding("windows-1252"))
{
}
public GenericFileReader(string fileName, Encoding encoding)
{
_filename = fileName;
_encoding = encoding;
}
第二个在减少代码行数方面似乎很好。我仍然不相信第二种方法比早期方法更好。因为,调用构造函数两次似乎比设置编码和文件名更昂贵。请告诉我哪种方法更好?
答案 0 :(得分:1)
就我个人而言,我更喜欢拥有1个构造函数,并让它调用类似下面的子函数来处理更复杂的东西。
编辑:请参阅Zohar对此回复的评论,了解为何不重载构造函数。
您最好的例子(IMO)
我选择了这个,因为当我不使用中心函数供构造函数使用时,我更喜欢它的可读性。但我通常有我的核心功能,如下图所示。
fdtdump dtb_file.dtb > /tmp/test.txt
对于更复杂的构造函数,但使用您的示例
public GenericFileReader(string filename)
{
_filename = filename;
_encoding = Encoding.GetEncoding("windows-1252");
}
public GenericFileReader(string filename, Encoding encoding)
{
_filename = filename;
_encoding = encoding;
}
在底部的情况下,你可以让多个重载的构造函数以不同的方式调用init函数。