这玩意儿我也写得出来,为什么我就不是高级程序员?

作者 : 开心源码 本文共1686个字,预计阅读时间需要5分钟 发布时间: 2022-05-13 共211人阅读

Brian Goetz 是 Java 领域的技术大牛,同时也是《Java 并发实践》一书的作者之一。我最喜欢的一句名言就是他讲的。这句话出现在甲骨文公司以《编写傻瓜式代码》为题发表的访谈当中,当时记者问到 Goetz 如何才能编写出性能良好的代码。以下是他给出的睿智回应:

一般来说,在 Java 应用程序当中快速编写代码的方法,就是先写点傻瓜式代码——这类代码简单、干净,而且遵循最明确的面向对象准则。

在接下来的发言中,他一直在具体解释:为什么尝试优化代码并试图让代码看起来不那么傻瓜,正是程序员群体中的一种常见错误。而在我看来,这更多是一种新手程序员常犯的错误。

高级开发者的代码

假如大家像我一样,也经历过初窥门径的过程,那么各位应该还记得自己第一次看到高级开发者写出的代码时,心里想的是:

“这玩意儿我也写得出来,为什么我就不是高级开发者呢?”

此后,我花了不少时间想写出相相似的代码,最后发现我根本就做不到。

关于“高级开发者”的疑问,并不在于我无法了解代码当中的特征。相反,我一眼就能明白他们写的代码在说些什么,由于这些代码从根本层面上就是在走傻瓜式路线,谁还看不懂啊。但除此之外,似乎还有更多不同。我记得当时我在想,“这「更多的」到底是什么?又是怎样做到的?”

从那时起,我逐步学会了编写傻瓜式代码的所有准则与质量保证方法,包括:YAGNI 准则 (You Ain’t Gonna Need It);单一责任准则;DRY 准则(Don’t Repeat Yourself);单一级别笼统准则;低耦合等等。我自己,也慢慢成了“高级开发者”。(我其实很讨厌「高级开发者」这种说法,因而我始终坚持称自己为「软件工程师」,但这又是另一个故事了。)

我学到的最重要的经验就是:

编写傻瓜式代码实际上非常困难,但一旦实现则会带来远超预期的回报。

如何从一里外认出菜鸡程序员

在《重构:改进现有代码设计》当中,Kent Beck 指出:

任何傻瓜都能够编写出计算机可以了解的代码,但只有优秀的程序员能够编写出人类可以了解的代码。

假如大家遇到精妙无比的单一代码行,以及模糊的笼统及 / 或者语言特征时,其背后几乎总会有一位初级开发者。说实话,后一种情况尤其常见。看到这些代码,我仿佛就看到这位程序员在强调:

“快来看我!我真的很懂这门编程语言!我在使用默认接口同步本地线程 JavaBean 复制构造函数,并配合自己设置通用未检查异常以及跨函数安全强化 JAXB Lombok 代码生成!看我厉不厉害!”

以上场景纯属胡说八道,但相信大家能够明白我的意思。这类代码往往来自那些只关注计算机了解,而不重视人类了解的程序员。

代码的本质,在于向其余人交流并向计算机发出指令;但相较于后者,目前代码的前一项作用显得尤其重要,由于有编译器负责将程序员编写的内容翻译成机器语言。一般来讲,这种转换会分多层实现,例如在将 Java 编译为 ByteCode 时,Java 代码首先由 Java 虚拟机在运行中读取,并最终将内容翻译为 0 和 1 的形式。

不过代码代表的依然是人类的语言,除了指导计算机之外,必需也能够表达任务当中的谁、什么、何时、哪里、如何以及为什么等问题。再举个例子,即便你的公司被收购了五年多,这些代码也依然得具备实际意义,并确保之前从未见过这些代码的新团队能够快速打开并进行功能加强 / 错误修复。

是的,编写傻瓜式代码非常困难。随着时间的推移,我觉得我越来越喜欢这种编程风格了。当我在代码评论中收到“这代码真干净!”之类的评语时,我真的感到非常欣慰。我知道我能为整个团队、乃至未来的代码维护者们做的最好的事情,就是编写傻瓜式代码。

需知:

道路千万条,维护第一条。代码不规范,运维两行泪。

自己是一个6年的前台开发工程师

这里推荐一下我的前台学习交流扣qun:784783012 ,里面都是学习前台的,从最基础的HTML+CSS+JS【炫酷特效,游戏,插件封装,设计模式】到手机端HTML5的项目实战的学习资料都有整理,送给每一位前台小伙伴。2019最新技术,从企业招聘人才需求 到怎样学习前台开发,和学习什么内容都有免费系统分享。好友都在里面学习交流,每天都会有大牛定时讲解前台技术!

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 这玩意儿我也写得出来,为什么我就不是高级程序员?

发表回复