程序员垃圾代码分类指南

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

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

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

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

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

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

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

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

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

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

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

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

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

干垃圾  | 虎躯一震代码

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

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

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

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

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

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

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

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

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

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

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

:startstart cmdgoto start

我当时就震惊了

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

当我下次再见到他时,他竟然带着两个人一起把整个办公室的电脑都创建了这个鬼东西???可以想象的是,这位小朋友前途一片光明。

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

湿垃圾 |  风骚代码

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

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

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

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

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

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

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

有害垃圾  | 毁灭性代码

三行代码教你做人:

drop databaserm -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…,并且把它打成组件包的时候,不知道会发生什么。

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

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

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

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

 可回收垃圾 | 可回收代码

一个关于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");}

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

他说,差不多了。。。

然后我啥也没说,默默接过来,把代码写完,然后给头说了

第二天,这小伙就接到HR通知,明天不用来了。

其实这个程序员还是可以在培养的,也就错了两个地方而已,这个老程序员太认真了。

可回收垃圾建议处理措施:回收加工再利用。

牛逼的代码

其实人生中最牛逼的代码是:

public class Test{public static void main(String[] args){System.out.println(“Hello World”);}}

当输出了 Hello World 的时候,18岁的我感觉到了自己与同龄人的不同,那种自豪感,那种快乐油然而生。仿佛那不是一段冷冷的代码,而是我人生的方向标。至此,纪念我程序生涯的开始。

结束语

其实各个公司都存在一定的祖传代码,这些代码就是一个垃圾宝库,有时候你根本不知道它是在干嘛,甚至觉得它几百年可能都没有使用过,但最关键是不敢动!

别问我怎么知道的!

自此以后,遇到一些看着很奇怪的代码压根儿碰都不敢碰。

有时候心血来潮改点东西……代码从头错到尾……

有时候当你只删了一行代码时,可能会发生下面这种情况

你说哪家公司完全没有垃圾代码,我是不信的!如果有,那就是刚成立的。

警告:文中所有代码均收集于网络,文中故事皆为虚构,如果雷同,请来赞赏

请勿将文中代码应用于任何场景中,个人娱乐谨慎尝试!!

参考链接:

https://www.zhihu.com/question/287421003

https://www.zhihu.com/question/20402322

Image placeholder
Simon1030
未设置
  24人点赞

没有讨论,发表一下自己的看法吧

推荐文章
程序员垃圾分类图鉴

如今我国正大力推广垃圾分类作为一名奋斗在一线的程序员不禁让人想问这样一个问题:干垃圾 |装逼程序员2017年,微信群一段对话小D:微笑,你们公司使用的是什么技术?微笑:主要用的是PHP+Memcach

5位女性程序员的自白:计算机不撒谎;女程序员的代码一样也很棒

谁说这个领域就是男性的天下偏见本身就是一种带标签的想法她们的世界里只信奉“computer never lies”她们认为代码漂亮比发型漂亮更重要她们到底是谁?谷悦是喜欢简单、纯粹工作的气质女神,八年

不完全指南:程序员怎么找海外工作

这两年,越来越多的技术人想去海外工作,不是去东南亚,而是以英文为主的美国、加拿大、英国、新西兰、澳大利亚等国家,尤其是活跃在一线城市、年薪可观的程序员老哥们。土哥认识几个在北京工作的大佬,他们对海外工

浅析 PHP7 的垃圾回收机制

垃圾回收机制 垃圾回收机制是一种动态存储分配方案。它会自动释放程序不再需要的已分配的内存块。自动回收内存的过程叫垃圾收集。垃圾回收机制可以让程序员不必过分关心程序内存分配,从而将更多的精力投入到业务逻

机器扭碎,强力消磁还能恢复!数据中心年年升级,废弃“云垃圾”让谷歌头大

大数据文摘出品作者:蔡婕、林安安、曹培信今年7月1日,《上海市生活垃圾管理条例》正式实施,它被称为“史上最严垃圾分类措施”。条例一出,这4种颜色的桶,就彻底改变了上海人民的生活。但是一种新型的垃圾——

咱们从头到尾说一次 Java 垃圾回收

⬆️图片来源于网络之前上学的时候有这个一个梗,说在食堂里吃饭,吃完把餐盘端走清理的,是C++程序员,吃完直接就走的,是Java程序员。🤔确实,在Java的世界里,似乎我们不用对垃圾回收那么的专注,很多

代码传奇 | 身价10亿的程序员 雷军当年也为他打工——WPS之父 求伯君

他的前半生,值得我们每一个人深思。在普通人眼里,他寂寂无名,只有年岁稍长的文化人,才听说过他传奇般的存在。在IT人眼里,他是块活化石,中国第一的大旗除了他,没人敢抗!他是求伯君,从一个浙江穷山村走出来

程序员朋友们,请答应我?别再去东南亚写代码了好么?

来源公众号丨半佛仙人(ID:banfoSB)“真的救我一条‘狗命’,可以吗,谢谢您了,我真的撑不住了。”5月3日,在朋友圈看到这条信息,附着一张长图,定位:泰国亚兰,PrincessCrownCasi

