程序员进阶攻略
胡峰
京东成都研究院技术专家
33679 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 65 讲
蜕变:破茧成蝶 (3讲)
结束语 (1讲)
程序员进阶攻略
15
15
1.0x
00:00/00:00
登录|注册

10 | 炫技与克制:代码的两种味道与态度

克制
炫技
代码的两种味道与态度

该思维导图由 AI 生成,仅供参考

虽然你代码可能已经写得不少了,但要真正提高代码水平,其实还需要多读代码。就像写作,写得再多,不多读书,思维和认知水平其实是很难提高的。
代码读得多了,慢慢就会感受到好代码中有一种味道和品质:克制。但也会发现另一种代码,它也会散发出一种味道:炫技。

炫技

什么是炫技的代码?
我先从一个读代码的故事说起。几年前我因为工作需要,去研究一个开源项目的源代码。这是一个国外知名互联网公司开源的工具项目,据说已在内部孵化了 6 年之久,这才开源出来。从其设计文档与代码结构来看,它高层设计的一致性还是比较好的,但到了源代码实现就显得凌乱了些,而且发现了一些炫技的痕迹。
代码中炫技的地方,具体来说就是关于状态机的使用。状态机程序本是不符合线性逻辑思维的,有点类似goto语句,程序执行会突然发生跳转,所以理解状态机程序的代码要比一般程序困难些。除此之外,它的状态机程序实现又是通过自定义的内存消息机制来驱动,这又额外添加了一层抽象复杂度。
而在我看来,状态机程序最适合的场景是一种真实领域状态变迁的映射。那什么叫真实领域状态呢?比如,红绿灯就表达了真实交通领域中的三种状态。而另一种场景,是网络编程领域,广泛应用在网络协议解析上,表达解析器当前的运行状态。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

代码的两种味道与态度:炫技与克制 在编程的世界里,有两种代码的味道和态度:炫技和克制。炫技的代码往往追求技术含量和复杂性,但可能增加不必要的复杂性和出现Bug。而克制的代码则注重简洁、易懂和满足实际需求。作者分享了自己在编程成长过程中的经历,从炫技到克制的转变,以及对于新技术应用的克制态度。他强调了克制编码的重要性,包括反思和提炼代码、保持代码结构清晰整洁、以及恰到好处地满足需求。最后,作者邀请读者分享自己在编码成长过程中的体会。文章通过作者的亲身经历,生动地展现了炫技与克制在编程中的重要性和区别,为读者提供了有益的思考和启示。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《程序员进阶攻略》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(29)

  • 最新
  • 精选
  • third
    心得如下:可能理解有误,望老师指点。 1.炫技俗称装B,有句老话说得好,装B被雷劈 2.炫技是指,为了展示自己的水平,人为的推高自己代码的复杂度和理解难度。(损人不利己) 3.克制俗称低调有内涵。 4.克制是指,为了程序的稳定,以及可读性,人为的降低代码的复杂度和理解难度(损己利人) 5.符合三个重要特征: 1,直观的,可读的,高效的 2,结构干净整齐 3,具有全局观 6.B还是要装的,只不过得趁早,因为成本比较低。 7.最后,每次我想要装B的时候,玩一下《绝地求生》这个游戏,感受一下 杀人最多的人不一定能取胜,幸存才是最大的胜利,闷声大发财。

    作者回复: 哈哈,感谢third同学的总结心得,理解到位!喜欢第3条的阐释😊

    2018-08-24
    24
  • weineel
    只有炫技不克制过,才能克制不炫技。

    作者回复: 嗯嗯,都是泪😂

    2018-08-24
    12
  • Dream.
    一句话道出真谛“手里拿个锤子,看见什么都是钉子”,真的是学了点新花样,就想立马运用在项目中,幻想着自己多么的牛逼。随意乱锤的结果就是换来各种坑以及加不完的班。真如楼上所说,只有炫技过后才能懂得克制。看见这篇文章,还不算太晚。

    作者回复: 😊,都是加班换来的经验教训

    2018-08-24
    9
  • 湮汐
    胡老师,在这里想请教你一个问题。本篇中提到阅读代码,我们很多程序员也提议大家阅读有名的框架源码。 可是,自己在阅读源码的过程中,有时候有点无从下手,一个框架的源码量太大了,不知道从哪读起。再就是因为自己基础的原因,很多源码读不懂,看了半天不知道那一块到底是做啥的。 这里有没有读源码的方法呢?

    作者回复: 我读源码的方式是,发现这个框架实现了某个能力,我自己想不出怎么做,就会去看看别人怎么实现的。带着问题去读,可能有针对性一些

    2018-09-26
    6
  • 小名叫大明
    我倒觉得程序员初期可以考虑炫技(装B)代码。 个人理解如下: 1. 程序员历史上确实存在某些祖传代码不易动,不能动,只能某些人维护的情况,某些人确实得到了想要的效果,获得了利益。(这不是我的追求,哈哈哈) 2. 炫,代表着复杂度,代表着更高程度的抽象,这对自己写代码的水平是一种提高的途径,将读到的东西,学以致用,才能是自己的,即使是个坑,也会有所收获。 从中学会了,能与不能的界限,拥有了以后能够一眼甄别那些小年轻的想法的"超能力",哈哈 3.像您说的,升迁,生存之技。

    作者回复: 就怕炫完了,坑挖完了,人跑了😂

    2018-08-27
    6
  • 实现一个功能越简单明了越好,否则真会害人不浅的,现在我们项目组维护的代码最早都有10年的,早一点没什么,关键是代码中的一个功能,代码是一坨一坨的,一个方法接一个方法看都看不完,又是核心代码一直计划重构,但是首先要理清代码业务逻辑,真是件令人头疼的事。

    作者回复: 恩,理清再动手,此处坑多😄

    2018-08-26
    6
  • 爪哇夜未眠
    不经历这些失败的尝试,可能也掌握不了这些技术

    作者回复: 恩,每次炫技后都是给自己挖了坑

    2018-08-24
    6
  • @XP
    之前一家小公司里做安卓独立开发,看到网上兴起kotlin写安卓,我就整合到项目中,一边学习一边开发,之后大量重写代码,然后就开始出现很多兼容问题,想反悔都没办法,硬着头皮修bug

    作者回复: 冲动了吧……

    2018-08-24
    4
  • CrazyCodes
    使用合适的架构,合适的需要去实现适合的需求,不炫技,不装逼,活的久

    作者回复: 务实

    2018-11-15
    2
  • 登高
    毕业时写了一个android app,那时对高层设计很感兴趣。在网上发现了MVP模式和clean架构,于是将它用起来。但是没想到这给开发增加了太多工作量,需要理解掌握的知识超出了预想,结果拖累了app一定的完成度。现在看当时有点冲动了 面对新技术,基本态度希望是积极拥抱,但在实际工作中要有克制。

    作者回复: 恩,心态要开放,行动要克制😄

    2018-08-27
    2
收起评论
显示
设置
留言
29
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部