专栏名称: 纯洁的微笑
分享微服务实践与Java技术干货、偶尔讲讲故事。在人工智能的时代,一起学习微服务架构演进和大数据治理。
目录
相关文章推荐
gooood谷德设计网  ·  朱小地:建筑是最大的公共艺术品 ·  昨天  
今晚报  ·  天津又一所“实验小学”,即将投用! ·  昨天  
今晚报  ·  天津又一所“实验小学”,即将投用! ·  昨天  
君哥说房  ·  2025老黄埔各大楼盘客观点评 ·  2 天前  
君哥说房  ·  2025老黄埔各大楼盘客观点评 ·  2 天前  
gooood谷德设计网  ·  北京招聘 | 大屿建筑事务所 – ... ·  2 天前  
51好读  ›  专栏  ›  纯洁的微笑

程序员垃圾代码分类指南

纯洁的微笑  · 公众号  ·  · 2019-07-25 09:09

正文

上一篇文章 《程序员垃圾分类图鉴》 和大家聊了聊程序员的垃圾分类,有的程序员直呼太真实,有的程序员觉得太讽刺,不应该给程序员进行这样的分类。

其实每个行业都会存在各种各样糟糕的情况,娱乐性的分类会将问题放大,让我们能站出来用另一个视角来看看,什么类型的程序员是我们应该避免的。

做为一名老程序员,谁还没有写过几行垃圾代码,我到现在还记得在第二家公司离职时,写的那段超过 600 行一个方法的代码,可以想象后面接手我工作的同事,看到那段代码是什么样的感受。

那段代码已经过去了6年多,我现在仍然记得,可见有多痛。那 600 行代码真的巨复杂,嵌套了至少四个 for 循环,处理了思科 IP 话机最复杂的话费解析功能。为什么会出现这样的情况,因为时间!

那是我快离职的时候,领导仍然坚持让我工作到最后一分钟,就是写这段逻辑,害怕我走了之后,短期内没人搞的懂这块逻辑,所以只留了够写代码的时间,优化估计没考虑。

在距离拿到离职证明还剩最后一个小时,我还改了最后一个 bug,其实那家公司和领导真的很不错,只是离职交接这件事情,确实搞的有点小匆忙。

我一直都认为:好的代码是不断优化出来的,而不是一次敲出来的。正常情况下代码编写应该只占用30% 的工作,后面 70% 的工作就是不断的去优化它。

可惜的是,在中国互联网目前的情况下,后面 70% 的时间被不断压缩到了极致。很多程序员写完代码的时候,工期就到了,急匆匆的提交测试、上线投产。

在这样的情况下,代码质量完美、生产不出问题那就是世界第九大奇迹。中国很多互联网公司老板都相信这种奇迹,这个事情本身也挺奇迹的。

有什么的环境,就会产生什么样的产物,有时候这也是一种现实。

所以工作中有一些垃圾代码也是正常的,但出现”虎躯一震“的代码就比较少见了,对”虎躯一震“的代码进行分类那就更有趣了。

有人说,垃圾代码也是有价值的,当然这个观点我是认可的,因为你的排泄物也是有价值的,只是这个价值用在哪里。

还有补充一句,文中案例均为虚构,如有巧合,请来打赏!


1


干垃圾  | 虎躯一震代码

虎躯一震? 被吓一跳算不算? 反正我再看到那段代码,我的表情大概是这样的:

有一次我开了一个网站,网页半天没有反应,页面的右下面有一个”清理缓存“的超链接,于是就好奇的点了一下,没想到它立刻就弹出了清理完成!

作为一名老司机,习惯性的按下了:Ctrl+Shit+I 快捷键,就发现了下面这段牛X的代码。

<a href="javascript:alert('清理完成!')">清理缓存a>

仔细查看了代码还发现有这样一个函数,del_yeye(); 一时看不出来这是要干嘛,跟着代码查过去发现是:

parent().parent().remove(); 

合着是要删除 爷爷 ,方法命名很形象、很具体,给五星好评!心中升起一片由衷的佩服,果然乃我辈之将才!

当然我们后端程序员也不能示弱,就比如下面这段示例,代码简洁,命名规范,没个三五年经验写不出来这种代码。

这是一名资深程序员的素养。

当我在知乎看到这个分享,才明白我国的编程大任,已经顺利的传递到了祖国的花朵。以下是 小咔的经历:

我曾经在我们学校办公室里看见一个六年级小学生熟练的在文本文档里敲出三行

start
start cmd
goto start

我当时就震惊了

然后再看他熟练的放到c盘里,改后缀为bat,然后在桌面上新建个快捷方式,更改图标,重命名为“六年级教案大全”?!

当我下次再见到他时,他竟然带着两个人一起把整个办公室的电脑都创建了这个鬼东西???

可以想象的是,这位小朋友前途一片光明。

干代码建议处理措施:不建议、不倡导,但可以在自己家的电脑试用!


2


湿垃圾 |  风骚代码


写这么骚的代码,你们领导知道吗?

比如这个程序员,写了一段自动呼叫电话的程序,是这样的:

char a;
printf (“请输入您要呼叫的号码\n”);
scanf(“%char”,&a);
printf(“error!\n”);
printf (“系统异常,自动转呼!\n”);
printf (“正在拨号:110”);

不知道用户看到这段提示的时候,内心是不是这样:

当然在我们这行,没有最骚只有更骚,据说下面这段代码是 AI 最核心的代码,价值1个亿!!

其实我只想拿它试试能不能拿它融到一个小目标!

湿代码建议处理措施:发扬光大!


3


有害垃圾  | 毁灭性代码


三行代码教你做人:

drop database
rm -rf /
shutdown -h now

竟然有程序员找到了更牛逼的玩法,比如

sudo chmod -R 000 /

这些代码看了不止会虎躯一震,心里还会一揪,这是在诱导犯罪呀。

网上流传着一段【C++党】变量定义

#define int double
#define true false
#define max min
#define min max

果然是奇才,这种牛逼的方案完全可以推广到 Python ,Java ,PHP ,Golang...,并且把它打成组件包的时候,不知道会发生什么。

真正的程序员都是要给自己留后路的,比如上线后甲方突然说程序运行效率太低了,突然要求项目响应速度提升十倍!作为一名年轻的程序员,可会能哭晕在甲方爸爸的办公室。

但是对于一个资深的程序员来讲,这个都不是事儿!一行代码搞定所有性能优化问题,并且可以按照百分比进行定制!

这就是一名资深程序员的价值!

有害代码建议处理措施:建议启动垃圾回收机制!


4


可回收垃圾 | 可回收代码


一个关于for循环的凄美爱情故事

男孩

for(;;)printf("I LOVE YOU\n");

女孩回复

for(;;)printf("I LOVE YOU\n");

个人觉得,循环一百次的时候,应该一个 Thread.sleep() 或者 break,不然看着好像有点累。

还有一名网友的经历:

我原话和他说,你判断一下这些参数是否为空,不为空,就存库,懂吗?

他答,懂。

后来,我转过来看他代码

String A = parm.get("A");
String B = parm.get("B");

上头是我接的参数(不是源码)

以下是他写的,除了参数名不一样,完全没改

if('A'=='空'){
}else{
    System.out.println("存入A");
}
if('B'=='空'){
}else{
   System.out.println("存入B");
}

我看完愣了一下,问,写完了么?

他说,差不多了。。。







请到「今天看啥」查看全文