代码之丑
郑晔
推文科技技术VP,前火币网首席架构师
新⼈⾸单¥19.9
1397 人已学习
课程目录
已完结 21 讲
0/2登录后,你可以任选2讲全文学习。
开篇词 (2讲)
开篇词 | 这一次,我们从“丑”代码出发
免费
课前热身 | 这些需求给到你,你会怎么写代码?
13类典型坏味道 (13讲)
01 | 缺乏业务含义的命名:如何精准命名?
02 | 乱用英语:站在中国人的视角来看英文命名
03 | 重复代码:简单需求到处修改,怎么办?
04 | 长函数:为什么你总是不可避免地写出长函数?
05 | 大类:如何避免写出难以理解的大类?
06 | 长参数列表:如何处理不同类型的长参数?
07 | 滥用控制语句:出现控制结构,多半是错误的提示
08 | 缺乏封装:如何应对火车代码和基本类型偏执问题?
09 | 可变的数据:不要让你的代码“失控”
10 | 变量声明与赋值分离:普通的变量声明,怎么也有坏味道?
11 | 依赖混乱:你可能还没发现问题,代码就已经无法挽救了
12 | 不一致的代码:为什么你的代码总被吐槽难懂?
13 | 落后的代码风格:使用“新”的语言特性和程序库升级你的代码
加餐 (4讲)
14 | 多久进行一次代码评审最合适?
15 | 新需求破坏了代码,怎么办?
16 | 熊节:什么代码应该被重构?
17 | 课前作业点评:发现“你”代码里的坏味道
结束语 (2讲)
结束语 | 写代码是一件可以一生精进的事
结课测试|这些代码坏味道的知识你都掌握了吗?
代码之丑
15
15
1.0x
00:00/00:00
登录|注册

结束语 | 写代码是一件可以一生精进的事

郑晔 2021-02-09
你好,我是郑晔。
春节将至,祝你新春快乐!我们的专栏到这里也正好要更新完结了,在结束语这一讲,我想和你聊聊程序员精进的话题。
创作《10x 程序员工作法》之初,我曾经定下了“写下 100 篇”的宏伟目标。在第三个专栏结束的时候,这个当年许下的宏伟目标终于实现了。
如果为这 100 篇的内容找一个共同的主题,那就是程序员精进之路。

程序员精进之路

在很多人心目中,程序员是一个辛苦的职业,一方面,各种新东西层出不穷,程序员们要努力追随,另一方面,业务飞速发展,我们唯有积极应对。那么,是什么支撑你在这个富有挑战的行业里坚持前行呢?
于我而言,这个问题的答案是,热爱。
在我的心目中,编程是一项有趣的智力活动,从最初解决一个特定的小问题,到现在创造一个方案去解决一个系统的问题,无不需要费尽心力去探寻一个好的解决方案。时至今日,即便我写程序已经二十多年了,但每次程序运行通过时,我心里依然还是有一些小激动,因为支撑程序运行的每行代码里都有自己的思考在里面。
正是每次一点点积累起来的成就感,激励着我不断去探索更好的做法。一开始,为了解决特定的问题,我四处搜集着各种编程技巧。当我理解了基本功的重要性后,就去拼命地补齐各种基础知识,构建起一个知识体系。随着开源软件运动的兴起,我知道了,原来有各种工具和程序库可以简化自己的工作。因为见识过别人的运指如飞,我曾专门练习了各种快捷键和命令行。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《代码之丑》,如需阅读全部文章,
请订阅文章所属专栏新⼈⾸单¥19.9
立即订阅
登录 后留言

