投资知识资产,学语言,看书,多交流
交流,写文档要考虑自己要说什么,列框架在写,像小说
熵:不要容忍破窗户
不要重复DRY:复用,学习他人
正交性:MVC去耦合,分层职责清晰,单测引入其他的量
可撤销性:接口不变,实现可变
领域语言:项目可以嵌入高级语言的脚本,完成一些功能
估算:选择合适单位,理解提问域的范围
纯文本的威力:unix哲学,文本data保存最久
shell:自动化,高效完成一些工作
IDE:用好一个编译器的高级特性,加快开发进度
源码控制(git):保证写的每一行代码,都源码控制,哪怕是小脚本、原型演示、makefile、readme。。。redo log
调试:小黄鸭,二分
文本操纵语言:学习perl
代码生成器:自动化输出需要的文本,源码控制
被动(独立存在文本):改IDE自动生成注释 goland
主动(一次就扔文本):符合DRY的代码复用、python脚本
让输入保持简单,函数简单可扩展
DBC:接受要严格,返回要尽量少
前条件、后条件、类不变项
liskov替换原则:继承和多态,子类要遵守合约(或更严格)
死程序不说谎
crash,not trash:早崩溃
assert编程:
何时使用异常:错误和异常要区分
配平资源:分配者,负责解除
指针置为nil,defer recover,为每个资源包一个类
解耦和得墨特尔法则
软件工程实践中的十大法
对开发人员有用的定律、理论、原则和模式
设计模式6大原则 SOLID原则
- 一、单一职责原则(Single Responsibility Principle) …
- 二、开放封闭原则(Open Close Principle) …
- 三、里氏替换原则(Liskov Substitution Principle) …
- 四、依赖倒置原则(Dependence Inversion Principle)
- 五、 接口隔离原则(InterfaceSegregation Principles)
- 六、 迪米特原则(Law of Demeter)也称最少知识原则
元程序设计
动态配置
时间耦合
Design for service
为并发进行设计:保护静态/全局变量,生成就初始化才可用,调用时机不确定
它只是视图
pub/sub
MVC
模型-查看器网络,分层结构
黑板模式
靠巧合编程:了解对前提假设(输入、时序)、使用的技术和库
算法速率:
重构
如何重构:不加功能,增加测试,保持步骤短小,剧烈改动破坏构建不兼容
易于测试的代码
测试什么:前条件、后条件、边界case’输入
邪恶的向导
需求之坑:找出用户做事的原因,而不是做事的方式
需求不是架构、不是设计、不是界面,是需要。保持抽象,以及对现实生活的描述
维护项目的词汇表
解开不可能解开的谜题:
等你准备好:从原型入手新项目
规范陷阱