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

2015-08-18 18:01:11 +08:00
 letitbesqzr
最新接手的一个模块....一看代码,哭了
6070 次点击
所在节点    程序员
68 条回复
miemiekurisu
2015-08-19 13:30:32 +08:00
400 行满是深度嵌套的 if else ( 20 层),考验你的视力
yxzblue
2015-08-19 13:49:55 +08:00
xiaowangge
2015-08-19 14:07:15 +08:00
性别字段为 : sex , int 类型,并且 0 表示男, 1 表示女 :-)
update
2015-08-19 14:18:19 +08:00
@gongpeione
这个 function zhuru (zhi ) 真是萌萌的。。
update
2015-08-19 14:18:31 +08:00
@gongpeione
这个 function zhuru (zhi ) 真是萌萌的。。
😊
pedestrianc
2015-08-19 14:25:29 +08:00
- (void )setAudiecenModel:(QIAudienceViewCellModel *)audiecenModel {
_audiecenModel = audiecenModel;

CGFloat restrictionWidth = kDeviceWidth - self.groupNameLabel.frame.origin.x - MARGIINOFCONTROLS - 20;
NSDictionary* groupLevel = audiecenModel.groupLevelDict[audiecenModel.userID];
NSString* fansID = groupLevel[@"fansID"];
NSString* rankName = groupLevel[@"level"];
if (nil != rankName ) {
audiecenModel.rankName = rankName;
} else {
rankName = audiecenModel.rankName;
}

NSString* rankImageName = [NSString stringWithFormat:@"group_level%ld",audiecenModel.rankName.integerValue];
if (nil == rankName ) {
rankImageName = nil;
}
if ([_audiecenModel.anchorRank integerValue] > 0 ) {
rankImageName = [NSString stringWithFormat:@"live_anchor_nobility%@",_audiecenModel.anchorRank];
}
if (nil == rankName && [_audiecenModel.anchorRank integerValue] <= 0 ) {
rankImageName = nil;
}

self.rankImageView.image = [UIImage imageNamed:rankImageName];
if (nil == audiecenModel.rankName || [audiecenModel.rankName isEqualToString:@""]) {
self.rankImageViewWidthCons.constant = 11;
self.groupNameLabelLeadingCons.constant = 12;
} else {
self.rankImageViewWidthCons.constant = 11;
self.groupNameLabelLeadingCons.constant = 12;
}

NSString* fansGroupName = audiecenModel.groupNameDict[fansID][@"fansName"];
if (nil == rankName ) {
fansGroupName = nil;
}
if (nil != fansGroupName ) {
audiecenModel.fansGroupName = fansGroupName;
} else {
fansGroupName = audiecenModel.fansGroupName;
}

CGSize groupNameSize = [fansGroupName sizeWithFont:[UIFont systemFontOfSize:COMMONFONTSIZE]];
if (nil == audiecenModel.fansGroupName || [audiecenModel.fansGroupName isEqualToString:@""]) {
self.userNameLeadingCons.constant = 0;
} else {
self.userNameLeadingCons.constant = MARGIINOFCONTROLS;
}
self.groupNameLabel.text = fansGroupName;
NSString* userName = audiecenModel.userName;
if ([audiecenModel.userID isEqualToString:[UserManager shareUserManager].userItem.userID]) {
NSString *name = [UserManager shareUserManager].userItemDic[@"nickname"];
self.userNameLabel.text = name?name:self.userNameLabel.text;

}

CGSize size = [userName sizeWithFont:[UIFont systemFontOfSize:COMMONFONTSIZE]]; // wwc 过时的方法
self.userNameLabel.text = userName;


NSDictionary* medalInfor = _audiecenModel.medalDict[_audiecenModel.userID];
NSString* medalImageName = nil;
if ([medalInfor isKindOfClass:[NSString class]]) {
medalImageName = (NSString*)medalInfor;
} else {
medalImageName = medalInfor[@"image"];
}

[self.medalImageView sd_setImageWithURL:[NSURL URLWithString:medalImageName] placeholderImage:nil];
if (nil == medalImageName || [medalImageName isEqualToString:@""]) {
self.medalLeadingCons.constant = 0;
self.medalWidthCons.constant = 0;
} else {
self.medalLeadingCons.constant = MARGIINOFCONTROLS;
self.medalWidthCons.constant = 18;
}

self.vestImageView.image = [UIImage imageNamed:audiecenModel.vestName];
self.nobilityImageView.image = [UIImage imageNamed:audiecenModel.nobilityName];
if (![@"noble100" isEqualToString:audiecenModel.nobilityName]) {
self.nobilityImageView.hidden = NO;
self.eventBgView.hidden = NO;
_tap.enabled = YES;
} else {
_tap.enabled = NO;
}

if (restrictionWidth > 150 && [audiecenModel.userID isEqualToString:@"20066"]) {
GGLogDebug (@"=======restrictionWidth======%f",restrictionWidth );
}

if (medalImageName ) {
restrictionWidth -= (self.medalWidthCons.constant + MARGIINOFCONTROLS );
}
if (self.vestImageView.image ) {
restrictionWidth -= (self.vestImageView.frame.size.width + MARGIINOFCONTROLS );
}
if (self.nobilityImageView.image ) {
restrictionWidth -= (self.nobilityImageView.frame.size.width + MARGIINOFCONTROLS );
}
if (restrictionWidth < groupNameSize.width + size.width ) {
self.groupNameWidthCons.constant = groupNameSize.width > restrictionWidth * LABELWIDTHRADIO ? restrictionWidth* LABELWIDTHRADIO : groupNameSize.width;
self.userNameLabelWidthCons.constant = restrictionWidth - self.groupNameWidthCons.constant;
} else {
self.groupNameWidthCons.constant = groupNameSize.width;
self.userNameLabelWidthCons.constant = size.width;
}

if ([audiecenModel.userID isEqualToString:@"20066"]) {
GGLogDebug (@"=======restrictionWidth======%f",restrictionWidth );
}
}








