软件开发的一些建议
最近在机缘巧合下看到了几个关于软件开发的观点. 虽然都是别人的观点,但是我很认同,记录下来,方便以后查看.
新人代码的极限
新人开发一个项目,那么这个项目大小的极限大概在1500行代码左右.
这是因为在1500行代码之前,不需要什么设计模式,模块化编程,面向对象等等.
不论代码有多烂,1500行内的代码复杂度总不会太高.硬凭记忆和智商能理解的了.
突破了1500极限需要模块化,面向对象等等方法.下一个极限会在2w行左右到来.
突破2w行极限,需要面向接口编程,设计模式等方法.
再下一个极限在20w左右,不过我不知道是不是真的.
总之写大项目的核心就是:“让代码的复杂度,随行数线性而不是指数增加."
写出可维护代码的理论
很多科班出身的人,算法很好,然而代码很烂,比如我. 写出可维护的代码基本论文有三个:
- 坚持简单原则
- 可维护需要在项目一开始就考虑
- 只遵循一套原则(规范)
理论很简单,结合实际理解一下的话,就是:
代码单元越小越好,不超过15行最好.方便复用.
代码单元越简单越好,最好分支不超过4个.方便修改测试.
不写重复代码,即6行或以上相同的代码.方便源码定位.
保持接口简单,参数不要超过4个.简单上下文易重用和理解.
分离模块间的关注点,类不要太大.体积小耦合就小.
用消息共享内存,消息传共享内存的指针.避免锁.
开发和测试尽量自动化.省钱省时间.
坚持不信任原则
从输入到输出,处处设防,可以提高代码的健壮性.
输入是不是空,长度是否符合,内容是否安全等
服务本身不可信,要监控请求量,成功量,失败量,关键节点可用等.
依赖系统不可信,关键路径要备份.派票系统数据库要备份.
请求不可信,要做ip鉴权,白名单,限制最大请求量等.
机器不可信,宕机时刻会发生,要有容灾和心跳检测.
网络不可信,这个大家都知道.
人不可信,防止人乱操作.要做好日志,备份,回滚.