我有很多像这样的代码实例化对象并在一行中调用方法?
var o = new SomeClass().DoSomething(someParam);
这是一个设计缺陷?
这个类是某种类的构建器类,它应该构造其他对象。
我有很多像这样的代码实例化对象并在一行中调用方法?
var o = new SomeClass().DoSomething(someParam);
这是一个设计缺陷?
这个类是某种类的构建器类,它应该构造其他对象。
如果不调用此方法后需要的情况下,你可能有一个静态方法更好的SomeClass
与
var o = SomeClass.DoSomething(someParam);
结束,如果因任何原因,你是绝对需要一个新的实例执行DoSomething
然后你可以创建一个静态的事实方法,使代码更具可读性,例如:
var o = SomeClass.GetInstance().DoSomething(someParam)
风格方面没有问题。 如果您在调用DoSomething方法后需要构造SomeClass,则会出现问题。
不,这很好 - 特别是你可能经常看到它用作建造者的类型。例如:
string x = new StringBuilder().Append("Foo")
.AppendFormat("{0}:{1}", x, y)
.ToString();
或在我Protocol Buffers的端口:
Person p = new Person.Builder { Name = "Jon", Age = 35 }.Build();
这里Person
类型是不可改变的,但建设者类型不是 - 所以你创建一个生成器,设置一些属性,然后致电Build
。
这不是有缺陷的设计。我想说唯一的问题是可读性,如果你的团队的其他人没有使用这种风格,那么不要使用它,尤其是var因为它使得它更难理解返回的内容。对我来说,我个人喜欢它,因为我习惯从jquery链接。