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

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

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

今天,栈长就来总结一下我遇到过的一些神逻辑代码,不一定很全,但我真心写不出,真心让我自叹不如啊!
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

相关文章

vscode保存代码时自动eslint格式化图文教程

《vscode保存代码时自动eslint格式化图文教程》:本文主要介绍vscode保存代码时自动eslint格式化的相关资料,包括打开设置文件并复制特定内容,文中通过代码介绍的非常详细,需要的朋友... 目录1、点击设置2、选择远程--->点击右上角打开设置3、会弹出settings.json文件,将以下内

SQL Server使用SELECT INTO实现表备份的代码示例

《SQLServer使用SELECTINTO实现表备份的代码示例》在数据库管理过程中,有时我们需要对表进行备份,以防数据丢失或修改错误,在SQLServer中,可以使用SELECTINT... 在数据库管理过程中,有时我们需要对表进行备份,以防数据丢失或修改错误。在 SQL Server 中,可以使用 SE

python实现pdf转word和excel的示例代码

《python实现pdf转word和excel的示例代码》本文主要介绍了python实现pdf转word和excel的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录一、引言二、python编程1,PDF转Word2,PDF转Excel三、前端页面效果展示总结一

在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码

《在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码》在MyBatis的XML映射文件中,trim元素用于动态添加SQL语句的一部分,处理前缀、后缀及多余的逗号或连接符,示... 在MyBATis的XML映射文件中,<trim>元素用于动态地添加SQL语句的一部分,例如SET或W

使用C#代码计算数学表达式实例

《使用C#代码计算数学表达式实例》这段文字主要讲述了如何使用C#语言来计算数学表达式,该程序通过使用Dictionary保存变量,定义了运算符优先级,并实现了EvaluateExpression方法来... 目录C#代码计算数学表达式该方法很长,因此我将分段描述下面的代码片段显示了下一步以下代码显示该方法如

python多进程实现数据共享的示例代码

《python多进程实现数据共享的示例代码》本文介绍了Python中多进程实现数据共享的方法,包括使用multiprocessing模块和manager模块这两种方法,具有一定的参考价值,感兴趣的可以... 目录背景进程、进程创建进程间通信 进程间共享数据共享list实践背景 安卓ui自动化框架,使用的是

SpringBoot生成和操作PDF的代码详解

《SpringBoot生成和操作PDF的代码详解》本文主要介绍了在SpringBoot项目下,通过代码和操作步骤,详细的介绍了如何操作PDF,希望可以帮助到准备通过JAVA操作PDF的你,项目框架用的... 目录本文简介PDF文件简介代码实现PDF操作基于PDF模板生成,并下载完全基于代码生成,并保存合并P

SpringBoot基于MyBatis-Plus实现Lambda Query查询的示例代码

《SpringBoot基于MyBatis-Plus实现LambdaQuery查询的示例代码》MyBatis-Plus是MyBatis的增强工具,简化了数据库操作,并提高了开发效率,它提供了多种查询方... 目录引言基础环境配置依赖配置(Maven)application.yml 配置表结构设计demo_st

SpringCloud集成AlloyDB的示例代码

《SpringCloud集成AlloyDB的示例代码》AlloyDB是GoogleCloud提供的一种高度可扩展、强性能的关系型数据库服务,它兼容PostgreSQL,并提供了更快的查询性能... 目录1.AlloyDBjavascript是什么?AlloyDB 的工作原理2.搭建测试环境3.代码工程1.

Java调用Python代码的几种方法小结

《Java调用Python代码的几种方法小结》Python语言有丰富的系统管理、数据处理、统计类软件包,因此从java应用中调用Python代码的需求很常见、实用,本文介绍几种方法从java调用Pyt... 目录引言Java core使用ProcessBuilder使用Java脚本引擎总结引言python