精选留言(9)

  • 穿越时间与空间的旅行家
    感谢老师的分享,由于最近项目重构,学了老师的课感觉受益非浅。中间又去听了10x程序员和软件设计之美。希望能早日看到老师的新课程。

    作者回复: 三合一味道最好

    2021-02-09
    3
  • Jxin
    1.结束得太快了。100章结束了,下一站做啥?期待下个专栏。
    2.感谢郑老师的分享,我们下次再见。

    作者回复: 可能会考虑在这个专栏做个加餐,分享一些写代码的思考。

    2021-02-09
    1
  • Edison Zhou
    正在再次复习重构的第三章,呼呼。

    作者回复: 完美匹配

    2021-02-09
    1
  • qinsi
    个人感想:

    * 郑老师从业二十多年依旧在打磨编程手艺,瑞思拜!

    * 依稀记得RUP刚出来的时候,就有人认为今后程序员会被淘汰,因为你甚至可以画画图就生成代码。二十多年过去了,为什么编程仍旧是一门手艺活,而不是大规模的工业化生产?

    * 我觉得大厂们应该早就实现了工业化生产,毕竟好多年前就可以在一天之内复制粘贴出一个竞品App出来。那么在这样的大厂的工业化生产中,个人手艺的重要程度有多少呢?

    * 说到磨练手艺似乎就会讲到匠人精神,讲到匠人精神大多会拿日本举例子。举个听来的日本刀的例子。职业的刀匠花费大量时间人工打磨的日本刀可以作为工艺品卖出高价,但如果要大规模装备军队的话,就只能依靠工业化生产降低成本。日本刀的收藏家会为刀匠的手艺买单,那么是否会有客户为编程的手艺买单呢?

    * 通过文学编程来反对注释可能有些牵强,毕竟曾经有段时间通过在代码注释里写文档再把文档抽取出来(如JavaDoc)也被称为文学编程。程序员不爱写注释和不爱写文档的理由应该是一样的,那么解决的方法只有两种:要么代码像文档一样清晰,要么文档本身就是可执行的代码。郑老师讲的应该是前者,而个人理解的文学编程是后者。文学编程在数据科学/机器学习等研究性质的编程中用得较多(如Jupyter Notebook)。生产系统中要用的话,可能会是DSL的形式?(如Cucumber)

    * 散弹式修改和发散式变化,应该能够通过自动化分析提交历史得出,这样就不需要依赖个人判断了。不知道都有哪些工具实现了?

    作者回复: 手艺的重要性,取决于你给自己的定位。

    从行业整体的角度上,写一个 App 或是网站的速度,确实是越来越快了。这是建立在我们现在有了大量的基础设施上的,有人在最初设计好了架构,其它的程序员都是在这个架构基础上进行构建。这就在建筑行业,有人是设计师,有人是负责施工,你想扮演什么角色呢?

    建筑的设计师,他们其实也是艺术家,但其实他们也是手艺人,市面的建筑工人可以找到很多,但建筑设计师却很难找到一大把。

    在程序员这个行业里,优秀的架构师和普通的代码编写者之间并没有一个清晰的界限,他们都在写代码,但他们写的代码重要性是截然不同的,当然,他们的身价也是截然不同的。

    你去问任何一个架构师,他绝对不屑于只完成功能,他肯定有更高的追求,无论是让系统的架构更有可扩展性,还是让系统承载更大的容量,抑或是让系统变得更快。这些都是一种不断打磨的手艺,需要不断地锤炼。

    当你一不小心走到一个公司或是一个领域的最前列,能够给予你指导的,不再是别人已有的解决方案,而是你的品位,而品位的锤炼就是在日常中不断打磨出来的。

    回到你的问题上,你可以选择永远做一名普通的编码者,在别人画好的圈子里面跳舞,但也没有资格抱怨,世界对你的不公,为什么程序员是有天花板的。你也可以让自己不断地提升,去追求更好的手艺,成为那个让别人可以依赖的人,去解决更多好的问题。

    2021-02-09
    1
  • webmin
    关于注释最近我也冒出了困惑,事由是这样的新来了一位同事他写注释很勤奋,几乎达到一行代码一行注释,当时隐隐觉得不对劲,Review他的代码后,发现基上是业务怎么要求他就怎么翻译为代码,缺少聚合和封装,因为大家不是一个项目组,且我也不负责考核他,所以就没有去做进一步的事。

    故事到这你肯定好奇我为什么会去关心他的代码和注释,这是因为这哥们做我背后,他打字手很重,就像一挺JQ在持续扫射,以我的经验除了聊天时大家打字有那么快以外,非除是遇到代码大神已经 把绝大部分的事想得很清楚一气合成所有的代码,要不都会在编码时有停下来一段思考的时间,在一天中不会连续高强度的持续输出有效代码。今天在看到"一个好的程序应该像一篇优美的文章,读起来自然流畅,二者背后有诸多相通之处,你会看到,许多优秀程序员都有着优秀的表达能力。"深以为然,作家在写作时是要经过反复构思来回修改的,形象点的说法叫磨稿。

    作者回复: 每每写专栏,于我自己而言,就是一遍痛苦的梳理过程。你们看到的稿子都是几经打磨之后的产物。

    2021-02-09
    1
  • 布凡
    上班最后一天,学完了老师的代码之丑,也愿自己在写代码的路上越来越精进,不断超越自己,也祝老师和同学们春节快乐(*^_^*)

    作者回复: 加油,努力不能停

    2021-02-09
    1
  • 捞鱼的搬砖奇
    当年听你的10x 的做了个一份xmind https://gitee.com/meiyoudaima/xmind/tree/master/10X
    现在这门课收尾了,准备整理下,再做一次记录
    谢谢老师,期待下一门课程。
    祝老师新年快乐。
    2021-02-11
  • Geek_3b1096
    老师新年快乐!
    2021-02-11
  • Sinvi
    把写代码也当成艺术
    2021-02-09
收起评论
9
返回
顶部