你见过最无可奈何的代码是什么?今天,栈长就来总结一下我遇到过的一些神逻辑代码,不一定很全,但我真心写不出,真心让我自叹不如啊!

目前累计服务客户近1000家,积累了丰富的产品开发及服务经验。以网站设计水平和技术实力,树立企业形象,为客户提供网站制作、做网站、网站策划、网页设计、网络营销、VI设计、网站改版、漏洞修补等服务。成都创新互联公司始终以务实、诚信为根本,不断创新和提高建站品质,通过对领先技术的掌握、对创意设计的研究、对客户形象的视觉传递、对应用系统的结合,为客户提供更好的一站式互联网解决方案,携手广大客户,共同发展进步。
1、耍猴的好手段
还记得 XX 手机的抢购活动么,抢购按钮的代码类似是这样的:
活动还没开始就结束了。。
后面有人挖出来这段神逻辑,大家真是哭晕在厕所了,还好,抢购买手机这种我从来不参加。。
就是在前端写死代码造成抢购结束的假象,其实请求压根没有发送到服务器,或者休眠几秒直接跳转到抢购结束页面,良心点的,点 10 次有一次发到服务器就不错了,这样耍猴是不是太好玩了?
众所周知,为了提高服务器的承载能力,现在各类 APP、网页等都会或多或少加入前端缓存,但上面这种耍猴的代码也太无耻了。
2、猪一样的队友
大家有没有见过这样的代码:
- ...
 
这上面的活动价比原价还贵,真是哭笑不得……
类似这样的代码,一些程序员在注释中说明活动的内容,又或者是把一些生产上环境的 IP、端口、用户名、密码等敏感信息把在注释中,好随时能切换……
真是猪一样的队友,这样的程序员不开除么!?定时炸弹啊!
3、最牛逼的排序算法
据说是一个月薪 9K 的 Java 程序员,因老板让他写一个排序算法,然后他就写了一段屌炸天的休眠排序算法,接着他就被老板开除了……
排序算法代码大概是这样的:
这段代码的完整版解释请看这篇文章:刚写完排序算法,就被开除了…
排序排成这样,不开除你,开除谁?
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();
 - }
 
获取指定日期用休眠?写完,已笑晕在厕所。。。
完整版的解释请看这篇文章:刚写完这段代码,就被开除了……。
想离职找不到借口?
那还不容易,哥送你这段加强版,复制这段代码,提交打包测试上线,坐等开除。
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 能搞定的非要写这么长,还缩进得这么有层次感。。
小结
写神逻辑代码的人才这么多,找问题、解决问题真是太难了。
                分享文章:代码写成这样,老夫无可奈何!
                
                文章源于:http://www.csdahua.cn/qtweb/news13/149063.html
            
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网