leveldb源代码分析系列1:MemTable的实现

MemTable及其实现这是一个第零层的主题,预计扩展如下第一层主题:1.1comparator介绍1.2skiplist实现介绍1.3数据压缩相关介绍1.4Put流程1.5Get流程leveldb中

leveldb源代码分析系列1.1:memtable中comparator的实现

leveldb中memtable封装了一个skiplist用来存储真正的数据,跳跃列表的实现一定需要定义存储项的序关系,而在leveldb中这个序关系通过comparator相关类来实现。leveld

leveldb源代码分析系列1.2:skiplist实现

skiplist的实现介绍leveldb中的SkipList是一个模板类,其模板参数的类型分别是存储的Key类型和Comparator类型。虽然名字是Key类型,但其实存储了整个entry,只不过Co

Protobuf 生成 Go 代码指南

这个教程中将会描述protocolbuffer编译器通过给定的.proto会编译生成什么Go代码。教程针对的是proto3版本的protobuf。在阅读之前确保你已经阅读过Protobuf语言指南。编

可视化编程是否真的没有未来?程序员:它有“七宗罪”

今天想聊聊可视化编程(visual-programming)的未来发展,喂喂,咱们这儿还没开始,各位大佬先别急着走啊您……确实,可视化这个概念跟任何技术并称,都是技术前沿、下一个风口、万亿市场的代名词

程序员必备工具箱

作为一名初级开发人员,我们经常会遇到许多不同的技术,对我们来说都是新鲜和陌生的,伴随着总有人说这将是下一个热点,我们必须学习。类似的话我已经听了好多年了,并且已经找到了一些模式,可以适当的抽象出你的工

编程书说的 “Go 程序员应该让聚合类型的零值也具有意义” 是在讲什么

在《Go语言编程》这本书和很多其他Go编程教程中很多都提到过“Go程序员应该让一些聚合类型的零值也具有意义”的概念,我们这篇文章主要说一下有意义的零值这个话题。 在Go中声明变量时如果初始化表达式被省

Java 程序员眼中的 Linux_1.0.Linux 介绍

Linux介绍 Linux这个名字 Linux的Wiki介绍:http://zh.wikipedia.org/zh/Linux Linux也称:GNU/Linux,而其中GNU的全称又是:Gnu’sN

[Java 程序员眼中的 Linux] Linux 下常用压缩文件的解压、压缩

Linux下常用压缩文件的解压、压缩 常用压缩包解压命令整理 Linux后缀为.tar.gz格式的文件-解压 命令:tarzxvfXXXXXX.tar.gz Linux后缀为.bz2格式的文件-解压

程序员常用的十款开发工具推荐

工欲善其事必先利其器。对于程序员来讲,好用的开发工具可以大大提高开发效率。本文将向大家推荐程序员常用的十款开发工具,希望能帮助大家更加优雅地写出代码。这些工具分别是Arthas、ChaosBlade、

IT程序员工资一般多少钱?薪资水平如何?

  IT程序员工资普通几钱?薪资程度如何?程序员工资依据技术程度和地域差别薪资程度有很大的差距,北上广一线城市程序员工资大都在1万元左右,随着项目经历积聚薪资也呈现上升趋向。   IT程序员工资待遇引

程序员常用的15 种开发者工具推荐

  程序员常用的15种开发者工具引荐:Java线上诊断工具Arthas、IDE插件CloudToolkit、混沌实验注入工具ChaosBlade、Java代码规约扫描插件、应用实时监控工具ARMS、静

这波技术社区的程序员,技术视野有点堪忧!

前一段时间写了一篇文章《凌晨1点突发致命生产事故,人工多线程来破局!》,只是一篇生产事故的记实文章,没想到在圈内流传甚广,其中有程序员对其中的细节有点疑惑,刚好国庆可以和大家再进一步探讨一下。现在技术

程序员有话说:开发人员提升自己的四种方式

开发人员之间所谓的不同“级别”的界线是模糊 的。如果你问高级开发人员、开发经理或技术总监:“初学者、初级、中级和高级之间的区别是什么?”那么很有可能他们会给你截然不同的意见。由于存在各种各样的意见,因

程序员:我终于知道post和get的区别

IT界知名的程序员曾说:对于那些月薪三万以下,自称IT工程师的码农们,其实我们从来没有把他们归为我们IT工程师的队伍。他们虽然总是以IT工程师自居,但只是他们一厢情愿罢了。此话一出,不知激起了多少(码

@程序员,请万分珍重你的第一份工作

01、我的故事昨天我在群里发起了一个议题:读者朋友们,大家伙觉得第一份工作重要吗?回答不要太统一,重要个屁——不可能的。老读者都知道一些我的经历了。高考失利,因为太文弱干不了搬砖的活,就上了大专,大三

GitLab,是谁给了你歧视中国程序员的勇气?

GitLab安全漏洞不断,收集用户行为数据,今天又找到新的作死方法了。由谷歌投资的全球第二大开源代码托管平台GitLab在其官网上发布了一项声明,称他们决定为有权访问客户数据的团队成员启用“工作家庭国