史上最坑爹最烂的代码长啥样?你见过吗?

经历了的项目越多,看过的奇葩代码也就越多。发现烂代码的目的并非抨击和取笑,主要仍是为了不让本身或者身边的人写出相似的代码。前端

码云上面就有个热门仓库 bullshit-codes[1] 专门收集史上最坑爹的代码片断。下面放几个比较有意思的给你们看看:程序员

1.一行代码就能够搞定的,非要写的啰里啰嗦。不要给我扯什么可读性,如下代码一行的写法可读性也更好。web

史上最坑爹最烂的代码长啥样?你见过吗?

2.前大厂程序员设计的智能 AI 客服系统spring

史上最坑爹最烂的代码长啥样?你见过吗?

效果展现:数据库

史上最坑爹最烂的代码长啥样?你见过吗?

3.只要个人代码够多,那你就很难看出有啥问题session

/**
 * 三年前接手的一个政府网站项目,真假不知,听说是一个两年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";
  } }}

以上代码的问题:app

  • 空指针异常
  • 逻辑混乱,部分 else if 根本进不去

4.获取一天后的日期:让线程睡一会jsp

史上最坑爹最烂的代码长啥样?你见过吗?

5.新上的项目的代码命名,表示看不太懂网站

史上最坑爹最烂的代码长啥样?你见过吗?

6.为了获得了一个用户总人数,把全部的 User 对象查询出来。spa

/**
 统计用户总数,来源于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);
 }
}
相关文章
相关标签/搜索