逼死程序员的十句话

640?wx_fmt=png

用一句话证明你看过最近大火的科幻电影「流浪地球」,那么肯定是这一句:北京市第三区交通委提醒您:道路千万条,安全第一条;行车不规范,亲人两行泪。


这段话不对称,读起来非常拗口,但是就火了。知道啥原因么?因为大多数人对非常对称的东西已经不敏感了,更喜欢这种不按照套路出牌的东西。


今天我也学着这个标语来给大家拟几个跟程序员相关的标语,这些标语都是不对称,并且读起来有一些拗口的,目的就是要逼死程序员「第一条标语是转自网络的,其他都是我自己编的


路人甲温馨提醒您:


1

代码千万行,注释第一行

命名不规范,同事两行泪


2

语言千万种,实用第一条

选择不慎重,工作两行泪


3

Bug千万个,生命只一次

作息不规律,亲人两行泪


4

产品千万个,码农仅一只

设计不规范,加班两行泪


5

程序千万个,女友仅一个

相亲不规范,深夜两行泪


6

衬衫千万件,女装仅一件

着装不规范,码农两行泪


7

电脑千万个,大师仅一个

开光不规范,运维两行泪


8

假发千万种,头发仅一根

穿戴不规范,秃头两行泪


9

硬盘千万G,妹子占几T,

使用不规范,电脑两行泪


10

删库千万条,跑路第一条

逃命不规范,监狱两行泪



编的怎么样?是不是感觉我路人甲是北大中文秀毕业的,能做出这么优秀的标语。要不大家也动动脑看看还有啥更好玩的标语,格式不限。


推荐阅读

这一次,百度真牛逼

矜持,有个屁用


640?

知乎:路人甲

展开阅读全文

如何逼死维护人员

12-11

