查看来自开源和闭源项目的一些c#代码,我看到私有的,有时候公共方法被设计为重用参数而不是直接访问实例变量来提取他们需要的参数
class A
{
private B b;
public void Methode1()
{
Methode2(b.SomeProperty);
}
private void Methode2(string param)
{
}
}
这被认为是一种好的做法,还是只是一种编程方式?
答案 0 :(得分:3)
是的,这是正常的。考虑将Methode2
移至课程B
(Tell, don't ask原则):
class A
{
private B b;
public void Methode1()
{
b.Methode2();
}
}
什么是坏事 - 将整个对象作为方法的参数传递,当你只需要它的属性的值时(不要传递给方法,而不是执行它):
class A
{
private B b;
public void Methode1()
{
Methode2(b);
}
private void Methode2(B b)
{
// use b.SomeProperty
}
}
答案 1 :(得分:1)
此主题没有“良好做法”。
这是一种“重载”的方法(找不到确切的术语来定义它),将其中一些保持为私有。就是这样。
在这个具体的例子中,可以,也可以从类的其他部分调用Methode2(string param)
,并使用不同的b.SomeProperty
参数。
为了避免双重代码,开发人员引入了一种新的Methode2(..)
方法。