善用SourceMonitor+Astyle,让代码维护者不再骂娘

1. 什么样的代码让你想骂娘?

什么样的代码最想让你骂娘,是这样的,代码层层嵌套

或者是这样的密密麻麻,舍不得多一行免费空格

又或者是那种又臭又长的代码呢?

代码除了用来运行外,还有很重要的就是阅读,给自己阅读,或者给他人阅读,如果几个月后你自己都看不下去自己以前写的代码,呵呵…

2. 我们需要漂亮的代码

爱美之心,人皆有之。漂亮的代码,也是我们程序猿的追求,它不仅能够完成要求的功能,而且还要整齐,有条理,易于理解。

漂亮的代码能够增强可读性,同时也减弱了出错的概率。最关键的一点,漂亮的代码不会被骂娘。

具体来说,漂亮的代码通常:

1. 代码缩进

2. 分支语句嵌套的层数较少

3. 每个函数的代码行数不会太多

4. 变量的命名有统一的风格

5. 文件命名有统一的风格

6. 注释有统一的风格

如此等等,这些都是实践中总结出来的结晶。也许你也注意到了,这些东西不就是编程规范吗?确实是如此。为了写出漂亮的代码,很多公司都会有自己的编程规范。

某些公司,还会对编程规范进行考试,足见其重视程度。

3. 善用佳软,助力代码变身

3.1 AStyle :一键代码格式化

作为一个狂放不羁的男子,我写代码从来不回头,怎么可能管你什么代码风格。尤其个人偏爱Linux,代码风格也是Linux的。对于一些非Linux代码风格的项目来说,在写完代码后,难道让我对着编程规范将函数内的大括号一个一个单独一行?

我需要一键格式化,就让我的代码风格由Linux变成GNU风格,变成JAVA风格。在我不高兴的时候,还能瞬间变回来。

我需要的就是 AStyle –支持”魔法换肤”,一键变换代码风格,堪称编码界的美图秀秀。

AStyle(Artistic style),可以集成到Eclipse,VS,SourceInsight等工具中,对代码进行格式化、规范风格。AStyle默认支持Linux,ANSI,GNU,JAVA等风格,也支持自定义风格。

当不同编码风格的程序员为一个项目共同贡献代码时,特别项目周期紧张时期,经常会出现各式各样的代码导致极低的可读性和可维护性。这个时候AStyle就能很好的解决这个问题。

对于我这样的懒人来说,不用去管代码缩进,将精力花在更重要的地方,就是一种减负。

3.2 SourceMonitor:识别坏味道

解决了代码风格后,是否就可以算做漂亮的代码了呢?

要知道再漂亮的衣服穿到胖子身上,也漂亮不到哪去(阿门,原谅我吧)。对于代码来说,符合代码风格只是第一步,漂亮的代码还要易于理解。让人容易理解的话,单个函数的代码行就不能太长,嵌套层数就不能太多,分支条件判断不能太多。这些工作不是代码风格能解决的。我们需要能够自动检查代码质量的工具-SourceMonitor。

SourceMonitor是一款代码质量检查的软件。能够检查文件中函数的个数,每个函数的代码行数,注释比例,函数的调用深度,圈复杂度等。

其中需要最关键的是每个函数圈复杂度和每个函数的代码行数。圈复杂度是指函数中可独立执行的路径,因此函数中每出现一次if/else/while,switch/case/break等,圈复杂度就加1.圈复杂度越高,说明函数中可执行的路径越多,也就越复杂。超过一定值如(15或者10)以后就要考虑能否将函数重构了。此外一个函数的代码行数如果太长,不能一屏显示的话,不容易让人记住和理解,也需要对该函数进行提炼。

3.3 Eclipse的半自动重构

利用SourceMonitor找出需要重构或提炼的函数后,难道又要我手工重构吗,有没有重构的工具呢?全自动的目前还没见过,如果有同学见到,请留言。相比来说,半自动的重构工具还是比较多的,Eclipse中就有一个重构菜单,提供函数提炼,变量或方法重命名等不少基础的重构功能。

Eclipse的半自动的重构能减少人工重构的错误,降低开发人员所耗费的精力,这也是为什么一个我作为C/C++程序员越来越喜欢Eclipse的原因。

回到最开始的话题中,我觉得想骂娘的代码无非有两种,一种是难用,一种是难看。

代码难用,这个问题比较深奥,本文没有讨论。

代码难看,可以通过格式化使程序变得美观,通过SourceMonitor识别代码中的坏味道,利用Eclipse半自动重构等方式使程序变得已读。

我相信,通过这样处理后的代码至少看上去是不会再被骂了。

时间: 2024-10-11 06:35:15

善用SourceMonitor+Astyle,让代码维护者不再骂娘的相关文章

使用AStyle进行代码格式化

