同型原理
同型原理指保持形式统一。统一不同人风格很难,同一个人急躁的时候和轻松的时候风格都不一样,何况不同的人。统一的内容包括但不限于:
统一的命名规则。
利用接口和适配器统一诸多类似算法。CDC系统的算法主要有:瑕疵检测、寻找极耳、寻找Mark孔,宽幅测量等,每种算法因为要检测的材料不同,有细微区别。可以统一成接口:输入图像,输出json串。
统一的文件格式,如:日志文件。
简化问题,问题有多个解。选择一个较优解。比如:命名管道,可以多个进程有同名管道的服务端和客户端,但限制每个管道只有一个进程有服务端,就可以满足实际需要。
出参在前,入参在后。
三种编程命名规则
一、匈牙利命名:开头字母用变量类型的缩写,其余部分用变量的英文或英文的缩写,要求单词第一个字母大写。
二、骆驼式命名法。变量一般用小驼峰法标识。驼峰法的意思是:除第一个单词之外,其他单词首字母大写。
三、大驼峰法(即帕斯卡命名法)把第一个单词的首字母也大写了。常用于类名,命名空间等。
对称原理
对称原理指的是保持形式的对称。包括但不限于:
分析时:输入有范围要求时,不仅要写出合法输入的处理流程,也要写出非法输入的流程。
设计时:切勿忽视异常设计,正确区分“客户、用户”。
控制逻辑的“真/假”,执行路径“通/不通”,控制条件“满足/不满足”,系统工作状态的“正常/异常”,处理结果的“异常/成功/失败”,线程、进程的“空闲、阻塞”,通信系统的“服务端、客户端”,文件、内存文件、命名管道的“读、写”,消息的“收/发”。
编程时:如果if else没有成对出现要,要考虑是否缺少else。switch语句每个分支是否需要、且有break,最后不要忘记default。
层次原理
指的是系统可以分为子系统,子系统可以分为孙系统,孙系统可以拆分成模块,模块可以拆分子模块,子模块可以拆分成语句。
线性原理
指某个系统、组件、模块可以用线性描叙,最多用矩阵描述。主要包括三点:一,禁用GoTo。二,尽量减少使用分支,比如用注册接口的方式代替分支。三,复杂部分拆分到一个函数中。
清晰原理
能清晰证明自身的正确性。包括:一,尽量使用清晰的方式,不用为了性能或炫耀而用一些不常规的方式。二,尽量使用规范、标准、习惯等团队大家都知道的东西。三,对于核心部分,使用形式化证明。
安全原理
防止意外和恶意破坏。包括如下四个措施:一,调用底层功能时,获取异常或错误信息。二,尽量少分配权限,只分配必要的权限。三,完善的日志系统。四,如果使用C语言,不会修改的对象和变量可以使用const。