我要无辜的坦白说,您遇到标题党了。
没有血案,但有些抵触。不是代码bug,我要讲注释风格。
这位看官,已然来了,且读且评吧。故事是实在的,如有雷同纯属巧合。
作业是这样的,有人离任,公司调我补缺。那个体系一向有个工程师在保护,参加该体系的新人来了又走,他一直泰若磐石。刚过去一个礼拜,我就心下窃吼:“TMD坑爹啊!”,也完全体会到什么叫—肯定的威望、专家。该软件体系,是公司发家的支柱产品,触及十几个国家x七八个机型,700+个文件(C言语,一切.c .h档),十几万行代码,尽两百个跨模块全局变量,编译条件成百上千……(好吧,这是找托言、吐槽的节奏)
尽管有名义上的交代,和几回和声细语的亲近辅导。但真实独立打开作业时,许多小功用增修改,我都要折腾个好几天才干厘清代码调用联系、算法原理,然后找到修改点慎重纤细龟速前行。进展追寻的人有的时分也催毛了,直接请专家大师出手,咔咔咔,不到半响就搞定了。当然,前期我当然尽量的”不耻上问”,但人吗,总是有遇到被激起“节气”的时分。
这几天,十分困难搞好一个全新的功用模块,把代码推送给他兼并编译。不曾想,呈现了让我泣血的一幕。
我眼睁睁地、眼睁睁看着她把我辛苦敲入的代码注释/**/统统换成//,一份精巧的代码,登时成渣。
我问询缘由,她的答复是: 当代码里边充溢注释符号/**/时,她想要用/**/注释整段代码时,就会很费事。 我理解了,由于/**/不支持嵌套。比方下面这样的句子是编译不过的。
/*
a = b+c; /* 注释 */
*/
我的手抬了抬,毕竟作罢。尽管我感觉到庄严被蹂躏,心爱的著作被蹂躏,但我仍是开端反思。
许多软件标准、专家、有经历的工程,都主张或要求注释代码最好运用 /**/,他们的理由大概如下:
1. “//” 的注释的严密性不行。 例如
// 注释句子 ??/
a = b+c;
此刻,a = b+c在一些编译器不会被执行。
由于"??/"会被编译器当作 \,变成C言语的换行符。所以这段代码等同于
// 注释句子 a = b+c ;
就会被注释掉。咱们有爱好的,无妨去查找一下"C言语 三字母词"
当然,哪怕没有??/, 自己打盹碰到delete键也是会屏蔽掉a=b+c的
2. “//” 的注释,是C++开展后才引入的。 有些前期的C编译器对这种注释是不支持的。代码要做到全渠道兼容,这点是必需求考虑的。
因而,老外界说的C言语软件标准,无论是MISRA仍是CMMI,一般都要求一切代码注释有必要运用/**/。
君不见,那uCOS的最新版别源码,一切注释都是/**/。
君不见,那STM32的最新固件库,洋洋洒洒几十个文件,通篇皆没有用到//。
正是根据这样的理由,让我的心中充溢了愠怒。但我依然没有当场辩驳她,由于这些理由还有些苍白无力。
1. 其时,那个什么三字母词“??x”究竟是什么我现已忘了,无法马上做试验编译给她看。
并且时分我里边作了编译试验,得到的是
"filename.c", line xxxx: Warning: #2532-D: support for trigraphs is disabled xx代码句子xx // ??/
trigraph金山词霸—> [traigra:f]三字母词
看吧,编译器都警告了,默许是不支持的。
2. 并且,所谓的//是C++的,前期的c编译器不支持。
这点谁鸟啊,咱们只需现在,只用最新版别的编译器。
所以,我还要持续考虑。
我要保护这个传统,为自己代言……