标签:应该 info 服务 mamicode 避免 height 嵌套 结束 命令行
因为工程实践选择的课题是信息安全方向,因此本文选择了OpenSSL项目源代码作为分析对象。SSL是利用公开加密技术里面的RSA加密算法来作为用户端与服务器端在传送机密资料时的加密通讯协定。OpenSSL包含一个命令行工具用来完成OpenSSL库中的所有功能,更好的是,它可能已经安装到你的系统中了。OpenSSL是一个强大的安全套接字层密码库,Apache使用它加密HTTPS,OpenSSH使用它加密SSH,OpenSSL采用C语言作为开发语言,这使得OpenSSL具有优秀的跨平台性能,你不应该只将其作为一个库来使用,它还是一个多用途的、跨平台的密码工具。
1.结合工程实践选题相关的一套源代码,根据其编程语言或项目特点,分析其在源代码目录结构、文件名/类名/函数名/变量名等命名、接口定义规范和单元测试组织形式等方面的做法和特点;
【1】OpenSSL项目是由C语言开发的,其项目目录文件结构如下:
OpenSSL项目的目录下不仅包含项目的基本代码,还有doc文档、加密函数库、测试样例、工具文件、包含文件等等。整体结构清晰且完整,每一个模块的内容都是有一个清楚的层次和分类结构。
【2】文件名/类名/函数名/变量名命名
在文件名/类名/函数名/变量名命名方面,文件名一般都是依照存放文件内容来命名的,比如第一张图片中的md5、rsa以及sha等,其实文件夹中存放的就是和文件名中加解密算法相关的函数和头文件,目的也是为了和分类存放、保持条理清晰。类和函数的名字一般都是小写字母单词的组合,含义清楚,且函数一般设置为静态static,因为用static修饰的函数,一来会被限定在定义该函数的本源码文件中,而在其他文件中可以定义相同名字的函数,也不会发生冲突,二来不能被本源码文件以外的代码文件调用。变量名的命名原则与函数名类似,便于理解,且一般都是以局部变量为主,避免了变量重用可能带来的bug。此外,不允许随意更改的常量或者变量都严格采用const修饰。
【3】接口定义规范
接口定义上,规则与函数或者变量名类似,都是采取了小写字母组成的单词组成,且不同于驼峰命名法的是,每个单词之间利用下划线进行分割,便于区分名称含义。
【4】单元测试组织形式
OpenSSL测试是通过记录服务端和客户端进行加密通信的各项信息和通信结果来表述的,记录的是加密通信的成功与否、模式、秘钥以及其他额外的输出结果。
2.列举哪些做法符合代码规范和风格一般要求;
在OpenSSL项目中,详细分类、适当使用const和static用于访问控制,函数命名上虽然没有采用驼峰命名法,但是也是统一口径,采用下划线分割单词,同样简介明了,指针变量总是要初始或重置为NULL。对于嵌套式的语句--即语句块,例如if-else判断结构,应该包括在花括号中。花括号的左括号与关键字同行。即使语句块中只有一条语句,也使用了花括号包括起来,这样可以使程序结构更清楚,也可以避免因为结构问题运行出错。对更长的块,在末尾的花括号后加上注释表明该代码块结束。
3.列举哪些做法有悖于“代码的简洁、清晰、无歧义”的基本原则,及如何进一步优化改进;
对于参数个数较多的函数,应该统一规范,将每个参数进行换行展示,以避免过长的参数列表妨碍其他读者阅读代码的体验。
4.总结同类编程语言或项目在代码规范和风格的一般要求。
①,按常规使用的局部变量允许采用最短的字符,例如i,j,q等。
②,常量所有的字母均为大写,例如CLOCK_PER_SEC等。
③,函数/过程名称应使用能够表达函数具体功能的英文单词,例如SSL_use_PrivateKey_file()等。
④,类命名的名称首字母应该大写,方法名应该以小写字母开头,这样便于区分。
⑤,所有源程序文件必须有头部说明、版本说明和函数结构三个部分,用于对文件的版本信息进行显式的说明。
⑥,尽量避免航行末注释,使用行间注释,比如用‘’/* */”作为隔离行,以增强程序的可读性。
标签:应该 info 服务 mamicode 避免 height 嵌套 结束 命令行
原文地址:https://www.cnblogs.com/hesetone/p/11664300.html