程序开发感想

1、要基于用例来做软件,而不是像库一样

2、 函数要有横向的模块性和纵向的层次性

3、分布式系统的同步数据最好使用同一份数据结构的定义文件(或者直接REST)
4、开发日志只适合用于bug驱动的开发,以用例为驱动的开发应使用UML配合敏捷的全程建模

5、改动别人的系统应以改动上层为自主(即使为此牺牲效率),大幅度改动底层不如重构

6、每个函数都应自己来亲自确保其参数没有超过边界条件,即使会造成重复

7、通信成本低的分布式系统的通信方式应采用基于共享同一份文件的通信方式(FIFO文件),该文件在网络中只应存在一份拷贝。sokcet是横向管道,人人一端,文件是纵向管道,人人一边

8、函数的调用者不需要保证传入的参数是正确的,也就是说函数应保证无论其传入任何值,其都应该有逻辑的工作

9、无状态的接口好过有状态的

10、大小端处理不保证的情况下,网络两端的通信应都以char定义解析

11、分布式系统的操作一定要是事务的,每个修改都要支持失败回滚

12、做用例之前,应该有完整的外部事件列表,有一个关于外部事件完整关系的视图

13、一个烂的架构会越来越烂,因为后续的人为了弥补原来架构的不足很容易做出破除初衷的修改,即使初衷是好的。架构修改者以修改量最轻为出发点,而不是以架构完整性最好为出发点

14、属于本函数的逻辑不能放到下一层去实现,每个函数只做一件事

15、一个数据只允许暴露一个修改接口,多个函数可以修改同一个数据不可接收

16、容错性高的设计,一种是事务化,一种是操作复位化。后者用于小系统可行且简单,但前者是业界选择的

17、代码量应该向下层移动,越向上应越整洁越简单

18、出于简化的封装,如果封装不完整,则弊大于利

19、代码中应保证逻辑的逻辑连贯性,而不是将多个逻辑的不同部分按功能分组组合。也就是说,关注纵向而不是横向(C与C++不是横向编程语言)




你可能感兴趣的:(c)