Questions tagged «method-chaining»

5
从类方法“返回自我”的目的?
我在一个开源项目中遇到了这样的事情。修改实例属性的方法返回对该实例的引用。这种构造的目的是什么? class Foo(object): def __init__(self): self.myattr = 0 def bar(self): self.myattr += 1 return self

8
使用方法链接时,我是否重用对象或创建对象?
使用方法链接时: var car = new Car().OfBrand(Brand.Ford).OfModel(12345).PaintedIn(Color.Silver).Create(); 可能有两种方法: 重用同一对象,如下所示: public Car PaintedIn(Color color) { this.Color = color; return this; } Car在每个步骤中创建一个新的类型的对象,如下所示: public Car PaintedIn(Color color) { var car = new Car(this); // Clone the current object. car.Color = color; // Assign the values to the clone, not the original object. return …

4
使用方法链接构建对象的成语叫什么名字?
我经常使用一种模式,在该模式下,我使用方法链来设置一个对象,类似于Builder或Prototype模式,但没有在每个方法调用中创建新对象,而是修改了原始对象。 例: new Menu().withItem("Eggs").withItem("Hash Browns").withStyle("Diner"); 只是想知道这种模式是否有名称,以及是否将其视为反模式,因为尽管它可以更流畅地阅读,但它可能导致较长的方法链。

7
编码样式问题:我们是否应该具有接受参数,修改参数然后返回该参数的函数?
关于这两种做法仅仅是同一枚硬币的两个方面,还是一个真的更好,我正在和我的朋友进行辩论。 我们有一个函数,该函数需要一个参数,填写其中的一个成员,然后返回它: Item predictPrice(Item item) 我相信,由于它可以处理传入的同一对象,因此没有必要继续返回该项目。实际上,从调用者的角度来看,如果有任何事情,它将使您感到困惑,因为您可以期望它返回一个新项目,而不会。 他声称这没有什么区别,即使它确实创建了一个新Item并返回它也没有关系。我强烈不同意,原因如下: 如果您对传入的项有多个引用(或使用指针或其他方式),则分配一个新对象并返回该对象具有重要意义,因为这些引用将是不正确的。 在非内存托管语言中,分配新实例的函数声明了内存的所有权,因此我们将必须实现在某个时候调用的清理方法。 在堆上分配可能很昂贵,因此,对于被调用函数是否执行此操作很重要。 因此,我认为能够通过方法签名查看是修改对象还是分配新对象非常重要。结果,我认为由于函数仅修改传入的对象,因此签名应为: void predictPrice(Item item) 在我使用过的每个代码库中(公认的C和C ++代码库,而不是Java,这都是我们正在使用的语言),上述样式基本上得到了遵守,并且由经验更为丰富的程序员所遵循。他声称,由于我的代码库和同事的样本量在所有可能的代码库和同事中所占的比例很小,因此,我的经验不能真正表明一个人是否优越。 那么,有什么想法吗?

7
函数只返回不变的参数,没用吗?
我刚刚在我正在工作的项目中找到此功能: -- Just returns the text unchanged. -- Note: <text> may be nil, function must return nil in that case! function Widget:wtr(text) return text end 太可悲的是,编码器不再在公司工作。为什么要使一个函数什么都不做,但是返回调用它的参数呢? 这种功能有什么用,在本例中未指定,但在任何情况下都没有用? 由于 function aFunction(parameter) return parameter end 结束于 aFunction(parameter) == parameter 我为什么要写这样的东西 aFunction(parameter) == whatIWantToCheck 代替 parameter == whatIWantToCheck ?


4
自引用方法链接有任何实际缺点吗?
我最近建议为某个项目中的某个类实施链接方法,以便可以提高代码的可读性。我得到了一个“流畅的接口,不应该只是为了方便而实现,而是为了语义”,并拒绝了我的建议。我回答我不是在建议使用流畅的界面,而是将方法自身链接(可以相互混淆,请在底部阅读)以提高可读性和编码舒适度,但该建议再次遭到拒绝。 无论如何,这让我想到也许总是以不应该返回任何内容的方法(例如,setter)返回“ this”,这可能会导致一种不好的做法。 我的问题是:可以将先前的惯例视为不良做法或滥用吗?为什么?我认为没有任何性能缺陷,还是存在?

4
修改自身后,类的方法何时应返回相同的实例?
我有一个具有三个方法的类A(),B()并且C()。这些方法修改了自己的实例。 当实例必须是一个单独的副本时,方法必须返回一个实例(与一样Clone()),但是在修改方法中的同一实例而不返回任何其他值时,我可以自由选择返回void还是相同的实例(return this;)。 在决定返回相同的修改实例时,我可以进行整洁的方法链,例如obj.A().B().C();。 这是这样做的唯一理由吗? 修改自己的实例并返回它还可以吗?还是应该只返回副本并像以前一样保留原始对象?因为当返回相同的修改实例时,用户可能会假定返回的值是副本,否则将不会返回?如果可以的话,在方法中阐明此类问题的最佳方法是什么?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.