1、

你在公司项目里面看到过哪些操蛋的代码?_全局变量


算吗?尽情吐槽吧!

2、不知道谁写的,总之我都看哭了!

你在公司项目里面看到过哪些操蛋的代码?_全局变量_02

3、看枚举名字不知道五行(hang)是什么鬼,看了枚举内容恍然大雾,原来是五行(xing)……

你在公司项目里面看到过哪些操蛋的代码?_文件名_03

4、看见这段代码的时候,我拍了很久的掌。

你在公司项目里面看到过哪些操蛋的代码?_全局变量_04

5、

你在公司项目里面看到过哪些操蛋的代码?_文件名_05

6、从长度上来说,完爆楼上各位的。感受下:

你在公司项目里面看到过哪些操蛋的代码?_文件名_06

你在公司项目里面看到过哪些操蛋的代码?_全局变量_07

哪怕不知道 RE,也该知道 FindOneOf 啊?!!!!
就是再不济,也写个循环吧。
谨遵 DRY 原则的程序员看到这段代码受到了 1024 Kg 的伤害。

当然,还有什么:
一个线程回调函数函数写了 700 多行的事情咱就不说了。
一个小小的项目专门定义了名叫 Global.h/cpp 的文件来放置全局变量咱也不说了。一个小小的项目中一二百个全局变量咱也不说了,这些全局变量中大部分还是指针变量咱也甭说了!!!
我去哭一会去。

7、以前所在公司做激光雕刻软件,客户对雕刻速度有要求,于是乎大神把显示在客户端的所需时间乘上4/5。后来软件交给我维护,重写了界面,新版本到了客户手里雕刻速度变慢了,无论怎么优化雕刻算法,都不能达到原来的雕刻速度。后来忘记是怎么看到那个* 4/5了,真是买了表的。

8、有次看一项目源码,注释里有个warning。

// warning: Do not make any changes here.
// I got confused why it can run successfully. PLEASE Do not make any changes before you figure it out.

9、很久以前我遇到一个做ANDROID的同事,写前端界面的时候肯定会有不少按钮之类的要声明,有些界面上的控件比较多,可是他不喜欢声明变量,对 不只是懒得起变量名,连声明都懒得写。所以他直接用数组。。。。
 

所以他的代码里会出现很多类似这种: btns[0] list[1] 控件对象的引用方式,多么考验记忆力的编程方式啊,全宇宙只有他自己能维护这份代码了!!!

这种写法完全解决了他懒得声明的问题啊,Button[] btns=new Button[10]; 只需一行代码,就有十个按钮可以用了!!!多么方便啊!!!只要自己一辈子都记住 0是确定按钮 1 是取消 2 是xxxx。

10、举三个我前东家的故事:

(1)、写 Facebook Android的代码时候看到的。

你在公司项目里面看到过哪些操蛋的代码?_控件_08

对,好像是没有更好的办法来测试getter。。。

(2)、Facebook的Android和iOS的代码里都大量使用 Dependency Injection,主要好处是 便于测试 和 每个类实例的生命周期便于维护。只是开始的时候为了图方便,用的是类的静态方法来拿到 全局的 providerMap。后来Tech Lead规范编程风格之后,禁止大家直接调用静态的globalProvider方法,从ctor里注入。但是FB里的人图方便,还是在继续使用。最后没办法,函数名被Tech Lead改成这样:(由于保密协议,我删除了实现逻辑的代码)。

你在公司项目里面看到过哪些操蛋的代码?_全局变量_09


 

(3)、来自FB神童 Evan Priestley 的 Hackathon 代码 (这哥们高中毕业后开始以写程序为生,主导FB很多的大项目。离开FB之后创立:Phabricator )。代码本身并不是有缺陷,只是它产生了一个有趣的段子:

Tech Crunch 一直以来以爆FB的八卦为荣,但是很多时候八卦内容完全不准确,甚至是非颠倒,让高层很不爽。Evan Priestely 在一次Hackathon的时候在Facebook Photo里加了一个小按钮 “Fax Photo”,支持把当前照片传真出去,并且收费1美元(背后直接调用第三方传真公司的API)。功能本身在2009年的美国当然没鸟用,当时email,facebook和iPhone都已经高度普及,直接发照片的链接或者邮件即可,没人还想去传真一下。不过 Facebook 已具备极其强大的灰度发布功能,Evan把这个按钮发布出来,只允许 TechCrunch 公司的IP可见(除了TechCrunch,其他用户都看不到),并且在twitter上“透露”了一下Facebook Photo有新功能。

第二天,TechCrunch开始骚动了,一编辑火速发文(伴以截图)来说明Facebook Photo中“fax this”按钮的功能:TechCrunch 原文: Facebook Now Lets You Fax Your Photos. I Have No Idea Why Anyone Would Want To Do This在产品流程上,还专门花了一刀成功把图片传真到了公司的传真机上。接下来,开始详细“剖析”此功能开发的初衷和适用场景,最后开始吐槽在这个互联网高度发达的时代开发这么一个古代功能并没有什么卵用。。。

过了两天,TechCrunch终于在众多网友的热心评价下,意识到自己被耍了。于是又发文补充:Yeah Ok, So Facebook Punk'd Us,Evan Priestely 一直是Facebook很多员工心目中的天才,对,极其有争议的天才。

