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

简介: 1. 什么样的代码让你想骂娘?什么样的代码最想让你骂娘,是这样的,代码层层嵌套或者是这样的密密麻麻,舍不得多一行免费空格又或者是那种又臭又长的代码呢?代码除了用来运行外,还有很重要的就是阅读,给自己阅读,或者给他人阅读,如果几个月后你自己都看不下去自己以前写的代码,呵呵…2. 我们需要漂亮的代码爱美之心,人皆有之。漂亮的代码,也是我们程序猿的追

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半自动重构等方式使程序变得已读。
我相信,通过这样处理后的代码至少看上去是不会再被骂了。

相关文章
|
5月前
|
JSON 自然语言处理 前端开发
学会这个插件,职业生涯少写 1w 行代码。
学会这个插件,职业生涯少写 1w 行代码。
42 0
|
存储 Java Devops
为啥我的代码库那么大?聊聊Git使用坏习惯
阿里代码平台开发同学 在阿里内网吐槽贴 本文作者用幽默又真实的文字总结了开发者日常工作中遇到的那些事儿。
为啥我的代码库那么大?聊聊Git使用坏习惯
|
数据可视化 开发工具 git
Git操作规范(个人见解)
Git操作规范(个人见解),每个公司都要有规矩,才能保证稳定的运行,所以,代码提交也要有规矩,不是吗
248 0
|
缓存 JavaScript 小程序
接手前同事代码,特别烂,各种BUG,看麻了。。。
接手前同事代码,特别烂,各种BUG,看麻了。。。
|
XML 数据库 Android开发
|
缓存 架构师 程序员
给正在努力的您几条建议(附开源代码)
给正在努力的您几条建议(附开源代码)
110 0
|
程序员 测试技术
阅读优秀代码是提高开发人员修为的一种捷径
导读:原文作者Alan Skorkin是一名软件开发人员,他在博客《Why I Love Reading Other People’s Code And You Should Too》中分享对软件开发相关的心得。
1204 0
|
Java 数据库 NoSQL
也许能帮到你一点!eboot框架基础版发布
每次开发都从0开始,重复造了无数个轮子,或者是把之前的项目抠出来,改吧改吧。但是技术的更新速度太快,甚至还见过现在开发的项目用jdk1.6的,因为老项目用的1.6······ 为了简化项目开始这一步的操作,有了开发eboot的念头,已经有很多前辈开发过类似这样的东西,在这里先感谢一下走在前面的前辈们,但是每个人的都会有一些不同,能给大家提供多一种的选择也就足够了 eboot简介 目前发布一个基础版,适用于中小型项目开发,后续会加入更多功能,以满足大型项目的需求。
1289 0

相关实验场景

更多
下一篇
无影云桌面