说说你们在项目中遇到过的最糟糕的代码

2015-08-18 18:01:11 +08:00
 letitbesqzr
最新接手的一个模块....一看代码,哭了
6113 次点击
所在节点    程序员
68 条回复
blacklee
2015-08-18 18:08:23 +08:00
公司外包项目后回来的代码

服务端程序语言对方选择的是 Java
MySQL 里的 bool 字段, 1 表示 false , 0 表示 true

iOS 里面
各种 addSubview: 在 viewWillAppear: 里面调用
saber000
2015-08-18 18:09:28 +08:00
好像很好改的样子,不就是用生命来构造构造 json 数据的代码嘛?
xmoon
2015-08-18 18:09:32 +08:00
留名 看看如何搞死后来人
lucky2touch
2015-08-18 18:10:40 +08:00
StringBuffer 不简称为 sb 不砖业啊
Troevil
2015-08-18 18:11:31 +08:00
@saber000 用生命在构造 json 。。。 233333
pubby
2015-08-18 18:18:00 +08:00
一看就是不知 json 为何物,现场弄了个专用轮子,看上去思路挺流畅嘛 哈哈。不过万一各种.getName () 里面包含个 " 啥的 ......
flowfire
2015-08-18 18:34:06 +08:00
整页整页全是 onclick onclick onclick onclick onclick
。。。。。 addEventListener 真的很难么。。。
KentY
2015-08-18 19:18:31 +08:00
我贴一个吧, 以前做的项目里的。代码是多年前其它公司人写的。
这个 method 被调用成千上万次, 在一次 debug 的时候, 我进到这个 method 里, 看到了如此简洁的实现和对于这个实现的详细思路和注解。 当时敬佩地脱口而出: what the fuck!

不知道图能不能显示。 一直保留这个截屏, 只把开发者名字模糊了:

ljbha007
2015-08-18 19:40:35 +08:00
@KentY
重构的时候搞坏了吧

跟你们说说什么叫“刷新世界观”
我见过最经典的代码:一个 Android 的应用里有数量不定的由复杂的子视图构成的列表
子视图里好像有需要滚动的部件 当时是 android2.2 这个问题比较头疼
该程序员因为上述原因加上“数量不定” 把同样的视图在布局文件里复制了 60 多遍 并全部隐藏
然后把给视图控件赋值并取消隐藏的代码( 20 多行)也复制了 60 多遍 然后用 if else 连接起来
并且把变量名后的数字 每复制一次则递增 1 (注意:是变量名的后缀数字!不是变量的值)
如果列表元素数量大于 60 则直接不管了

整个方法长度大概 1400 来行
看完我终于明白为什么有的程序员老要加班了!

代码结构大概是这个样子:

```
public void updateList (List itemList ){
Item item0;
Item item1;
item0 = itemList.get (0 );
if (item0 != null ){
viewA1.setText (item0.getX ());
viewA2.setText (item0.getX ());
viewA3.setText (item0.getX ());
...
item1 = itemList.get (1 );
}else if (item1!= null ){
viewB1.setText (item1.getX ());
viewB2.setText (item1.getX ());
viewB3.setText (item1.getX ());
...
item2 = itemList.get (2 );
}
// 此处省略 1400 行
}
```
hellogbk
2015-08-18 20:20:23 +08:00
其实我也一直是这么拼 JSON 的, 请问有什么现成的 API 或者库可以快速拼出来想要的 JSON 吗?
axb
2015-08-18 20:23:51 +08:00
前一阵写了一篇文章:
http://blog.2baxb.me/archives/1343
KentY
2015-08-18 20:25:43 +08:00
msg7086
2015-08-18 20:27:46 +08:00
目测这贴要火
holy_sin
2015-08-18 20:28:11 +08:00
写的犹豫不决的代码是最糟糕的,往往留下很多糟糕的注释。我的建议是既然现在的代码管理工具,那些觉得没用而注释的代码可以一律删掉。还有一点就是 api 写的不清晰。给使用者造成了很大的混淆,浪费了时间成本。
kisshere
2015-08-18 20:31:54 +08:00
if ($isLogin==true ){}
<a></table></a>
holy_sin
2015-08-18 20:32:31 +08:00
还有过早优化也是问题的根源之一。不要过多的考虑未来的需求,导致代码的层次很深,最后还要跑回来删掉无用的封装逻辑。
还有一点,就是产品忙于上线,会配置很多脏数据,上线之后,再清理脏数据。这样的节奏给客户端和服务端造成了 1 + (-1 ) < 0 的效果。尽量避免脏数据。
hcymk2
2015-08-18 21:04:15 +08:00
@KentY
龟孙很垃圾的 请不要推荐这个。
Troevil
2015-08-18 21:12:36 +08:00
@hellogbk 拼可以 好歹写个递归吧。。。
KentY
2015-08-18 21:16:25 +08:00
@hcymk2 干嘛骂人呢?
warlock
2015-08-18 21:42:35 +08:00
applet 调用 POS 机打印小票...根本没法调试...

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/214099

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX