代码写成这样,老板把我开除了,最让人感到无可奈何的代码,你可千万别这么写!...

本文主要是介绍代码写成这样,老板把我开除了,最让人感到无可奈何的代码,你可千万别这么写!...,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

你见过最无可奈何的代码是什么?

今天,栈长就来总结一下我遇到过的一些神逻辑代码,不一定很全,但我真心写不出,真心让我自叹不如啊!
1、耍猴的最佳手段

还记得 XX 手机的抢购活动么,抢购按钮的代码类似是这样的:

<a href="javasript:alert('抢购结束!')">立即抢购</a>

活动还没开始就结束了。。

后面有人挖出来这段神逻辑,大家真是哭晕在厕所了,还好,抢购买手机这种我从来不参加。。

就是在前端写死代码造成抢购结束的假象,其实请求压根没有发送到服务器,或者休眠几秒直接跳转到抢购结束页面,良心点的,点 10 次有一次发到服务器就不错了,这样耍猴是不是太好玩了?

众所周知,为了提高服务器的承载能力,现在各类 APP、网页等都会或多或少加入前端缓存,但上面这种耍猴的代码也太无耻了。

2、猪一样的队友

大家有没有见过这样的代码:

<!-- 原价 180 元,现在活动价 228 元,活动结束后恢复原价 -->
...

这上面的活动价比原价还贵,真是哭笑不得……

类似这样的代码,一些程序员在注释中说明活动的内容,又或者是把一些生产上环境的 IP、端口、用户名、密码等敏感信息把在注释中,好随时能切换……

真是猪一样的队友,这样的程序员不开除么!?定时炸弹啊!

3、最牛逼的排序算法

据说是一个月薪 9K 的 Java 程序员,因老板让他写一个排序算法,然后他就写了一段屌炸天的休眠排序算法,接着他就被老板开除了……

排序算法代码大概是这样的:

640?wx_fmt=png

这个程序员更屌啊,数字排序,用一行简单的 Arrays.sort 就搞定的东西,他竟用到了这么多概念。

1、循环

2、线程休眠

3、多线程

还好是数字小啊,还好休眠是毫秒啊,要是数字大,要是休眠时间是秒,那要等多少休眠时间才能排序完?

按道理,他的程序也没问题啊,老板为什么要开除他?应用程序中出 BUG 不是很正常的事吗?但他这种排序思维,能写出这样的隐藏 BUG 也是绝了,创造性的发明了 "休眠排序" 算法,系统里面还不知道有多少这样的坑,不开除他开除谁啊?

排序排成这样,不开除你,开除谁?

