返回介绍

码农必备技能:烂代码的处理之道(上)

发布于 2025-01-22 00:38:51 字数 2344 浏览 0 评论 0 收藏 0

“曾经有一份烂代码摆在我的面前, 我没有珍惜, 我没有把她变的更好, 相反我把她变的更烂!”

现在你的领导又交代给你个新功能,要求三天完成。

你一看代码就发现, 这活真不是人干的, 它经过 n 多人 n 多年的维护, 现在已经腐化的臭不可闻了。

这其中有很多人的贡献 ,包括"ijk 码农", 也有"汉语拼音码农" , 还有一些”Copy&Paste 码农“,

代码已经看不懂了, 注释基本就是摆设。

是否似曾相识?

(当然这个代码是为了搞笑, 实际上它是第 21 届国际 C 语言混乱代码大赛获奖作品 )

现在你有两种选择:

一、迫于进度压力, 随便改改, 烂就让它烂吧

“反正功能实现就行,烂代码也不是我的责任, 我得早点回去, 女朋友等我吃饭呢” :-)

二、我是个有“洁癖”的程序员,实在受不了这烂代码, 挽起袖子把它清理了,加班加点也在所不惜。

我相信绝大多数程序员都会选一, 人性是懒惰的。

但有那么“一撮”有追求的码农选了二, 于是几年之后, 这一撮码农升级了,优秀了, 与众不同了。

只有勇气和态度是不行的, 本文就讲一讲选择二的的码农用什么样的武器来清理这些烂代码。

1. 先做基本清理

前面提到的"ijk 码农", 就是变量的命名不考虑含义, 都是用一些英文字母 i, j, k , 在一些 for 循环中用用也就罢了,如果到处使用是要让人崩溃的, 别说别人看不懂, 自己过段时间估计也不知道什么意思了。

还有"汉语拼音码农", 就是用汉语拼音及首字母来组成变量, 如果没有注释, 简直如同天书一样。 你能想到 KFC 是开封菜吗, fujian 是福建还是附件? hn 是河南还是湖南? hanzi 汉字还是汉子?

更多的是”Copy&Paste 码农”就不用说了, 你懂的。

作为最基本的素养,给你的变量,函数, 类起个好名字实在是太重要了,不知道你有没有听说过“代码就是文档“的说法,良好的代码结构, 良好的命名让你的代码自解释, 根本不用写大量的注释就能让别人看懂, 我们每个码农都要努力向这个方向迈进。

古人作诗要推敲, 变量的命名也是这样, 我在写程序的时候对命名极为慎重,反复推敲, 时刻考虑着要让别人一看就懂, 还要让几个月以后,甚至几年以后的自己也能看懂。

这个能力是需要锤炼的, 你不妨从工作中开始, 在写代码中严格要求, 对每个变量、方法都尽自己最大可能让他们变的可读。

其实好的命名对英语水平是有一定要求, 这可能是很多程序员不愿意浪费脑细胞去好好起名的原因, 但是考虑到未来的好处, 还是多花点精力去思考吧。

先把 ijk 清掉, 这比较简单, 汉语拼音? 实在想不到对应的英语就查查字典吧, 顺便说下, 有道词典不错啊。

Copy&Paste 更简单,函数封装即可。

测试! 注意测试! 用函数封装重复代码其实已经伤及了逻辑, 有良好素养的码农肯定会用测试,甚至是自动化测试来保证正确性的, 这个话题我们以后展开来讲。

把命名弄好了, 你还要把变量放到合适的位置去, 很多人习惯于在函数的开始声明一大堆变量, 后续的代码中使用, 其实这样做会影响到可读性, 因为一般人都不会读开头的一大堆变量, 当变量第一次真正被后面的代码中使用的时候, 还得回过头去看看在哪儿声明的, 怎么初始化的, 这样上下的反复看, 其实很烦人。

所以如果不是语言的限制 , 最好把变量声明放在在第一次用到的地方, 一目了然。

2. 封装成函数

搞好了这些你可能发现代码还是乱糟糟的, 读起来很吃力, 这和我们码农的脑子容量有关, 就像内存一样 , 码农不可能一下子记住太多东西, 如果你写的函数中逻辑太多, 脑子没办法一下子记住的话,其实就是在提醒你要进行逻辑拆分了, 得把巨型函数拆成一个个小函数(再次提醒,函数的命名!), 现在很多 IDE 都支持抽取函数的功能, 并且这种重构非常安全, 不要浪费这么好的东西。

点一根烟,休息一下,审视一下现在的代码, 是不是好多了?

你能做到这一步, 编程素养终于入门了!

未完待续

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文