本文共 2937 字,大约阅读时间需要 9 分钟。
推荐书籍
UNIX/LINUX 设计哲学
描述
按照哪一种思路或者标准来实现功能
功能相同
,可以有不同设计方案
来实现需求增加
,设计的作用才能体现出来小即是美
工具、功能、系统
,尽量做到小而精
让每个程序只做好一件事
分开
,让每个子程序都做好一件事情集合
,一个相互传感
的关系快速建立原型
最基本的需求
升级
新增功能或新需求、修复反馈问题
舍弃高效率而取可移植性
执行效率很高
,但是就一个地方能够使用,别的地方都不能用
执行效率不高
,但是可以移植、拷贝、复用
高效率
相对于代码的可移植性
来说,优先级要低很多
可移植性
硬件升级
采用纯文本来存储数据
效率
和可读性
上的取舍阅读分析
存储的空间更小、存储效率更高、程序间不用格式转换
可读性
,二进制转码可以利用效率的方式去弥补充分利用软件的杠杆效应(软件复用)
能抽象就抽象出来,能复用就复用
使用 shell 脚本来提高杠杆效应和可移植性
避免强制性的用户界面
以一个单独的软件存在,而不是一个系统的必备项
占用内存、用户界面的输入会引起安全性问题
限制一些复杂交互,从而避免一些安全问题
系统应该和用户界面是分开的,不要强制去绑定用户界面
让每个程序都成为过滤器
允许用户定制环境
允许用户去配置
尽量使操作系统内核小而轻量化
内核要小,轻量化
最核心的API
插件扩展
的方式来增加使用小写字母并尽量简短
沉默是金
各部分之和大于整体
寻求 90% 的解决方案
Single Responsibility Principle, SRP
如果功能过于复杂就拆分开,每个部分保持独立
相互关联、相互利用
的关系Open-Closed Principle, OCP
对扩展开发,对修改封闭
增加需求时,扩展新代码,而非修改已有代码
成本高,对整个开发流程及测试人员一个很大的压力
容易造成冲突
Liskov Substitution Principle, LSP
子类能覆盖父类
Interface Segregation Principle, ISP
保持接口的单一独立,避免出现 "胖接口"
Dependence Inversion Principle, DIP
面向接口编程,依赖于抽象而不依赖于具体
Law of Demeter, LoD
降低各个对象之间的耦合,提高系统的可维护性
Composite Reuse Principle, CRP
对象组合
,而不是继承
来达到复用的目的继承关系是强耦合,组合关系是低耦合
// 加载图片function loadImg(src) { var promise = new Promise(function (resolve, reject) { var img = document.createElement('img') img.onload = function () { resolve(img) } img.onerror = function () { reject('图片加载失败') } img.src = src }) return promise}var src = 'https://www.imooc.com/static/img/index/logo_new.png'var result = loadImg(src)result.then(function(img) { console.log('img.width', img.width) return img}).then(function(img) { console.log('img.height', img.height)}).catch(function(ex) { // 统一捕获异常 console.log(ex)})
单一职责原则体现
开放封闭原则体现
转载地址:http://xcqwi.baihongyu.com/