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

码农必备干活:Java编码——高效代码汇总小技巧 本文转载自:码农必备干活:Java编码——高效代码汇总小技巧 一. 常量&变量 1.1 当成员变量值无需改变时,尽量定义为静态常量 在类的每个对象实例中,每个成员变量都有一份副本,而成员静态常量只有一份实例。 反例 public class HttpConnection { private final long timeout = 5L; ... } 正例 public... 阅读详情

0?wx_fmt=jpeg

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

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

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

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

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

是否似曾相识?

0?wx_fmt=jpeg

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

现在你有两种选择:

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

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

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

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

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

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

1. 先做基本清理

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

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

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

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

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

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

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

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

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

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

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

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

2. 封装成函数

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

0?wx_fmt=png

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

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

未完待续

长按二维码, 关注"coderising"

加入QQ群:135769418 和更多热爱编程的朋友交流

现在群里有“小白扫盲班”, 每周布置作业,大家一起监督,一起学习。

“项目实战班”:可是真的项目需求哦,涉及大量Android,iOS, Web开发的技术, 同学们做完后参加工作,技术上就不用愁了。

0?wx_fmt=jpeg

码农必备!一文吃透Flink Flink 作为强大的开源流处理框架,有着支持事件时间语义、有状态计算、灵活窗口操作、高吞吐低延迟、容错机制强等诸多突出特点,在与其他框架对比中优势明显 ,应用场景也十分广泛。不管你是大数据领域的新手,还是经验丰富的开发者,Flink 都值得深入学习和探索。如果你也对 Flink 感兴趣,想深入学习它,欢迎在评论区留言分享你的学习心得和疑问,咱们一起交流进步! 阅读详情

相关推荐

混乱c代码大赛获奖作品集

混乱c代码大赛获奖作品集,很有意思,但是看看把

第21届国际C语言混乱代码大赛获奖作品

小行踪 2012-10-22 14:10 第21届国际C语言混乱代码大赛(IOCCC)正式发布了获奖源代码。IOCCC要求参赛者写出最有创意且最让人难以理解的C语言代码,大小限制在4 kb以内,因此每位参赛者的作品都让人印象深刻。获胜者包括1名法国人,1名韩国人,5名美国人,1名比利时人,1名以色列人,1名英国人,4名日本人和1名中国人。 选取了几个代表性作品大家...

weixin_33971205的博客 846

Keil C51里用printf打印数据,为啥总出乱码?手把手教你%bd、%hd、%ld的正确用法

本文深入解析Keil C51中printf打印数据出现乱码的根本原因,并提供格式符%bd、%hd、%ld的正确用法指南。通过详细的调试技巧和实战案例,帮助开发者解决串口输出问题,提升单片机开发效率。

weixin_26854829的博客 281

国际C语言混乱代码大赛 获奖作品

国际C语言混乱代码大赛(IOCCC, The International Obfuscated C Code Contest)是一项国际编程赛事,从1984年开始,每年举办一次(1997年、1999年、2002年、2003年和2006年例外)。目的是写出最有创意的最让人难以理解的C语言代码。 1、 #include<stdio.h> ...

whatday的专栏 4万+

Android定位权限全解析:从基础配置到后台持续定位的完整解决方案

本文全面解析Android定位权限体系,从基础配置到后台持续定位的完整解决方案。涵盖LocationManager和FusedLocationProviderClient等主流API的对比选型,详细讲解动态权限申请、精确定位与模糊定位的智能切换,以及Android 10+的后台定位适配策略。帮助开发者构建兼顾精准度与电量友好的定位方案,适用于导航、运动轨迹记录等多种场景。

weixin_29310605的博客 621

从原理到实践:MIPI D-PHY v1.2的HS-Deskew功能全解析(附时序图详解)

本文深入解析MIPI D-PHY v1.2的HS-Deskew功能,从技术背景到实现机制,详细介绍了其在2.5Gbps高速传输中的关键作用。通过时序图详解和实测数据,帮助工程师理解并应用这一技术,解决信号完整性问题,提升系统可靠性。

