zoukankan      html  css  js  c++  java
  • 设计原则

    • KISS【keep it simple, stupid】
    1)方便用户使用,最简化操作步骤
    2)代码逻辑保持简单,容易修改和维护,已经不能再删除多余代码才是最极致的精简
    3)系统设计保持简单
    
    • YAGNI【You’re NOT gonna need it!】
    某一功能只有当你真正需要实现的时候,才去实现它。
    
    • Do The Simplest Thing That Could Possibly Work
    做最简单可行的事情,只关注问题的本身
    
    • Separation of Concerns【分离关注点】
    1)简化软件应用程序的开发和维护
    2)分离的关注点可以重用、独立的开发和更新
    3)将程序功能分解为尽可能少重叠的独立模块
    
    • DRY【don't repeat yourself】
    1)程序中的每一个重要功能都应该在源代码中的一个地方实现
    2)将功能类似的函数抽象出来,固定不可变的部分、封装可变的部分【行为参数化】
    3)类似而重复的代码会导致系统混乱、不可重构、维护困难  
    
    • Code For The Maintainer【为维护人员编写代码】
    1)Don't make me think.
    2)逻辑清晰、注释完整
    
    • Avoid Premature Optimization【避免过早优化】
    1)过早优化是万恶之源
    2)在发现瓶颈、整体分析之后才去优化它
    
    • Minimise Coupling【低耦合】
    1)耦合度高时一个模块的变化,通常会对其他模块产生连锁反应
    2)隐藏实现细节,以减少类间耦合
    3)剔除所有无关的代码
    
    • Composition Over Inheritance【组合优于继承】
    1)组合相比继承而言,类间耦合度更低。
    2)当类间存在 has a 的关系时使用组合,当类间存在 is a 的关系时使用继承。
    
    • Orthogonality【正交】
    概念上不相关的东西,不能在系统内部出现关联。
    
    • Robustness Principle【鲁棒性原则】
    1)向其他系统发送的消息必须符合规范。
    2)接收输入的代码除了能够接收规范的消息外,也能应对非法输入。
    
    • Maximise Cohesion【高内聚】
    1)将功能相关的函数组织在同一个类中
    
    • Hide Implementation Details【隐藏实现细节】
    1)面向接口编程,通过接口来隐藏实现细节
    2)最小化类中成员的可访问性
    3)不要公开数据成员
    4)避免将私有实现细节放入接口中
    
    • Encapsulate What Changes【封装可变的部分】
    1)将最可能变化的部分封装在 API 中
    2)将不同的概念分离到自己的模块中
    
    • Boy-Scout Rule【童子军规则】
    1)对于每次提交,确保它不会降低代码库的质量。
    2)任何时候,只要看到可重构的代码,立即重构它。
    
    • Command Query Separation【命令查询分离】
    1)每个方法,要么执行更新,要么执行查询,不能两种行为都出现。
    2)将每个方法实现为命令或查询,将命名约定应用于方法名称。
    
  • 相关阅读:
    NGINX新手小白快速上手Centos搭建Nginx服务器
    Nginx+SSL+gunicorn+gevent+Django的配置
    nginxhttpflvmodule 的部署
    gunicorn+Django加载静态文件
    正确利用 ADO.NET
    五种提高 SQL 性能的方法
    关于能够触发BFC特性的属性,以及它们各自带来的副作用
    PID库与PID基本优化(四)
    PID库与PID基本优化(二)
    Mahony姿态解算算法笔记(一)
  • 原文地址:https://www.cnblogs.com/zhuxudong/p/10176448.html
Copyright © 2011-2022 走看看