分析一套源代码的代码规范和风格并讨论如何改进优化代码

1. 结合工程实践选题相关的一套源代码,根据其编程语言或项目特点,分析其在源代码目录结构、文件名/类名/函数名/变量名等命名、接口定义规范和单元测试组织形式等方面的做法和特点;

在本文中将要分析的代码是leveldb,该项目的源码目录结构如下:

其中

  • cmake:存放cmake构建项目的相关文件
  • db:leveldb的逻辑功能实现
  • doc:leveldb的相关文档
  • helper:文件系统的实现,提供文件操作的接口
  • include: 对其他project暴露的接口的头文件
  • port:跨平台实现
  • table:leveldb中主要数据结结构如sstable的实现
  • util:通用函数接口

  对于level中的命名规范遵循Google C++ Style Guide,其中文件名要全部小写, 可以包含下划线 _或连字符-,C++文件要以.cc结尾, 头文件以.h结尾。

  类名每个单词首字母均大写, 类名中不能出现下划线。普通变量使用小写字母和下划线的组合,类数据成员在普通变量的基础上最后以下划线结尾。而函数使用大小写混合和下划线组合的形式。

 

  命名空间的名称全部小写

  枚举中的的枚举值k开头剩余单词首字母大写

  宏命名使用字母数字和下划线的组合,其中字母全部大写

  对于leveldb中的注释全部使用//,在每个头文件中都会加上leveldb的license

  对于leveldb中的单元测试文件,会分布在各个具体实现的类的文件夹中,测试文件名以_test结尾,编译后测试的可执行文件会集中放在build/文件夹中

2. 列举哪些做法符合代码规范和风格一般要求;

  google作为当今的IT巨头,它的编码规范是在许多服务亿万用户的大型工程中磨炼出来的,那么它的代码规范并没有什么大问题,与当今的编码规范符合,因为有很多公司的编码规范也是按照Google Style Guide去实施的。

3. 列举哪些做法有悖于“代码的简洁、清晰、无歧义”的基本原则,及如何进一步优化改进;

  个人认为leveldb代码的最为难受的一点是它使用了两个空格的缩进,在我看来这种做法的层次不够清晰,在阅读时感觉十分不适应。解决办法:把两个空格的缩进改为最流行的四个空格缩进。

4. 总结同类编程语言或项目在代码规范和风格的一般要求。

  C++的一般要求为使用缩进为4格的Google C++ Style Guide。

  

posted @ 2019-10-12 12:32  ustc_yz  阅读(202)  评论(0编辑  收藏  举报