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

相关文章
|
8月前
|
JSON 自然语言处理 前端开发
学会这个插件,职业生涯少写 1w 行代码。
学会这个插件,职业生涯少写 1w 行代码。
56 0
|
存储 Java Devops
为啥我的代码库那么大?聊聊Git使用坏习惯
阿里代码平台开发同学 在阿里内网吐槽贴 本文作者用幽默又真实的文字总结了开发者日常工作中遇到的那些事儿。
为啥我的代码库那么大?聊聊Git使用坏习惯
|
算法 Java Linux
注意!不看太后悔了!未来工作中如何多人协作?让我用git给你演示!
目前,我们的仓库中只有一个 master 主分支,但在实际的项目开发中,在任何情况下其实都是不允许直接在 master 分支上修改代码的,这是为了保证主分支的稳定。这时推送失败,因为你的小伙伴的最新提交和你推送的提交有冲突,解决办法也很简单,Git已经提示我们,先用 git pull 把最新的提交从origin/dev 抓下来,然后,在本地进行合并,并解决冲。要说明的是,我们切换到的是本地的 dev 分支,根据示例中的操作,会将本地分支和远程分支的进行关系链接。冲突,就使用我们之前讲的冲突处理解决掉冲突。
193 0
|
数据可视化 开发工具 git
Git操作规范(个人见解)
Git操作规范(个人见解),每个公司都要有规矩,才能保证稳定的运行,所以,代码提交也要有规矩,不是吗
259 0
|
缓存 JavaScript 小程序
接手前同事代码,特别烂,各种BUG,看麻了。。。
接手前同事代码,特别烂,各种BUG,看麻了。。。
|
运维 监控 前端开发
程序员告别 996 第一步:1 人搞定一个项目,摆脱“重复造轮子”
程序员告别 996 第一步:1 人搞定一个项目,摆脱“重复造轮子”
263 0
程序员告别 996 第一步:1 人搞定一个项目,摆脱“重复造轮子”
|
XML 缓存 Dubbo
令人头疼的代码命名规范……
令人头疼的代码命名规范……
665 0
令人头疼的代码命名规范……
|
自然语言处理 Ubuntu 程序员
程序员最头疼的事:命名
许多程序员认为编程时,如何命名不仅是他们面临的老大难问题,也是最重要的事情之一。
395 0
程序员最头疼的事:命名
|
程序员 测试技术
阅读优秀代码是提高开发人员修为的一种捷径
导读:原文作者Alan Skorkin是一名软件开发人员,他在博客《Why I Love Reading Other People’s Code And You Should Too》中分享对软件开发相关的心得。
1215 0
|
Web App开发 MySQL 关系型数据库
10款对开发者有用的Android应用
本文收集10款对开发者有用的Android应用,希望能对你的开发有所帮助。如果你还知道有其他对开发者很有用的Android应用?也分享出来吧。 列表如下: 1.Remote Desktop Client 该款应用帮你连接你的Windows电脑。
1180 0

热门文章

最新文章

相关实验场景

更多