weixin_30300225的博客 309

国际C 语言乱码大赛(IOCCC)1988年获奖作品

#i nclude main(t,_,a)char *a;{return!0<t?t<3?main(-79,-13,a+main(-87,1-_, main(-86,0,a+1)+a)):1,t<_?main(t+1,_,a):3,main(-94,-2

无知的我 4918

Sylvester结式法求解多项式方程

Sylvester结式法,结式,消元法,ctfshow 七夕杯 LUCK7,crypto,WriteUp

u010883831的博客 4536

国际C语言混乱代码大赛(IOCCC)1988年获奖作品

国际C语言混乱代码大赛(IOCCC, The International Obfuscated C Code Contest)是一项国际编程赛事,从1984年开始,每年举办一次(1997年、1999年、2002年、2003年和2006年例外)。目的是写出最有创意的最让人难以理解的C语言代码。

CaptainUniverse_的博客 4206

PCIe控制器深度解析-RK3588 PCIe子系统核心模块探秘

本文深度解析了RK3588芯片中PCIe子系统的核心架构与功能模块。文章将PCIe控制器比作智能交通枢纽,详细阐述了RADM、XADM、CDM、eDMA等核心模块的工作原理,包括数据流管理、地址转换、DMA加速及电源管理。旨在帮助开发者和硬件工程师深入理解RK3588 PCIe控制器的内部机制,为驱动开发、性能优化和故障排查提供清晰的思路与实用指导。

weixin_29246195的博客 189

深入大模型-13-大模型Skills应用之标准目录结构和开发一个Skill的步骤

首先对比Prompt工程,上下文工程,Skills工程,MCP工具的概念与区别,然后介绍Skill的标准目录结构,同时描述了开发一个Skill的步骤和最佳实践。

qq_20466211的博客 748

1987年国际C语言混乱代码大赛获奖的一行代码

