传递给构造函数的变量是否应作为属性提供
本文关键字:属性 是否 构造函数 变量 | 更新日期: 2023-09-27 18:33:57
我的老板坚持以下规则:所有传递给构造函数的变量都应该通过只读属性可用。
我看不出为什么这应该是真的真正原因,因为阶级应该这样做,而不是向其他人提供他们的结构。我知道有时它很有用,但这不是一般规则。
我的想法正确吗?我错过了什么吗?任何人都可以添加更多论点或反对吗?
规则示例:
public class MyClass
{
public MyClass(ISomeProvider someProvider)
{
SomeProvider = someProvider;
}
public ISomeProvider SomeProvider { get; private set; }
public void DoSomeWork()
{
...
}
}
谢谢。
我个人会说不...我从不相信有一条规则适合所有人。如果参数在类内部使用,则无需公开它们。
如果将"原始"字符串密码传递到加密类中,则不希望在对象的整个生存期内都可以访问原始字符串,实际上这样做可能会带来安全风险。
但另一方面,有时您必须遵循团队/经理制定的标准。如果你认为这个原则是错误的,请详细讨论支持/反对这个想法的论据。
它可以像规则一样应用于某些特定项目的某个特定部分(应该说,听起来很奇怪的设计,但是......),但它永远不会成为软件设计中的通用规则,即使在单个项目的领域也是如此。
老板决定的规则可以帮助调试以了解对象的属性。这不是规则,您可以将其视为项目经理创建的设计模式。
public class MyClass
{
private ISomeProvider someProvider;
public ISomeProvider SomeProvider
{
get
{
//logic here
return this._someProvider;
}
}
public MyClass(ISomeProvider someProvider)
{
this._someProvider = someProvider;
}
public void DoSomeWork()
{
}
}