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

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

  我选择的是Siddhi的源代码,该项目使用的编程语言是Java.其目录结构如图1所示。目录结构清晰明了,各个模块负责什么功能,仅从名称就能够大体猜出。该项目中,根据模块划分了若干个不一样过的目录。命名规则为,项目名siddhi为前缀,以‘-’隔开,加上各模块实现的功能。好比,siddhi-core中,存放的是Siddhi的核心模块,主要功能在这里实现。siddhi-samples存放的就是官方提供的一些示例,能够供开发者进行测试使用。程序员

图1编程

  如图2所示,是siddhi-core模块中包名的格式。将各个相关的类放入一个包进行管理。从图2能够看出,siddhi-core中的主要模块有,聚合模块、查询模块、存储模块等等。负责管理全局的类就直接放在siddhi-core这个包下,好比SiddhiManager、SiddhiRuntimeImpl.从类名就能够看出SiddhiRuntimeImpl类是SiddhiRuntime接口的实现。设计模式

图2多线程

  图3到图5展现的是项目中类名的命名风格。类名使用 UpperCamelCase 风格,听从驼峰形式。异常类命名使用 Exception 结尾;测试类命名以它要测试的类的名称开始,以 TestCase结尾。这样作的好处显而易见,开发者仅从类名就能很清楚地知道该类是属于测试仍是异常。架构

 图3编程语言

图4函数

图5单元测试

  图六、图7是变量名和方法名的命名风格。方法名、参数名、成员变量、局部变量都统一使用 lowerCamelCase 风格,听从驼峰形式。为了达到代码自解释的目标,任何自定义编程元素在命名时,都使用尽可能完整的单词组合来表达其意。测试

   图6优化

图7

  • 列举哪些作法符合代码规范和风格通常要求;
  1. 类名、方法名、变量名听从驼峰形式,名称自己含有意义,能够达到自注释的目的;
  2. 常量命名所有大写,单词间用下划线隔开;
  3. 抽象类命名以Abstract开头,异常类以Exception结尾,测试类以TestCase结尾。各个类的做用一目了然;
  4. 若是使用了设计模式,类名会以Factory、Listener等结尾,有利于读者理解代码含义。
  • 列举哪些作法有悖于“代码的简洁、清晰、无歧义”的基本原则,及如何进一步优化改进;
  1. 将某些类命名为Executor,与JDK中多线程的部分类名重合,容易让开发者产生误解。建议命名为Operator.
  2. 注释少,没有Javadoc,有时要想知道方法的参数和返回值的含义,须要进入方法,看具体实现才能搞清楚。
  3. 有些地方注释含义模糊,方法太长,不利于源码阅读。建议将代码进行重构,过长的代码段能够拆分红多个小的方法。
  • 总结同类编程语言或项目在代码规范和风格的通常要求

  现代软件架构都须要协同开发完成,高效协做即下降协同成本,提高沟通效率,所谓无规矩不成方圆,无规范不能协做。因此项目中的成员应该选择一套统一的代码规范。

  常见的有

  1. 名称要以驼峰形式,方法名、参数名、成员变量、局部变量都统一使用首字母小写的驼峰风格,类名使用首字母大写的驼峰风格;
  2. 命名要有意义。代码中的命名禁止使用拼音与英文混合的方式,更不容许直接使用中文的方式。正确的英文拼写和语法可让阅读者易于理解,避免歧义
  3. 缩进要统一。好比,采用 4 个空格缩进,禁止使用 tab 字符。if/for/while/switch/do 等保留字与括号之间都必须加空格等。

  对于Java这门编程语言来讲,阿里巴巴公司为了规范Java的代码风格,推出了《阿里巴巴Java开发手册》。Java程序员能够根据该手册上的说明进行编码。不只如此阿里还在IDEA上开发了一款名为阿里编码规范的插件,只要下载并安装此插件,能够自动对代码进行编码规范检测,能够说是十分方便了。

  图8 不符合编码规范会有提示

相关文章
相关标签/搜索