【发布时间】:2012-06-26 10:21:01
【问题描述】:
sn-ps有两个代码:
someObject.getBla1().getBla2().performBlah();
第二个:
bla1=someObject.getBla1();
bla2=bla1.getBla2();
bla2.performBlah();
我总是被告知要避免使用第一个,而使用第二个,而我觉得第二个只是一种痛苦。
第二个有什么好处?
【问题讨论】:
-
如果函数返回调用该函数的对象,则链接更短。但是如果函数返回一些其他的东西,最好分开。
-
您没有指定语言,只有分号给出了提示。点链在 Ruby 中很重要且经常使用。
-
@karatedog 你的评论没有任何帮助。 a 他没有询问 Ruby 并且 b 它被频繁使用并不能使它成为好的(或至少毫无疑问的)实践——他问的是为什么有些人认为应该避免它的问题。此外,很明显,除非您知道某种语言使用点来指代对象的属性/方法以外的其他内容,否则语言并不重要(您可以说字符串连接,但大括号不适合)。
-
我没有回答 Ruby,这只是一个例子。接受的答案清楚地证明了这个问题可能会被误解。 Ruby 中的点链在 Linux/Unix 中用作管道。如果你想
grep一个文件,然后用sed修改结果,你不会实现一个新的实用程序来实现这两个功能。你把它们锁起来。或者您执行一个,存储结果,然后执行另一个。您必须使用 OP 中的一种表格。接受的答案告诉你不要这样做。然而,公认的答案是正确的,但在一个完全不同的问题域中。太糟糕了,这个只有 1 个问题的用户已经离开了。