[b]编写无法维护代码的技巧的重中之重是变量和方法命名的艺术。如何命名是和编译器无关的。这就让你有巨大的自由度去利用它们迷惑维护代码的程序员。[/b]rnrn[color=#FF0000][b]妙用 宝宝起名大全[/b][/color]rn买本宝宝起名大全,你就永远不缺变量名了。比如 Fred 就是个好名字,而且键盘输入它也省事。如果你就想找一些容易输入的变量名,可以试试 adsf 或者 aoeu之类。rnrn[color=#FF0000][b]单字母变量名[/b][/color]rn如果你给变量起名为a,b,c,用简单的文本编辑器就没法搜索它们的引用。而且,没人能猜到它们的含义。rnrn[b][color=#FF0000]创造性的拼写错误[/color][/b]rn如果你必须使用描述性的变量和函数名,那就把它们都拼错。还可以把某些函数和变量名拼错,再把其他的拼对(例如 SetPintleOpening 和 SetPintalClosing) ,我们就能有效地将grep或IDE搜索技术玩弄于股掌之上。这招超级管用。还可以混淆不同语言(比如colour — 英国英语,和 color — 美国英语)。rnrn[b]抽象[/b][color=#FF0000][/color]rn在命名函数和变量的时候,充分利用抽象单词,例如 it, everything, data, handle, stuff, do, routine, perform 和数字,像这样命名的好例子有 routineX48, PerformDataFunction, DoIt, HandleStuff还有 do_args_method。rnrn[b][color=#FF0000]首字母大写的缩写[/color][/b]rn用首字母大写缩写(比如GNU 代表 GNU’s Not Unix) 使代码简洁难懂。真正的汉子(无论男女)从来不说明这种缩写的含义,他们生下来就懂。rnrn[b][color=#FF0000]辞典大轮换[/color][/b]rn为了打破沉闷的编程气氛,你可以用一本辞典来查找尽量多的同义词。例如 display, show, present。在注释里含糊其辞地暗示这些命名之间有细微的差别,其实根本没有。不过,如果有两个命名相似的函数真的有重大差别,那倒是一定要确保它们用相同的单词来命名(例如,对于 “写入文件”, “在纸上书写” 和 “屏幕显示” 都用 print 来命名)。 在任何情况下都不要屈服于编写明确的项目词汇表这种无理要求。你可以辩解说,这种要求是一种不专业的行为,它违反了结构化设计的信息隐藏原则。rnrn[b][color=#FF0000]首字母大写[/color][/b]rn随机地把单词中间某个音节的首字母大写。例如 ComputeReSult()。rnrn[b][color=#FF0000]重用命名[/color][/b]rn在语言规则允许的地方,尽量把类、构造器、方法、成员变量、参数和局部变量都命名成一样。更高级的技巧是在块中重用局部变量。这样做的目的是迫使维护代码的程序员认真检查每个实例的作用域。特别是在Java代码中,可以把普通方法伪装成构造器。rnrn[b][color=#FF0000]使用非英语字母[/color][/b]rn在命名中偷偷使用不易察觉的非英语字母,例如rn rntypedef struct int i; ínt;rnrn看上去没啥不对是吧?嘿嘿嘿…这里的第二个 ínt 的 í 实际上是东北欧字母,并不是英语中的 i 。在简单的文本编辑器里,想看出这一点点区别几乎是不可能的。rnrn[color=#FF0000][b]巧妙利用编译器对于命名长度的限制[/b][/color]rn如果编译器只区分命名的前几位,比如前8位,那么就把后面的字母写得不一样。比如,其实是同一个变量,有时候写成 var_unit_update() ,有时候又写成 var_unit_setup(),看起来是两个不同的函数调用。而在编译的时候,它们其实是同一个变量 var_unit。rnrn[b][color=#FF0000]下划线,真正的朋友[/color][/b]rn可以拿 _ 和 __ 作为标示符。rnrn[color=#FF0000][b]混合多语言[/b][/color]rn随机地混用两种语言(人类语言或计算机语言都行)。如果老板要求使用他指定的语言,你就告诉他你用自己的语言更有利于组织你的思路,万一这招不管用,就去控诉这是语言歧视,并威胁起诉老板要求巨额精神损失赔偿。rnrn[b][color=#FF0000]扩展 ASCII 字符[/color][/b]rn扩展 ASCII 字符用于变量命名是完全合法的,包括 ß, Ð, 和 ñ 等。在简单的文本编辑器里,除了拷贝/粘贴,基本上没法输入。rnrn[b][color=#FF0000]其他语言的命名[/color][/b]rn使用外语字典作为变量名的来源。例如,可以用德语单词 punkt 代替 point。除非维护代码的程序员也像你一样熟练掌握了德语. 不然他就只能尽情地在代码中享受异域风情了。rnrn[color=#FF0000][b]数学命名[/b][/color]rn用数学操作符的单词来命名变量。例如:rnrnopenParen = (slash + asterix) / equals;rn(左圆括号 = (斜杠 + 星号)/等号;)rnrn[b][color=#FF0000]令人眩晕的命名[/color][/b]rn用带有完全不相关的感情色彩的单词来命名变量。例如:rnrnmarypoppins = (superman + starship) / god;rn rn(欢乐满人间 = (超人 + 星河战队)/上帝;)这一招可以让阅读代码的人陷入迷惑之中,因为他们在试图想清楚这些命名的逻辑时,会不自觉地联系到不同的感情场景里而无法自拔。rnrn[b][color=#FF0000]何时使用 i[/color][/b]rn永远不要把 i 用作最内层的循环变量。 用什么命名都行,就是别用i。把 i 用在其他地方就随便了,用作非整数变量尤其好。rnrn[color=#FF0000][b]惯例 — 明修栈道,暗度陈仓[/b][/color]rn忽视 Java 编码惯例,Sun 自己就是这样做的。幸运的是,你违反了它编译器也不会打小报告。这一招的目的是搞出一些在某些特殊情况下有细微差别的名字来。如果你被强迫遵循驼峰法命名,你还是可以在某些模棱两可的情况下颠覆它。例如,inputFilename 和 inputfileName 两个命名都可以合法使用。在此基础上自己发明一套复杂到变态的命名惯例,然后就可以痛扁其他人,说他们违反了惯例。rnrn[b][color=#FF0000]小写的 l 看上去很像数字 1[/color][/b]rn用小写字母 l 标识 long 常数。例如 10l 更容易被误认为是 101 而不是 10L 。 禁用所有能让人准确区分 uvw wW gq9 2z 5s il17|!j oO08 `’” ;,. m nn rn [()] 的字体。要做个有创造力的人。rn[b][color=#FF0000]把全局命名重用为私有[/color][/b]rn在A 模块里声明一个全局数组,然后在B 模块的头文件里再声明一个同名的私有数组,这样看起来你在B 模块里引用的是那个全局数组,其实却不是。不要在注释里提到这个重复的情况。rn[b][color=#FF0000]误导性的命名[/color][/b]rn让每个方法都和它的名字蕴含的功能有一些差异。例如,一个叫 isValid(x)的方法在判断完参数x的合法性之后,还顺带着把它转换成二进制并保存到数据库里。rnrn…………………………rn最后问一句,这真的是黑幕么,国内有没有这样的情况rnrn高能引用链接:http://blog.jobbole.com/80241/rnrn 论坛

没有更多推荐了,返回首页