单一职责原则
要求在软件系统中,一个类只负责一个功能领域中的相应职责
开闭原则
要求一个软件实体应当对扩展开放,对修改关闭,即在不修改源代码的基础上扩展一个系统的行为
里氏代换原则
可以通俗表述为在软件中如果能够使用基类对象,那么一定能够使用其子类对象
依赖倒转原则
要求抽象不应该依赖于细节,细节应该依赖于抽象;要针对接口编程,不要针对实现编程
接口隔离原则
要求客户端不应该依赖那些它不需要的接口,即将一些大的接口细化成一些小的接口供客户端使用
合成复用原则
要求复用时尽量使用对象组合,而不使用继承
迪米特法则
要求一个软件实体应当尽可能少的与其他实体发生相互作用
代码编写步骤
1、分析任务目标,根据目标选择合适的代码设计模式
1.1、创建模式选择
1.2、结构模式选择
1.3、行为模式选择
2、整理思路、画出思维导图、或代码流程图
3、找到其中的关键对象、设计对象结构体
3.1、设计对象创建架构
3.1.1、设计命令工厂
3.1.2、根据命令工厂设计对象工厂
3.2、设计对象销毁架构
3.3、设计存储对象的数据库数据结构(出、入、排序、判空、销毁)
4、考虑时间空间复杂度,准备核心算法
5、代码编写:
5.1、设计模块,控制输入输出
5.2、设计日志管理体系,避免编写大量重复日志逻辑
5.3、编写代码自检逻辑,判断结果是否符合预期
5.4、拆分功能,不同功能在不同文件中实现
6、编写测试用例、完成代码测试
好的代码满足条件:
1、阅读容易理解
2、代码之间耦合度很低
3、代码规范,阅读优雅
4、方便扩展
5、时间复杂度低
注意事项
1、对象创建时如果对象之间有依赖关系,需要先创建最小元素对象,后续对象可以直接复用(抽象工厂模式思想)
2、对象一定要使用专门数据结构存储,后续释放空间也会十分方便。
3、日志中一定要包含函数行号和函数名,否则后续定位问题十分麻烦
4、如果程序中会执行大量的命令,导致整个函数执行速度缓慢,则在程序一开始就收集好相关数据,将数据保存在合适的数据结构中。
5、对于需要经常出、入、查找的数据,一定使用数据结构,如果不用,后续在程序里避免不了要手写,程序非常臃肿。
6、结构提编写习惯:
1、定义
typedef strcut CEPH_OSD{
int osd_id;
char ips[128];
}Ceph_Osd
2、声明
struct CEPH_OSD * tmp_ceph_osd = NULL;
3、使用
void test(Ceph_Osd *ceph_osd)
{
printf("just a test!\n");
}
7、结构中可以添加自己的show函数
8、结构中也可以加其他实现函数,争取一个结构完成一个任务
9、针对每个结构,需要实现一个创建和销毁函数,否则代码中大量冗余度很高,销毁代码尝试加在结构中
10、每千行代码做一个节点、做一次自测,完成后进行后续代码开发
11、设计结构时,可以考虑设计这种结构图,梳理自己思路