4、休眠的最高境界
/*** 获取未来几天的日期* @param days 指定的天数* @author 微信公众号:Java技术栈* @return*/
public static Date getNextDays(int days){try {// 休眠指定的天数Thread.sleep(days * 24 * 60 * 60 * 1000);} catch (InterruptedException e) {e.printStackTrace();}// 休眠结束后返回日期return new Date();
}

获取指定日期用休眠?写完,已笑晕在厕所。。。

开除的原因是因为没写注释吗?

显然不是,休眠的逻辑,大家都懂,不需要写注释,你注释写休眠 1 天也没意义啊。。。

这个程序员的思维不是一般的牛啊,获取下一天的日期,居然要休眠等到下一天再获取,欲哭无泪。。。

想离职找不到借口?

那还不容易,哥送你这段加强版,复制这段代码,提交打包测试上线,坐等开除。

5、真就是假,假就是真
boolean isBoy = user.isBoy() == true ? true: false;
if (isBoy){...
} else {...
}

布尔值可以直接拿来用,你硬要写个三元表达式?年底绩效考核了,代码量有 KPI 么?

还有类似这样的:

if (xx1 == true && xx2 !=  true){...
} else {...
}

还有这样的:

if (xx1 > xx2){return true;
} else {return false;
}

写得太优雅了!

6、循环循环循环
for (int i = 0; i < 1; i++){...
}

一个循环也用循环,曾经就遇到过这么一段,不知所云了,要改这段代码,还要把他叫在旁边坐着,看着改才行。。

for (;;){...
}

死循环这么写,我们就看不出来了么?

7、魔法值的真谛

曾经检查代码时,发现代码中很多魔法值,叫同事要定义成公共常量,结果来了这么一段:

private final static int ZERO = 0;
private final static int ONE = 1;
private final static int TWO = 2;
...

看到上面的常量定义,我真想打人,虽然魔法值是没了,但又定义了一些没有意义的常量,完全没有理解修改魔法值的真谛,这和脱裤子放屁有什么区别?

上面还只是一个简单的示例,实际审查情况远比你想象的糟糕。

8、看花眼的参数
Order order = new Order(orderNo, 1678.13, "CNY", 1, 3, "wx", 5, "1", 0, "8", 0, 1, new Date());

看到这样的代码,我也是醉醉的了。

我就见过同事写出这样的代码,是赶时间呢,还是真的不会设计模式,一个构造函数参数能写这么多,且不说魔法值,这么长,看一眼都觉得头大。

9、消失的异常
try {...
} catch (Exception e) {}

程序捕捉了异常,却不打印。

try {...
} catch (Exception e) {e.printStackTrace();
}

错误是输出来了,但没有输出到日志文件。

try {...
} catch (Exception e) {logger.info("...", e);
}

日志级别用的不对,去错误日志文件里面死活找不着错误日志。

上面的种种不规范的写法,在生产环境出现问题时,一方面导致排查问题艰难,另一方面,监控系统也不能及时地监控到异常。

10、神奇的if

最后一个了,压轴了。。

来,我们一起赏析下这段神奇的 if 代码:

if(user.getFirstName() != null)if(user.getMiddleName() != null)if(user.getLastName() != null)if(user.getNickName() != null)if(user.getShortName() != null)if(user.getFullName() != null)if(user.getFamilyName() != null)if(user.getEnglishName() != null)...return true;
return false;                                

这段代码够奇葩了吧,一个 if 能搞定的非要写这么长,还缩进得这么有层次感。。

小结

写神逻辑代码的人才这么多,找问题、解决问题真是太难了。

640?wx_fmt=jpeg

你见过最烂的代码写成什么样?欢迎留言分享~

觉得不错,可以把文章分享给同学、同事们!

- END -

640?wx_fmt=png

这篇关于代码写成这样,老板把我开除了,最让人感到无可奈何的代码,你可千万别这么写!...的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/245384

相关文章

Java集合之Iterator迭代器实现代码解析

《Java集合之Iterator迭代器实现代码解析》迭代器Iterator是Java集合框架中的一个核心接口,位于java.util包下,它定义了一种标准的元素访问机制,为各种集合类型提供了一种统一的... 目录一、什么是Iterator二、Iterator的核心方法三、基本使用示例四、Iterator的工

Java 线程池+分布式实现代码

《Java线程池+分布式实现代码》在Java开发中,池通过预先创建并管理一定数量的资源,避免频繁创建和销毁资源带来的性能开销,从而提高系统效率,:本文主要介绍Java线程池+分布式实现代码,需要... 目录1. 线程池1.1 自定义线程池实现1.1.1 线程池核心1.1.2 代码示例1.2 总结流程2. J

JS纯前端实现浏览器语音播报、朗读功能的完整代码

《JS纯前端实现浏览器语音播报、朗读功能的完整代码》在现代互联网的发展中,语音技术正逐渐成为改变用户体验的重要一环,下面:本文主要介绍JS纯前端实现浏览器语音播报、朗读功能的相关资料,文中通过代码... 目录一、朗读单条文本:① 语音自选参数,按钮控制语音:② 效果图:二、朗读多条文本:① 语音有默认值:②

Vue实现路由守卫的示例代码

《Vue实现路由守卫的示例代码》Vue路由守卫是控制页面导航的钩子函数,主要用于鉴权、数据预加载等场景,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录一、概念二、类型三、实战一、概念路由守卫(Navigation Guards)本质上就是 在路

uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)

《uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)》在uni-app开发中,文件上传和图片处理是很常见的需求,但也经常会遇到各种问题,下面:本文主要介绍uni-app小程序项目中实... 目录方式一:使用<canvas>实现图片压缩(推荐,兼容性好)示例代码(小程序平台):方式二:使用uni

JAVA实现Token自动续期机制的示例代码

《JAVA实现Token自动续期机制的示例代码》本文主要介绍了JAVA实现Token自动续期机制的示例代码,通过动态调整会话生命周期平衡安全性与用户体验,解决固定有效期Token带来的风险与不便,感兴... 目录1. 固定有效期Token的内在局限性2. 自动续期机制:兼顾安全与体验的解决方案3. 总结PS

C#中通过Response.Headers设置自定义参数的代码示例

《C#中通过Response.Headers设置自定义参数的代码示例》:本文主要介绍C#中通过Response.Headers设置自定义响应头的方法,涵盖基础添加、安全校验、生产实践及调试技巧,强... 目录一、基础设置方法1. 直接添加自定义头2. 批量设置模式二、高级配置技巧1. 安全校验机制2. 类型

Python屏幕抓取和录制的详细代码示例

《Python屏幕抓取和录制的详细代码示例》随着现代计算机性能的提高和网络速度的加快,越来越多的用户需要对他们的屏幕进行录制,:本文主要介绍Python屏幕抓取和录制的相关资料,需要的朋友可以参考... 目录一、常用 python 屏幕抓取库二、pyautogui 截屏示例三、mss 高性能截图四、Pill

使用MapStruct实现Java对象映射的示例代码

《使用MapStruct实现Java对象映射的示例代码》本文主要介绍了使用MapStruct实现Java对象映射的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、什么是 MapStruct?二、实战演练:三步集成 MapStruct第一步:添加 Mave

Java抽象类Abstract Class示例代码详解

《Java抽象类AbstractClass示例代码详解》Java中的抽象类(AbstractClass)是面向对象编程中的重要概念,它通过abstract关键字声明,用于定义一组相关类的公共行为和属... 目录一、抽象类的定义1. 语法格式2. 核心特征二、抽象类的核心用途1. 定义公共接口2. 提供默认实