11、我司新招进来的人分配在我的项目组,真是个人才,看看下面他写的代码,想死的心都有了。

saveUser(password);
savePassword(user);

有一段代码这样写:
if(isBind){
xxx(true);
} else{
xxx(false);
}
我review了之后说直接将isBind当参数传进行去了,结果人家改成这样:
if(isBind){
xxx(isBind);
} else{
xxx(isBind);
}

有个变量,用完了再初始化:
Callback mCallback;
sendRequest(mCallback);
mCallback=new Callback();



好多,无法一一列举了。直接把他踢出我们项目组,去祸害别的组吧。

12、

你在公司项目里面看到过哪些操蛋的代码?_文件名_10

这是我校网络学堂,提交作业前端网页上写的,如果过了DEADLINE会变成0==0,检查文件名和提交作业长度也在前端。

你在公司项目里面看到过哪些操蛋的代码?_全局变量_11

生成文件名也在前端,大概是学号 + 随机数 + 你的文件名。

你在公司项目里面看到过哪些操蛋的代码?_控件_12


交上去了哪些东西。

你在公司项目里面看到过哪些操蛋的代码?_全局变量_13

我仿佛看到了什么不得了的东西。

13、曾经在一个家公司,有一次有人发现对每个请求,有个地方都会空等了一秒。后来问老大,说,如果客户有新要求,随时可以把性能提高一倍以上。。。

14、

(a != b) ? b : a

以前在人人上贴了这段代码来吐槽前公司的代码质量,被转发后火了,因为神最右的注解:
“和老婆意见不一致的时候听她的;意见一致的时候听我的。”

我摘的这段代码被我省略了上下文。实际情况是,变量是基本类型,也没有重载运算符等其他让这段代码有意义的原因。我刚看到它的时候也绞尽脑汁去想有没有别的可能,试图理解这么写的用意,最后发现只是代码写得烂而已。

15、

在深圳实习的时候,一个甲方那边来的家伙写的代码大概是这样的:

你在公司项目里面看到过哪些操蛋的代码?_全局变量_14


对,你没有看错,那个方法名就叫“caonimama”,这绝对不是段子,他就是这么写的。我问他为啥取这样的名字,他说被甲方派过来心里很不爽....

16、以前遇到一个做测试的,写脚本,我写了一方法,让对方调用,要求是多次测试,我当时说调用100次看看结果。结果我看到了他的代码类似如下。(幸好没有说10000次)。

is_prime(1)
is_prime(2)
is_prime(3)
is_prime(4)
is_prime(5)
is_prime(6)
is_prime(7)
is_prime(8)
is_prime(9)
is_prime(10)
is_prime(11)
is_prime(12)
is_prime(13)
is_prime(14)
is_prime(15)
is_prime(16)
is_prime(17)
is_prime(18)
is_prime(19)
is_prime(20)
is_prime(21)
is_prime(22)
is_prime(23)
is_prime(24)
is_prime(25)
is_prime(26)
is_prime(27)
is_prime(28)
is_prime(29)
is_prime(30)
is_prime(31)
is_prime(32)
is_prime(33)
is_prime(34)
is_prime(35)
is_prime(36)
is_prime(37)
is_prime(38)
is_prime(39)
is_prime(40)
is_prime(41)
is_prime(42)
is_prime(43)
is_prime(44)
is_prime(45)
is_prime(46)
is_prime(47)
is_prime(48)
is_prime(49)
is_prime(50)
is_prime(51)
is_prime(52)
is_prime(53)
is_prime(54)
is_prime(55)
is_prime(56)
is_prime(57)
is_prime(58)
is_prime(59)
is_prime(60)
is_prime(61)
is_prime(62)
is_prime(63)
is_prime(64)
is_prime(65)
is_prime(66)
is_prime(67)
is_prime(68)
is_prime(69)
is_prime(70)
is_prime(71)
is_prime(72)
is_prime(73)
is_prime(74)
is_prime(75)
is_prime(76)
is_prime(77)
is_prime(78)
is_prime(79)
is_prime(80)
is_prime(81)
is_prime(82)
is_prime(83)
is_prime(84)
is_prime(85)
is_prime(86)
is_prime(87)
is_prime(88)
is_prime(89)
is_prime(90)
is_prime(91)
is_prime(92)
is_prime(93)
is_prime(94)
is_prime(95)
is_prime(96)
is_prime(97)
is_prime(98)
is_prime(99)
is_prime(100)

17、曾经维护过一个项目。接手的时候有十六七万行。其中最长的函数有三千五百多行。身为Cpp,但是变量,全部在开头声明,没有任何规律。光计数器就有十来个。前面有近百行是用来声明变量的。完全一样的逻辑,在同一个函数中都能写四五次。有的逻辑在整个系统中写了十几次。注释只有://xxx modified at yyyy/mm/dd

平均没一到两个小时就崩溃一次。
 

干了小半年。把所有的代码清理了一遍。大函数变成小函数,相同逻辑提取出来变成函数。最后代码变成了十一万行多一点。啃透了整本代码大全。终于7*24小时模拟测试当机次数小于1了。

 

你在公司项目里面看到过哪些操蛋的代码?_全局变量_15