macb() ? lpcbyu(&gbcq/_\021%ocq\012\0_=w(gbcq)/_dak._=}_ugb_[0q60)s+                      这是CoolShell博主之前做了一个很有意思的在线puzzle,仿照一些前端过关的游戏,做了几个和程序员有关的迷题,一个通关游戏,这个事测试的第二题。并为通关的前十名送上《Unix环境高级编程(第三版)》(感

小刘同学_iOS的专栏 5073

Transformer实战(5)——Hugging Face环境配置与应用详解

本文详细介绍 Transformer 模型的实践应用全流程。首先讲解基于 Anaconda 的环境配置,包括 transformers 库安装及 hf-mirror 镜像加速方案。然后以 BERT 为例,演示分词器使用、文本编码及 fill-mask 等任务实现,对比 PyTorch/TensorFlow 框架差异。接着展示 Hugging Face 社区模型应用,包括 GPT-2 文本生成和零样本分类。最后扩展至多模态领域,使用 CLIP 模型实现零样本图像分类。

盼小辉丶的博客 1万+

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

接上一篇 烂代码的处理之道(上)3. 封装成类但是我们不会就此停步, 你再看看代码,发现这么多小函数的调用其实是很凌乱的, 尤其是一些参数在函数之间传来传去, 看起来很扎...

码农翻身 422

元宇宙通证- 九、IT/ICT发展史全景长图

九、IT/ICT发展史全景长图 (一)综述 IT是Information Technology的缩写,意为”信息技术“,包含现代计算机、网络、通信等信息领域技术。自1844年人类历史上发出来第一份电报,实现了信息的长图传输,信息技术发展的历史大幕随之拉开。信息技术的普遍应用,是进入信息社会的标志。 IT技术最早发源于半导体,然后发展处计算机、通信网和互联网,进而演进到现在的AI、XR、计算机、大数据、物联网、工业互联网、区块链、量子计算等。 有人说元宇宙是下一代互联网,有人说元宇宙是互联网的终极形态。 我们

沧海之巅的专栏 1万+

贝叶斯统计 [韦来生编]

贝叶斯(Bayes)统计是近几十年来迅速发展起来的数理统计的一个重要分支。贝叶斯方法与经典统计方法的主要不同之处是进行统计推断时除了利用样本信息外,还要利用参数的先验信息,因此可以提高统计推断或统计决策的效果。它在经济、金融、生物、医学、自然科学和社会科学等许多领域具有广泛的应用。贝叶斯方法的研究已渗透到了统计学的几乎所有领域。作者在给中国科学技术大学概率论与数理统计专业本科生开设的“数理统计”课程中有一章专门讲授“贝叶斯方法和统计决策理论”,近十年来也给中国科学技术大学概率统计专业研究生开设过几次“贝叶斯分析”课。本书是在对过去讲稿的内容作了适当的增减和调整的基础上完成的。  本书共分六章。第1章是绪论,介绍了贝叶斯统计的若干基本概念,同时对必要的数理统计的基础知识有重点地作了回顾。第二章介绍了确定先验分布的若干可供选择的方法。第三章介绍了几类常见统计模型参数的后验分布的主要结果和计算方法。第四章和第五章分别介绍了“贝叶斯统计推断”和“贝叶斯统计决策”的内容。第六章介绍了贝叶斯统计计算的若干方法,包括蒙特卡洛方法和马尔可夫链蒙特卡洛(MCMC)方法以及相关统计软件的简介。本书的每一章附右大量的例题和习题,书末附有常用的几个表格和部分习题解答供读者查用。  大约可在54学时内讲授本书的第1章至第六章的主要内容,教师可根据学时需要选讲本书第1章至第六章的部分内容。书中标“*”号的章节可略去不讲,留给读者作为阅读材料。第六章例题中的R代码和部分例题的数据文件等可从作者个人主页下载。  作者在编写本书的过程中参考了J.O.Berger教授的《统计决策论及贝叶斯分析》和茆诗松教授编写的《贝叶斯统计》等书中的一些内容,以及《贝叶斯分析》一书中由张伟平博士编写的有关贝叶斯统计计算的一些内容。在此表示衷心感谢。  本书编写准备过程中,中国科学技术大学统计与金融系的几个研究生帮助完成了本书部分中文的录入和排版,作者对他们的辛勤工作表示真诚的感谢。高等教育出版社为本书的出版给予了大力支持。在此一并致谢。

探索人工智能领域:码农必备的技能清单

从监督学习中的决策树、支持向量机,到无监督学习中的聚类算法,再到强化学习中的策略优化,熟悉各种算法的原理和适用场景,才能根据具体问题选择最合适的解决方案。在当今科技驱动的世界中,人工智能(AI)正以前所未有的速度发展,成为了创新和变革的核心力量。对于渴望在这个充满活力的领域中崭露头角的码农们来说,掌握一系列特定的技能是开启成功之门的关键。这是一条充满挑战但也充满机遇的道路,只要不断努力和积累,就能在人工智能的浪潮中创造出令人瞩目的成就。此外,具备良好的问题解决能力和创新思维也是至关重要的。

zjjyliuweijie的专栏 535

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

码农的有趣灵魂:我不是一个写死代码的码农,我是一名程序员

今日,看到有些文章对码农和程序员做了一些界限划定和差异分析,吓得作者赶紧研究一下自己属于哪个身份,但当仔细查看了这些文章后,发现其实对于写代码的人来说,无非就像周星驰嘴里的”龙套“和”演员“之分,顿时感悟,你是属于码农还是程序员,并不是外界给你定义的,而是你自己对这份职业的态度和付出而形成的一个一种身份。刚好可以借助这段时间作者的一些所见所闻,写几个故事,逐一分析。文章提纲:有趣的码农程序员的自我...

weixin_34310369的博客 302

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

从码农到架构师:IT人必备的超能力技能树

技能树不是 checklist,而是成长地图建议:深度优先,兼顾广度;持续实践,定期复盘将“超能力”应用于创造价值,而不仅仅是解决问题。

2404_89164415的博客 431

《码农翻身》原文分章节阅读链接

最近发现了别人整理好的码农翻身里面的一些文章链接,这本书非常棒,公众号相信很多人也知道(coderising),不过由于这本书目前只有纸质版,因此在上下班这块时间段里没法方便的去阅读,所以这份整理好的带链接的目录就十分方便的解决了这个问题。 附上原文链接:https://blog.youkuaiyun.com/wudinaniya/article/details/81130079 补充一篇负载均衡文章:h...

静待花开 8032

从码农到工匠,程序员必备的两本提升自我修养的书

软件设计不仅是“技术”(Technique),更是一门“技艺”(Craftsmanship),要想控制复杂度,防止系统腐化。我们不能只满足做一个搬砖的“码农”,而是要坚持自己的技术梦想和技术信仰,怀有一颗“匠人”之心,保持专注、持续学习,每天进步一点点。唯有如此,我们才有可能“从码农走向工匠”! 程序员必备的两本提升自我修养的两本书: 重构:改善既有代码的设计(第2版) 本书的读者是专业的程序员,也就是那些以写软件为生的人。本书的范例和讨论,涉及大量需要阅读和理解的代码。这些都是用JavaSc

人邮异步社区 1321

你仅仅是个码农,还是软件工程师?你还“安于现状”,年龄一大你就遭企业淘汰了

IT 界知名的段子手曾说:对于那些月薪两万以下,自称 IT 工程师的码农们,其实我们从来没有把他们归为我们 IT 工程师的队伍。他们虽然总是以 IT 工程师自居,但只是他们一厢情愿罢了。 此话一出,不知激起了多少小猴子的愤怒,但却也只能默默地捏着工资条躲在小黑屋里伤心。然而,笔者认为,薪资的多少并不能成为分辨码农(普通程序员)和软件工程师(高级程序员,上面所指的IT工程师)的分界线。码农和软件工程师如果要强行去区别,最根本的区别不过是技术层次的不同。 码农: 顾名思义为编代码的农民,从本质上来说,码农就是.

测试萌萌 4734

软件开发人员必须具备的一些软技能,否则只能是码农!

软件开发人员(程序员,码农)除了写好代码之外,更需要在身体上、精神上和心灵上更强大、更健康。一个软件开发人员的成长,离不开软技能.软技能就是激活人资的能力,即是调动别人的资源和知识的能力以及调动自己知识进行创造性思维的能力!软技能能力值越高,处理事情的能力就越强,它是衡量一个人处理事情能力的量表! 一、学会快速找到可以copy的经验 老鸟说:软件开发=英语+搜索,软件开发作为一门应用性很强的学...

CSDnjava001的博客 605

从码农到架构师的跃迁密码:2025必备技能栈全图谱曝光

掌握程序员技能栈2025必备核心能力,助力从码农到架构师的跃迁。涵盖云原生、AI集成、微服务架构与DevOps实战方法,适用于高并发、智能系统等场景,提升技术广度与架构思维。进阶路径清晰,值得收藏。

DebugLoom的博客 750

从码农到技术专家:程序员三级跳必备的7项硬核技能,你具备几个?

掌握初级中级高级程序员标准,实现职业跃迁。本文解析从码农到技术专家必备的7项硬核技能,涵盖编码规范、系统设计、架构思维等关键能力,适用于各阶段程序员进阶路径。方法清晰、实操性强,值得收藏。

CompiTide的博客 421

读《代码整洁之道》有感——如何写出好代码

怀念小时候写作文了,布置作业,回去读《OOXX》这本书,然后写篇读后感,就叫“读《OOXX》有感”。 作为一个程序员,一直以来以写出好代码为目标。 但也迷茫过,究竟写出来的怎样才能算是好代码呢。 读了不少技术书,大多数都是以如何使用某个框架,某个技术,某个语言为主,也有像《程序员修炼之道》或《高效程序员的45个习惯》这样的,会告诉一个好的程序员必备的素质方面的书籍,当然像

Merlin91 595
上一篇: 不加断点调试的程序员是好程序员
下一篇: 码农必备技能:烂代码的处理之道(下)
码农翻身
码农翻身 《码农翻身》作者 《码农翻身》作者
博客等级 码龄8年 3万+粉丝 1084原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值