美文网首页
谈一谈学习设计模式这事

谈一谈学习设计模式这事

作者: 兮兮码字的地方 | 来源:发表于2019-11-27 20:38 被阅读0次

    很长一段时间没有写工作总结与体验了,这段时间的工作既累效率还低下,并且似乎干的事情毫无长进,于是趁着这股情绪总结一下。

    特别近一年的工作内容中,有大量的维护性工作。不可避免的,很多时候需要去阅读同事写的代码,而即使是新开发一个功能,也会调用已有的接口或兼容现有的代码逻辑。

    这种阅读别人代码的体会真足以用"难受"二字来形容。

    有时候一个分支能写几个屏幕,有时候一个方法包含的分支超过5层,干的事情都可以抽出十几个方法来,有时候能看到类似的一段代码出现在不同的类中甚至是同一个类中,有时候为了加一个功能要改无数处原有的代码,改一处代码又会担心不知道会影响别的哪里的功能……

    正是这样的难受、低效的工作体会让我不得不去思考代码的可维护性这个问题,并从这个点开始产生了对代码重构的兴趣。

    "你信不信,让别人来维护你写的代码,他一样会吐槽你的代码很烂!"

    ——尽管我自认为自己写的代码可读性还不错,那天领导这句话还是让我印象深刻,我开始反思,或许那些代码的原作者并没有意识到他自己写的代码有多烂,一是因为他并不懂代码的设计规范,二是对于自己的代码很熟悉,便没有了重构的动力,三是由于在一开始需求还不明确时也难以做出好的设计。


    可见,要想写出好代码,首先得知道怎样的代码才是公认的好,而这其实就是我们熟知的设计模式要干的事。

    正好这段时间在跟一个专门讲设计模式的专栏,于是,梳理一下关于课程中的理论要点。

    一,掌握设计模式的好处

    1.告别写被人吐槽的烂代码

    2. 提高复杂代码的设计和开发能力

    3. 让读源码、学框架事半功倍

    4. 应对面试中的设计模式相关问题

    二,好代码的评判标准

    首先,代码质量的评价有很强的主观性。

    然后,代码的评价标准有很多,其中几个最常用的、最重要的就包括:可维护性、可读性、可扩展性、灵活性、简洁性(简单、复杂)、可复用性、可测试性等

    1. 可维护性(maintainability

    所谓“代码易维护”就是指,在不破坏原有代码设计、不引入新的 bug 的情况下,能够快速地修改或者添加代码。所谓“代码不易维护”就是指,修改或者添加代码需要冒着极大的引入新 bug 的风险,并且需要花费很长的时间才能完成。

    2. 可读性(readability

    写出的代码让计算机读懂很容易,可要让别人也容易读懂就不那么简单。

    code review 是一个很好的测验代码可读性的手段,如果同事可以轻松地读懂自己写的代码,那说明可读性很好;如果同事在读代码时,有很多疑问,那就说明可读性有待提高。

    3. 可扩展性(extensibility)

    代码的可扩展性表示,代码预留了一些功能扩展点,你可以把新功能代码,直接插到扩展点上,而不需要因为要添加一个功能而大动干戈,改动大量的原始代码。

    三,如何才能写出高质量的代码?

    要写出满足种种评价标准的高质量代码,得掌握一些更加细化、更加能落地的编程方法论,包括面向对象设计思想、设计原则、设计模式、编码规范、重构技巧等。

    四,5个概念

    (1)面向对象

    主流的编程范式或者是编程风格有三种,它们分别是面向过程、面向对象和函数式编程。

    面向对象这种编程风格又是这其中最主流的。面向对象编程因为其具有丰富的特性(封装、抽象、继承、多态),可以实现很多复杂的设计思路,是很多设计原则、设计模式编码实现的基础。

    (2)设计原则

    设计原则就是指导我们代码设计的一些经验总结。

    SOLID 原则 -SRP 单一职责原则

    SOLID 原则 -OCP 开闭原则

    SOLID 原则 -LSP 里式替换原则

    SOLID 原则 -ISP 接口隔离原则

    SOLID 原则 -DIP 依赖倒置原则

    DRY 原则、KISS 原则、YAGNI 原则、LOD 法则

    (3)设计模式

    设计模式是针对软件开发中经常遇到的一些设计问题,总结出来的一套解决方案或者设计思路。大部分设计模式要解决的都是代码的可扩展性问题。

    23 种经典的设计模式。它们又可以分为三大类:创建型、结构型、行为型。

    1. 创建型
    常用的有:单例模式、工厂模式(工厂方法和抽象工厂)、建造者模式。
    不常用的有:原型模式。
    2. 结构型
    常用的有:代理模式、桥接模式、装饰者模式、适配器模式。
    不常用的有:门面模式、组合模式、享元模式。
    3. 行为型
    常用的有:观察者模式、模板模式、策略模式、职责链模式、迭代器模式、状态模式。
    不常用的有:访问者模式、备忘录模式、命令模式、解释器模式、中介模式。


    (4)编程规范

    编程规范主要解决的是代码的可读性问题。编码规范相对于设计原则、设计模式,更加具体、更加偏重代码细节。比如,如何给变量、类、函数命名,如何写代码注释,函数不宜过长、参数不能过多等等。

    (5)重构技巧

    几乎没有一劳永逸的设计,随着需求的变化,代码的不停堆砌,原有的设计必定会存在这样那样的问题。针对这些问题,我们就需要进行代码重构。

    重构是软件开发中非常重要的一个环节。持续重构是保持代码质量不下降的有效手段,能有效避免代码腐化到无可救药的地步。

    相关文章

      网友评论

          本文标题:谈一谈学习设计模式这事

          本文链接:https://www.haomeiwen.com/subject/lrymwctx.html