• phper談談最近重構代碼的感受(3)


    这篇文章本来该和同一系列的文章一起写的,因为最近换工作的缘故滞后了.重构是非常细碎的叠加,有很多值得注意的地方.

    1.消灭过多的临时变量.

    有时候过多的无意义的临时变量,真心让人抓狂,特别是过了比较长的时间,连写这段代码的人都不知道为何这么写了.比如下面这段代码,我们先分步骤来思考这个问题.

    一个获得全部消费的方法里面充斥着各种乱七八糟的临时变量.我们当然可以不辞辛苦地把每一行都加上饱含善意的注释,但是增加注释不是最好的办法,往往是最后的办法.

    很明显的是诸多变量的含义不明,导致整个逻辑也不清楚,一会儿加,一会儿减,一会儿还乘以某个系数.第一步我们让整个代码变得可读一点,让变量命名有意义一些.然后为了更清晰,我顺便加了注释,修改后如下:

    变量名字变长了,但是可读性也强了不少,以前一个$rest,别人不知道你到底是剩余的什么,$tmp更是不知所云.看起来比之前好得多,但是如果你的一些变量在其他地方也在使用,不如把这些变量变成query method.如下:

    query method让代码复用,而且也成功代替了那些繁琐的注释.

    2.查询和修改命令分离(CQRS).

    CQRS最早来自于Betrand Meyer(Eiffel语言之父,开-闭原则OCP提出者)在 Object-Oriented Software Construction 这本书中提到的一种 命令查询分离 (Command Query Separation,CQS) 的概念。其基本思想在于,任何一个对象的方法可以分为两大类:

    • 命令(Command):不返回任何结果(void),但会改变对象的状态。
    • 查询(Query):返回结果,但是不会改变对象的状态,对系统没有副作用。

    根据CQS的思想,任何一个方法都可以拆分为命令和查询两部分.

    这个留作思考,给阅读者.

  • 相关阅读:
    (JS+CSS)实现图片放大效果
    PowerDesigner(数据建模)使用大全
    可输入的下拉框(简易实现)
    MVC 验证码实现( 简易版)
    http程序接口、调用(最入门级,文末附Demo)
    【BZOJ】3730: 震波
    【HDU】HDU5664 Lady CA and the graph
    【AtCoder】AGC016
    【AtCoder】ARC076
    【AtCoder】AGC032
  • 原文地址:https://www.cnblogs.com/freephp/p/4833775.html
Copyright © 2020-2023  润新知