薄情先生|你所需要知道的代码整洁之道( 三 )

  • 命令(Command):当一个方法要改变对象的状态的时候 , 它就具有命令的性质 。
  • 保证方法的行为严格的是命令或者查询 , 这样查询方法不会改变对象的状态 , 没有副作用;而会改变对象的状态的方法不可能有返回值 。
    设计模式设计模式的开山鼻祖 GoF 在《设计模式:可复用面向对象软件的基础》一书中提出的23种经典设计模式被分成了三类 , 分别是创建型模式、结构型模式和行为型模式 。
    在面向对象软件设计过程中针对特定问题的简洁而优雅的解决方案 。
    常用的设计模式有:策略模式、发布—订阅模式、职责链模式等 。
    比如策略模式使用的场景:
    策略模式:定义一系列的算法 , 把它们一个个封装起来 , 并且使它们可以相互替换 。
    if (account === null || account === '') {alert('手机号不能为空');return false;}if (pwd === null || pwd === '') {alert('密码不能为空');return false;}if (!/(^1[3|4|5|7|8][0-9]{9}$)/.test(account)) {alert('手机号格式错误');return false;}if(pwd.length<6){alert('密码不能小于六位');return false;}复制代码使用策略模式:
    const strategies = {isNonEmpty: function (value, errorMsg) {if (value =http://kandian.youth.cn/index/=='' || value =http://kandian.youth.cn/index/== null) {return errorMsg;}},isMobile: function (value, errorMsg) { // 手机号码格式if (!/(^1[3|4|5|7|8][0-9]{9}$)/.test(value)) {return errorMsg;}},minLength: function (value, length, errorMsg) {if (value.length < length) {return errorMsg;}}};const accountIsMobile = strategies.isMobile(account,'手机号格式错误');const pwdMinLength = strategies.minLength(pwd,8,'密码不能小于8位');const errorMsg = accountIsMobile || pwdMinLength; if (errorMsg) {alert(errorMsg);return false;}复制代码又比如 , 发布—订阅模式具有的特点:
    • 时间上的解耦
    • 对象之间的解耦
    既可以用在异步编程中 , 也可以帮助我们完成更松耦合的代码编写 。
    如果大家需要了解设计模式更多知识 , 建议另外找资料学习 。
    总结宋代禅宗大师青原行思提出参禅的三重境界:
    参禅之初 , 看山是山 , 看水是水;禅有悟时 , 看山不是山 , 看水不是水;禅中彻悟 , 看山仍是山 , 看水仍是水 。
    同理 , 编程同样存在境界:编程的一重境界是照葫芦画瓢 , 二重境界是可以灵活运用 , 三重境界则是心中无模式 。 唯有多实践 , 多感悟 , 方能突破一重又一重的境界 。
    最后 , 愿大家终将能写出自己不再讨厌的代码 。
    最后真的是最后了 , 有空会补上上述的示例代码 , 欢迎大家 Star & PR 呀:你所需要知道的代码整洁之道
    参考
    • 《代码整洁之道》
    • 《编写可读代码的艺术》
    • 《重构-改善既有代码的设计》
    • 《JavaScript设计模式与开发实践》
    • 《人人都懂设计模式:从生活中领悟设计模式:Python实现》
    最后 , 有需要免费编程资料的记得及时私聊小编


    推荐阅读