任务6:清理
Last updated
Was this helpful?
Last updated
Was this helpful?
玩到最后,这是最后的一个任务了。我们剩下最后的一条戒律:“一行代码只有一个“.”运算符(One dot per line)”。它讲的,其实是重构里提到的一种坏味道:“过长的消息链”(Message Chain)。
违反该诫条的代码常常表现出这样的形状:object.b1().b2().b3()
或者user.getDepartment().getManager().getLastName()
,也即对象需要同时与另外多个对象交互,这破坏了封装性,让类知道了其不应该知道的细节,破坏了“迪米特法则”。
迪米特法则的通俗解释:你可以玩自己的玩具,可以玩你制造的玩具,还要别人送给你的玩具,但是永远不要碰别人的玩具。
重构一行存在多个“.”运算符的代码,使之符合“一行代码只有一个.运算符(One dot per line)”原则
你觉得代码还可以重构的其他地方
玩一下README
里面部分还没实现的需求
有没有继续做到重构过程随时保持行为?
将代码重构到面向对象的过程能否感知到明显的价值?
做了这么多重构,你觉得好的代码具备什么样的特征?
《重构 2》3.17 过长的消息链(Message Chains)