转自:http://www.cnblogs.com/JerryTian/archive/2012/09/20/AStyle.html 在日常的编码当中,大家经常要遵照一些设计规范,如命名规则.代码格式规范等等.或者大家在看一些别人写的代码时,若代码格式不是很规范时,看起来是比较麻烦的. 今天就给大家介绍一款名为AStyle的代码格式化工具,Astyle是一个开源代码格式化工具,可以使大家在日常开发中非常方便的调整大家的代吗格式.支持多种开发语言, 支持多种格式化风格,本文主要简单介绍下怎样通过简

使用Astyle格式化代码

在github中clone了nanomsghttps://github.com/davidmpc/nanomsg.git的源代码,发现代码是google风格,即for.if后大括号没有另起一行,十分不习惯,因此需要改变代码格式. 参考http://blog.csdn.net/i_am_tom/article/details/54375266,在sourceforgehttps://sourceforge.net/projects/astyle/?source=typ_redirect中下载了ma

MDK(KEIL)使用Astyle格式化代码

关于Astyle Astyle 的全称是Artistic Style的简称,是一个开源的源代码格式化工具,可以对C,C++,C#以及Java等编程语言的源代码进行缩进.格式化.美化. Home Page: http://astyle.sourceforge.net/Project Page: http://sourceforge.net/projects/astyle/ 在Keil μVision中集成Astyle(以Keil μVison4为例) ①下载Astyle,解压到任意位置(Astyl

Python 编程语言要掌握的技能之一:善用变量来改善代码质量

如何为变量起名 在计算机科学领域,有一句著名的格言(俏皮话): There are only two hard things in Computer Science: cache invalidation and naming things. 在计算机科学领域只有两件难事:缓存过期 和 给东西起名字 — Phil Karlton 第一个『缓存过期问题』的难度不用多说,任何用过缓存的人都会懂.至于第二个『给东西起名字』这事的难度,我也是深有体会.在我的职业生涯里,度过的作为黑暗的下午之一,就是坐在

安装并使用CheckStyle/PMD与FindBug && 安装并使用SourceMonitor检测代码复杂度

一.安装并使用CheckStyle  (一)安装 (1) 首先从官网上下载net.sf.eclipsecs-updatesite_6.5.0.201504121610-bin 并解压chekstyle中的文件. (2)然后解压checkstyle文件中的压缩文件,将里面的两个文件夹plugins和 features下面的文件分别拷贝到eclipse目录下面对应的plugins和features目录,重启eclipse. (3)Eclipse中,选择Windows->Preferences->c

SourceMonitor安装及使用

SourceMonitor是一款免费的软件,运行在Windows平台下.它可对多种语言写就的代码进行度量,包括C.C++.C#.Java.VB.Delphi和HTML,并且针对不同的语言,输出不同的代码度量值. 像其他代码度量工具一样,SourceMonitor只关注代码,并为编码人员提供及时的反馈,它不是1款项目管理工具,不关注项目实行中从功能分析到设计编码,再到测试这全部进程. SourceMonitor只是一个“度量”工具,但是通过基本的度量,可以从代码表面层次发现1些根本的,基础的问题,

资深程序员冒死揭开软件潜规则:无法维护的代码

原始博文发布于: Roedy Green's Mindproducts (http://mindprod.com/unmain.html ). 翻译链接: 点击打开链接 2014年11月25日 03:11 如何编写无法维护的代码 让自己稳拿铁饭碗 ;-) Roedy Green 简介 永远不要(把自己遇到的问题)归因于(他人的)恶意,这恰恰说明了(你自己的)无能. -- 拿破仑 为了造福大众,在Java编程领域创造就业机会,兄弟我在此传授大师们的秘籍.这些大师写的代码极其难以维护,后继者就是想对

[ 转 ]编写高质量代码:改善Java程序的151个建议

记得3年前刚到公司,同桌同事见我无事可做就借我看<编写高质量代码:改善Java程序的151个建议>这本书,当时看了几页没上心就没研究了.到上个月在公司偶然看到,于是乎又找来看看,我的天,真是非常多的干货,对于我这种静不下心的人真是帮助莫大呀. 看完整本书,也记了不少笔记,我就分享一部分个人觉得有意义的内容,也为了方便以后自己温习. --警惕自增陷阱 i++表示先赋值后自增,而++i表示先自增后赋值.下面的代码返回结果为0,因为lastAdd++有返回值,而返回值是自增前的值(在自增前变量的原始

静态代码块(主要是注意执行顺序)

静态代码块在类最初被使用的时候执行一次,在构造函数执行之前执行,而且只执行一次. 只要用到类,哪怕没有new只是声明变量也会被执行但是只执行一次. (静态字段和静态代码块都是在类最初使用的时候执行一次) 1 public class MyJingTaiDaimaKuai 2 { 3 public static int i = test1();//1.最开始执行 4 public int age = test2();//new的时候先执行成员变量的初始化,再执行构造函数 5 6 static My