一个赋值方法一百多行,不建 model 数据混乱。赋值之后各种计算 layout 。。。。。同事的代码。
letitbesqzr
2015-08-19 14:36:19 +08:00
@xiaowangge 哈哈 以前遇到过... 身份信息..本来只有两个 1 代表医生 0 代表居民 。。。在程序里用 true 和 false ... 后来说要加一个 管理员身份,就傻逼了。
zacard
2015-08-19 14:47:09 +08:00
糟糕代码不报错,你就谢天谢地吧。遇到不测试(甚至有编译时错误)就直接提交代码的,你哭都来不及。。。
andybest
2015-08-19 15:20:20 +08:00
@blacklee "服务端程序语言对方选择的是 Java
MySQL 里的 bool 字段, 1 表示 false , 0 表示 true "

那 bool 应如何在 MySQL 中储存?
aivier
2015-08-19 15:21:52 +08:00
JS 里用 JSON , C#配合 PHP 服务器端一直用 XML ,这写法也是够惊人的....
mozartgho
2015-08-19 15:42:46 +08:00
楼主,体现你 performance 的时候到了!
iugo
2015-08-19 15:44:19 +08:00
@andybest 简单来说, 你不觉得有点写反了吗?
laucie
2015-08-19 15:52:06 +08:00
百度单词 来全拼
akira
2015-08-19 15:58:48 +08:00
for a:=1 to a1 do
for b:=1 to b1 do
for c:=1 to c1 do
for d:=1 to d1 do
for e:=1 to e1 do
for f:=1 to f1 do
for g:=1 to g1 do
for h:=1 to h1 do
for i:=1 to i1 do
for j:=1 to j1 do
for k:=1 to k1 do
for l:=1 to l1 do
for m:=1 to m1 do
for n:=1 to n1 do
for o:=1 to o1 do
for p:=1 to p1 do
for q:=1 to q1 do
for r:=1 to r1 do
for s:=1 to s1 do
for t:=1 to t1 do

我们问他,万一字母不够用怎么办
scarlex
2015-08-19 16:44:58 +08:00
@xiaowangge ...我觉得应该反过来才对啊, 0 表示女, 1 表示男...
xuewl
2015-08-19 16:45:58 +08:00
@blacklee MYSQL 的布尔值使用 tinyint (1 ) 的 1 和 0 来表示难道不是科学的方法吗?
reinhardzoe
2015-08-19 16:52:50 +08:00
坐等 "我就是那个 1 表示 girl,0 表示 boy 的程序员"
xiaowangge
2015-08-19 17:25:20 +08:00
@scarlex 是啊。「常识」,大家都认为 0 表示女, 1 表示男。

但代码中,就是相反的啊。害我还出了个 bug 呢 :-)
jjed0119cs04
2015-08-19 17:28:44 +08:00
我擦。这么多人。。。
siteshen
2015-08-19 17:40:58 +08:00
#!/usr/bin/env python

# example 1
def get_something (self, a, b, get_c=True ):
if get_c:
c = a + b
return a, b, c
else
return a, b

# example 2
def list_users_handler (self, request ):
user_ids = exec (request.params['user_ids'])

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

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

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

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

© 2021 V2EX