最近一个工作三年的老同事离职了,领导让我接手维护他的功能并把代码交给我。
我拿到代码一看,变量命名大部分都是 fuck,shit 之类的粗话,甚至 for 循环用于 break 的 label 也命名为 FUCK_FOREACH,JUnit 测试导出的文件也带有 Fuck 字样,而且通篇没有注释,应该就剩数据库的表命名没带粗话了。。。
我这里没有 code review,貌似领导也不知道,不知道那个老同事经历了什么,我的天!!!
所以,问题来了,你们会在代码里带粗话吗?
「 被命名逼疯的节奏 」
说真的,看到这些代码的时候,我下意识的揣测这位老哥,一定是被变量命名给逼疯了。当你代码敲多了,就会深有体会,天知道变量名有多难取?!
我绝大数情况下是不会用脏话的,不管是调试代码还是注释,除非要用作很强烈的状语,比如:
var theList - 列表
var theLongList - 长列表
var theFxxkingLongList - 超 TM 长列表
如果逼到让我不得不夹带粗话来命名,我一般都会进行自我洗脑:命名最重要的是语义明确,执行的话不管用什么单词,编译后都只是地址而已。
我相信,曾经在代码里带过粗话的,不在少数。
很多程序员英语不好,有时候实在不知道该怎么描述的时候,比如:
//这段代码是用来干掉一个 bug -> just fuck a bug!
有时候遇到比较蛋疼又让人来火的 bug,调试时的日志中可能会写一些,但是一般问题解决之后,日志我都会删除。
命名有时候真的令人捉急,让人头大,情有可原。
「 这小伙儿戾气太重 」
除了被命名逼疯,还有一类程序员,戾气太重,纯粹是为了宣泄。
我曾经见过一些程序员,在debug 打 log 的时候会写 wtf、fuck、shit - -。。。我在想,这是对公司有多大怨念。
说真的,看到别人将粗话写在注释里面的话,只要不影响阅读就没事儿。写在文档里面的话,就想掀桌子了。
当然,我也在猜想这些夹带在代码中的粗话,是在怎样的开发场景中诞生的,会不会是加班时的产物呢?也不一定。
之前忘了在哪看到,一个哥们半夜加班时,哭诉重构项目里的变量全是用食物命名的,此时当事人早已哭晕在厕所。
假如有负面情绪,就自我调整吧,别写进代码里。写进去可能就没劲了,被别人看到会感觉你这人戾气很重,不好相处。
再说,如果是为了效率,这种随便的字符串不都是 fsdfddaf 就完了,何必f**k呢?
说真的,变量命名这块儿,公司有规定按规定来,没规定哪那么多戏。
「 都成年人了,专业点好么 」
如果变量命名大部分都是 fuck,shit 之类的粗话,这就有点过分了。
说的严肃点,没有职业精神。
不得不说,开发过程,调试过程,思考过程有时候我也会写。但是,当思路梳理清晰后,我会重新起一个准确的命名。
有时候debug 的时候输出的调试信息会带 fuckXXX 的,但是 debug 完了自然就删了。这就没事,权当是程序员的自娱自乐。
其实我感觉脏话作为动词 /助词都没啥问题,毕竟不影响别人阅读代码。
但是作为名词或者句子就是很没水平的行为了,这种人就算不用脏话命名变量,估计也是拼音和 ABC。
个人感觉工作是工作,聊天是聊天,和关系亲密的朋友之间聊天的话,各种卧槽尼玛四不四撒怎么说都没关系,工作的话还是要以工作的态度来面对,像 fuck 这种表达感情的词写在注释中简直毫无意义,还不如精准的进行业务描述或者错误描述。
「 程序员的自我修养 」
我觉得,写出一段优美,健壮,可读性高的代码,是一个程序员最基本的自我修养。
在程序员这个圈子很久了,就发现,程序员这货,都喜欢这套,“这个接口干嘛用的,有文档么”,“自己看代码去”。很多时候都是一脸黑。
尽管程序员阅读别人代码技术都是一流,不管你是有没有注释,不管你是怎么循环嵌套,也不管你是怎么命名,他们都能耐心的,把代码分析个所以然来。
但,对于程序员这个视时间宝贵如生命,分分钟都能创造几百万价值的群体来说,您行行好,给我们省点时间吧,把变量是干啥用的,说清楚呗,没准节省的这几分钟,多赚个几万,还能请大家出去嗨呢。
每每看到部门的某大神,用一个神一般的变量名“flag”,我就有吐血的冲动,他还将这个flag一直雪藏,不用,只是传递到第n个方法才使用,顿时心力交瘁,我的天,这个flag都是是干嘛用的啊,后来才明白,是isPay的意思,用来标识用户是否支付成功了。
当时一口老血吐屏幕上,心里狂吐槽,老兄,你命名个isPay会死么,我的脑细胞这么不值钱么。
到后来看到,去魔法数字,用int NUM_7 = 7,而不是MAX_MEMBERS来表示最大成员、用x y z来命名变量名,各种只有作者,或者作者后来都忘了的独特命名方式,都见怪不怪了。
更有甚者,一个变量命名为passed,作用居然是“未通过”的意思,当时就石化了,作者还真是用心良苦,这都要考我细心不细心。
说到底,代码这东西,一个作用是让机器阅读,另一个重要的作用是让人阅读。一个好的变量名,能帮助阅读者了解变量的作用,也辅助了对整段代码的理解。
所以,不管你是新手还是老鸟,务必了解行业规范,切勿为了标新立异而违反规范。
今天就讲这么多,如果你有相同的经历或者不同的想法,欢迎在留言区告诉我~
十五年编程经验,整理了一批2019年最新WEB前端教学视频,帮助自学前端,想转行学习前端的同学,不论是学习规划、学习路线、学习资料、问题解答。加入WEB前端学习群:296212562。解决你学习路上所有的难题。
网友评论