9月火气大,能认真写代码么?

5,114 阅读7分钟

不羡鸳鸯不羡仙,一行代码调半天。原创:小姐姐味道(微信公众号ID:xjjdog),欢迎分享,转载请保留出处。

我在风中藏把刀,斩尽世间秋色。 这句注定要流传千古的名诗,是xjjdog于2020年9月6日书写,体现了作者想要毁掉秋色,又对其毫无办法的矛盾心理。

秋天很让人讨厌,除了是万物萧条的开始,它还容易让人上火,容易让鼻炎复发。万物都会受到季节的影响,失去它的本性。当然,程序员也不例外。

今天是周末,本应该是不上班的。但中国在1995年之前,是没有周末的,周末是无数先烈们用鲜血换来的权益。

周末并不代表星期天,而是周六。星期天其实叫做礼拜日”,由于上帝在第七天休息,所以是西方人在这天去教堂的日子。所以,程序员一般选择周六加班,周日并不加班。

但很明显,这是舶来品!我好像找到加班的理由了!

总之,今天我们来加班了!空调开的很足,是个分享知识的好日子。


今天有同学分享的话题是:为什么日志规范里,要推荐使用占位符来书写日志。

log.debug("Processing trade with id: {} and symbol : {} ", id, symbol);

小A说: 很明显了,这是因为{}这对符号,非常的优雅。通过占位符方式,参与占位的那些参数,就可以被复用。这在设计上是非常优雅的。

小B说:我有点认同小A的观点。通过{}这种替换方式,每次都需要耗费CPU去进行查找替换。效率上肯定不是最优的,作者既然提供了这种方式,那肯定是出于代码的简洁性这种trade off进行设计的。

小C说:我觉得作者纯粹是脱了裤子放屁,直接使用+进行拼接也是没什么问题的。我用+拼接用了好多年了,也没什么问题。这就是作者顺手提供的API而已,并没有什么意义

小A问小C:你知道+在Java中怎么处理的么?

小C说:不要拿这种老掉牙的问题来问我。+最终在字节码上,都是使用StringBuilder进行拼接的。我还知道StringBuilder和StringBuffer,其实在效率上并没有什么区别。

小A不服:怎么就没有区别了?一个是同步方法,一个是正常的方法,肯定有区别的。

小C白了小A一眼,没有说话,似乎是不屑于解答这个问题。

别扯远了啊。推荐使用占位符方式,其实还是有非常大的道理的。看一下下面这段代码你就明白了,分享的同学及时的掩盖了这个尴尬。

if (log.isDebugEnabled()) {
    log.debug("Processing trade with id: " + id + " and symbol:" + symbol);
}

大家热火朝天的讨论起来。由于讨论又臭又长,xjjdog在此总结一下。

线上的日志级别,一般是使用INFO或者WARN的,DEBUG日志一般都不会打印出来,因为它的内容会非常的多非常的啰嗦。上面这段代码,在打印DEBUG日志之前,先进行了一步是否能打印DEBUG日志的判断。

这个判断,log.debug方法已经在方法内做了一次了,我们何必要多此一举呢?

注意debug中的内容,我们是使用+进行判断的,()里参数的优先级,是高于debug方法本身的。如果我们不加上外层的判断,那么debug里面的参数,无论是否要打印,都要进行一次拼接。

假如我们现在是ERROR级别,里面的这些参数依然要进行拼接。由于String对象是不可变的,这些拼接的字符串,就要占用非常多的堆空间,造成浪费。

这样解释{}占位符就比较好理解了。因为它生成的字符串数量是固定的,只有在真正需要打印的时候,字符串才会被拼接。

按这个逻辑,如果是log.error方法,你怎么玩都可以。

小A小B小C小F,全部都点头称是。


你们这是在这里讨论一些什么狗屁东西?工作进度都正常么?。正在大家讨论的热火朝天的时候,一个不协调的声音传来。

大家回头一看,原来是项目经理来了。他抱着一台老掉牙的灰色笔记本,屏幕上打开着他最喜欢的Excel,花花绿绿的统计表格甚是好看。

小A说:我们的进度都正常啊。主要是今天来加班,等的就是需求确认下来。

项目经理说:需求不早就给你了么?王总对这个需求非常的重视,你们得紧张起来。这个星期我都没找到关于这个需求的任务项。

小B说:这个需求根本就不明确,需要先把基本的功能点给订下来。我们加班也不能白加,在这讨论一下技术问题,增加一下技术氛围,有什么问题?

项目经理说:技术氛围有什么用?加班就是用来做需求的,进度不正常写的代码再牛X有什么用?这个功能王总要求下个周就要上,你们还有闲情逸致在这里搞讨论。讨论点需求不行么?

我在一旁静悄悄的看着,项目经理明显是受到秋天的影响了,目前有点火大。这明显违背了项目经理需要情绪稳定这个基本素质,他炸毛了。

反观程序员们,脸红脖子粗,争辩是他们的常态,骨子里的那点骄傲溢于言表。

x你m的,老子忍你很久了,小C跳将起来,一巴掌拍在项目经理的电脑上。花花绿绿的电子表格上面瞬间出现了一道道电子干扰波。

老子也忍你很久了!! 项目经理也怒了,指着小C的鼻子吼叫: 就TM数你干活慢,整天整些没用的。

一时间口水乱飞,恶语飞贯,振的天花板上灰尘都掉了下来。

你可能会奇怪,他们怎么不动手呢?因为这有前车之鉴。前不久在公司,两个干仗的都被开除了,而且不给赔偿,所以冒不得这个风险。

过了一会儿,大家都吵累了,怒气冲冲地盯着对方。项目经理并没有因为是一个人就败下阵来,因为其他的程序员都是怂货,只有小C在和他对骂。

这个需求,我和客户聊了一下,觉得不太应该做。今天大家可以早点下班了。正在大家发愣尴尬的时候,王总的声音竟然传了过来。他刚和客户通完电话,没有看到这激烈的场面。

我偷偷跑到王总身边,伸手遮住嘴,悄悄和王总耳语了几句。我得把发生的问题告诉他。

王总的脸沉了下来: 一个项目组,就是一个大家庭!不求相爱,也不能相杀。你们这种行为破坏了团结,非常的不可取。项目组的全体成员,这个月绩效全部为C!

一时间,大家幸灾乐祸的看着我。我尴尬的笑了笑,他们应该不是恨我,这根本就是秋天惹的祸。

作者简介:小姐姐味道 (xjjdog),一个不允许程序员走弯路的公众号。聚焦基础架构和Linux。十年架构,日百亿流量,与你探讨高并发世界,给你不一样的味道。