代码写成这样,老板把我开除了| IT 巨能唠

今天聊一聊遇到过的一些神逻辑代码,不一定很全,但真心让小编我自叹不如啊!
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 ? truefalse;
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"13"wx"5"1"0"8"01new 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 能搞定的非要写这么长,还缩进得这么有层次感。
老规 写神逻辑代码的人才这么多,找问题、解决问题真是太难了。关注CSDN云计算,并在 本文下方留言,参与互动,聊一聊你见过的最无可奈何的代码。留言点赞数最多的前3位粉丝,每人获得surprise一份。当然,你也可以顺带提出对栏目的建议,比如你想参与什么样的讨论话题吧啦吧啦。
  640?wx_fmt=jpeg

活动时间 :11月12日09:30—11月13日 09:30
 
活动奖品:大数据相关书籍,随机赠送哟


尴尬而不失礼貌的TIP :为了公平公正地照顾到每位粉丝儿的需求,每个人每月只能最多获得一次奖品的机会。若一个月内已获得奖品,即使点赞数最多,也顺延到下一个人。请知晓。
 
【关注IT巨能唠,每天都是1024。 电脑在、BUG在、云计算在、我在。你还要怎样更好的世界?
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值