当前位置: 首页 > 科技观察

注意:史上最烂代码合集

时间:2023-03-17 10:58:28 科技观察

其实没有“史上最烂”的代码,只有“史上最烂”。想随便聊聊这个话题,也是豆瓣讨论。事实上,当系统复杂时,被称为坏代码是很常见的。当然,还有一些很短的代码片段,足以说明代码的作者不是一个很好的人。使用布尔类型很容易成为最糟糕的代码:if(isTrue())if(isTrue())doSomething();if(boolVal==true){.....}有一些无意义注:return1;//return1//如果flag为真,则返回trueif(flag)returntrue;更无意义的是这样的变量命名:publicstaticfinalintONE=1;publicstaticfinalintTWO=2;有人说最烂的代码片段应该是这样的:}}}}}}}}}}还有12306.cn,曾经被骂到流脓,代码摘录:varsig=0;if(searchwordl.indexOf("'")>-1||searchwordl.indexOf("\"")>-1||searchwordl.indexOf("%")>-1||searchwordl.indexOf("#")>-1||searchwordl.indexOf("&")>-1||searchwordl.indexOf("*")>-1||searchwordl.indexOf("(")>-1||searchwordl.indexOf(")")>-1||searchwordl.indexOf("@")>-1||searchwordl.indexOf("`")>-1||searchwordl.indexOf("/")>-1||searchwordl.indexOf("\\")>-1||searchwordl.indexOf(",")>-1||searchwordl.indexOf(".")>-1||searchwordl.indexOf("=")>-1||searchwordl.indexOf("<")>-1||searchwordl.indexOf(">")>-1)sig=1;searchwordl=searchwordl.replace("'","");//searchwordl=searchwordl.replace("","");searchwordl=searchwordl.replace("%","");searchwordl=searchwordl.replace("#","");searchwordl=searchwordl.replace("&","");searchwordl=searchwordl.replace("*","");searchwordl=searchwordl.replace("(","");searchwordl=searchwordl.replace(")","");searchwordl=searchwordl.replace("@","");searchwordl=searchwordl.replace("`","");searchwordl=searchwordl.replace("/","");searchwordl=searchwordl.replace("\\","");searchwordl=searchwordl.replace(",","");searchwordl=searchwordl.replace(".","");searchwordl=searchwordl.replace("=","");searchwordl=searchwordl.replace("<","");searchwordl=searchwordl.replace(">","");if(searchwordl=='请输入搜索条件'){alert("请输入搜索条件");returnfalse;}if(searchwordl==''){alert("请正确输入搜索词");returnfalse;}if(sig==1){alert("请正确输入搜索词");returnfalse;}document.getElementById('searchword').value=searchwordl;还有烂的JavaScript代码,太多了,就不贴了。越是灵活的语言越是难以驾驭,越容易看到超级烂代码。TiagoFernandez做了一个投票选出最差的JavaAPI:公式是:score=(Icanlivewith)+(Painful*2)+(Crappy*3)+(Hellish*4)结果,你猜对了吗?Java框架众多,语法严格,对于限制想搞破坏的程序员来说,确实很有帮助。但是真要造成伤害,想要限制,还是限制不了。之前接触过一个portlet的扩展类,一共几千行,觉得这段代码已经够烂了。但是后来看到5000多行的存储过程,7000多行的jsp页面——我以前一直觉得Java程序员的破坏力远没有C/C++程序员好。好像完全没有。在我的经验中遇到的最常见的坏代码包括以下几种:一些命名习惯,比如“cptct”,缩写成几乎是一个密码电报的方法名,很可能是被Basic中毒了,即使是早期版本的VisualBasic也在代码中强制执行了一些约束(例如变量名的长度、模块中允许的变量数以及模块的大小)。早些年的web项目(甚至包括现在一些小公司做的web项目),不懂解耦,不懂分层,逻辑都捏在一起,像一堆狗屎。页面模板直接访问数据库,样式代码遍布全球,HTML硬编码在各种逻辑中。在一些程序员眼里,“复用”==“继承”,只要有可复用的属性和公共方法,就尽量用无敌霹雳继承法解决,不管适不适合,一级再往上一层,***必然是一株粗壮无边的传承树。无尽的工具类。这种代码比继承大法的代码好不了多少。XXHelper、XXTools等静态类无处不在,但复用的愿景是比仅仅继承多了一种方式……不能使用标准库函数,封装好的类库。我见过几个这样的程序员。Integer、Long、Double等数值对象类型的定义和方法他们几乎不了解,但对String却很熟悉。所有的转换和校验都是在转换成String之后完成的。完成后返回。神级。本质是没有理解类的单一职责。用Java和C++写神类的程序员都可以。今年居然听朋友说,有相当工作经验的写Ruby的程序员,写了一个庞大的神类……满街跑的设计模式。本质是过度工程化。必须引入一个好的“newTemplate()”到工厂,然后一个策略模式和一个模板模式是不行的,最好加上注解来实现……大部分的JavaScript和CSS。没有解释。今天有同事说,代码之所以会变成烂代码,是因为写代码的人遇到的问题要比后来读代码的人多很多。虽然写代码的人解决了大部分问题,但剩下的问题还是足以让代码臭臭万年。但我不这么认为。早年看过VB代码和Delphi代码。虽然都是用来做界面开发的,虽然很多概念在今天已经落伍了,但是代码依然清晰易懂。有的程序员说工期紧,项目重,领导天天催我吐血,只好写烂代码。客观原因千千万万,我真的无话可说。毕竟在物质文明还很薄弱的时候,精神文明还是不要谈的好。然而,优秀的程序员是有追求的,人是麻木的,老是说项目压力大,给个松散的deadline,未必就无能为力了。有程序员说,唯物辩证法告诉我们,任何事物都有两个方面,所以我们要在糟糕的代码中学习好的设计,从糟糕的设计中学习……我说,加油。烂就是烂,就算你把屎塞进冰淇淋甜筒里也是屎,有什么意思?很多程序员总是有推倒重来的冲动,尤其是看到烂代码的时候。我也是,其实这很危险。而且,很多时候你重写的可能还不如他原来的烂代码。也许你解决了其中的30个问题并引入了50个新问题。重构还是要尽量做小的改动,在业务模型和流程清晰的情况下,从模块入手。打开和关闭总是很危险的。我总是说我不佩服15年前吃过这么多苦的程序员。令我佩服的是,在15年前的条件和理念下,他们还能写出看起来极其舒服的代码。优秀的程序员。不写烂代码,就是珍惜生命,节约资源,保护地球。编写好的代码是程序员的素质。没有那么多理由可以说。