史上最坑爹最烂的代码长啥样?你见过吗?
2020/9/16 5:03:48
本文主要是介绍史上最坑爹最烂的代码长啥样?你见过吗?,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
经历了的项目越多,看过的奇葩代码也就越多。发现烂代码的目的并不是抨击和取笑,主要还是为了避免让自己或者身边的人写出类似的代码。
码云上面就有个热门仓库 bullshit-codes[1] 专门收集史上最坑爹的代码片段。下面放几个比较有意思的给大家看看:
1.一行代码就可以搞定的,非要写的啰里啰嗦。不要给我扯什么可读性,以下代码一行的写法可读性也更好。
2.前大厂程序员设计的智能 AI 客服系统
效果展示:
3.只要我的代码够多,那你就很难看出有啥问题
/** * 三年前接手的一个政府网站项目,真假不知,据说是一个两年web开发经验的程序员写的, 用的spring系列还是3.x版本,前端还是jsp,可能是老项目。 * 主要特点是:实体类中不写注释,数据库表中也没有注释,命名经常使用英文拼音混合,而且还可能是简写(grzlChangeStatus:个人资料变更状态) * * 挖坑不填坑,菊花塞电灯 */@Controllerpublic class DemoController { /** * 这个方法一共有800多行,有30多个if或else if的条件判断,只写代表性的几个 * * 具体方法名称记不得,逻辑是这样,前端jsp提交一个请求过来,界面中除了一些必填信息外,还有有5个下拉框,后台判断各种组合, * 分别往request里面塞入不同的对象,返回的页面视图也可能不同。 */ @RequestMapping("/submit") public String template(HttpServletRequest request, HttpServletResponse response, HttpSession session) { String param1 = request.getParameter("param1"); String param2 = request.getParameter("param2"); String param3 = request.getParameter("param3"); String param4 = request.getParameter("param4"); String param5 = request.getParameter("param5"); // 你没看错,各种状态全部存字串,而且判断的时候不考虑空指针问题 if (param1.equals("已消毒")) { // 逻辑 request.setAttribute("attr", "value"); return "jsp1"; } else if (param1.equals("已消毒") && param2.equals("1.8米以上")) { // 逻辑 request.setAttribute("attr", "value"); // 你没看错,可能又是另一个视图 return "jsp2"; // 你没看错,还可能出现多个条件,|| 和 && } else if (param1.equals("已消毒") && param2.equals("2米以上") || param3.equals("缅甸")) { // 逻辑 request.setAttribute("attr", "value"); return "jsp3"; // 你没看错,因为他的状态或选项没有用数字类型,所以不能用 > < 之类的来判断,要列举所有状态 } else if (param1.equals("未进站") || param1.equals("已进站") || param1.equals("已消毒") && param2.equals("2米以上")) { request.setAttribute("attr", "value"); return "jsp3"; //你没看错,还会出现 true==true 或false==false这样的代码 }else if(param4.equals("禁止入境")==true && param5.equals("农用车")) { request.setAttribute("attr", "value"); return "jsp4"; //你没看错,还会出现逻辑非,而且,要先判断什么条件,从来不用括号包起来,要理他的逻辑,还要先理条件判断优先级 }else if(param1.equals("未进站") || param1.equals("已进站") || param1.equals("已消毒") && param2.equals("2米以上") && !param3.equals("缅甸")) { request.setAttribute("attr", "value"); return "jsp5"; } //省略剩下的30多个类似的判断 else { return "default"; } }}
以上代码的问题:
- 空指针异常
- 逻辑混乱,部分 else if 根本进不去
4.获取一天后的日期:让线程睡一会
5.新上的项目的代码命名,表示看不太懂
6.为了得到了一个用户总人数,把所有的 User 对象查询出来。
/** 统计用户总数,来源于N年前某个用户抱怨执行效率低,贴出类似逻辑的代码. @author wendal */ @IocBean public class CountUserTable { @Inject Dao dao; @Test public void test_user_count() { // 取出全部用户对象(dao.query返回List<User>),然后取list大小就可以啦,是不是很机智 int count = dao.query(User.class, null).size(); System.out.println("用户总数是" + count); } }
这篇关于史上最坑爹最烂的代码长啥样?你见过吗?的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-19永别了,微服务架构!
- 2024-05-15鸿蒙生态设备数量超8亿台
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?