编写傻瓜式的代码
在过去的几个月里,我研发了一种编写代码的方法。每当我写一个新函数、类或方法时,我就问自己:「这段代码足够傻瓜式吗?」如果不够傻瓜式,就说明没完事,我尽量使其傻瓜式一些。
但是,傻瓜式的代码不代表「无法运行的代码」。傻瓜式的代码应该完全按照预期的方式运行,不过,是以尽可能简单、直接、「傻瓜式的」方式。
任何人能编写它,阅读它的任何人都应该能够理解它。它不应该使阅读代码的人思考代码本身,而是思考手头的问题。不应该花太长时间,不应该太复杂,最重要的是,不应该尝试更聪明的方式。它应该能够搞定工作,仅此而已。
傻瓜式的代码是什么样子呢?这取决于它正试图解决的问题。拿元编程注1做例子,哪种语言经常被视作复杂和「具有妖术」。问自己「这段代码足够傻瓜式吗」就意味着「不允许元编程吗」吗?不一定,真的。在一些特定情况下,通过元编程就可以用最简单的方式解决某个问题。但是,也有很多情况是不需要元编程的,解决方案之上的额外包袱,有碍于理解代码本来的样子。
目标是甩掉包袱,削弱它,直到诞生出最傻瓜式、但可运行、测试通过的代码。
记住这里说的「傻瓜式」:「it works」还不够好。过于复杂、「看看这个更聪明的技巧」、过度抽象、难以阅读的代码,也能运行且通过了测试。这不是我想要的。它必须是傻瓜式的:不聪明、不复杂、不难于理解。
除了称为「傻瓜式」,最终的代码也被称为「优雅」、「干净」和「简洁」。但是「编写傻瓜式的代码」不像「编写优雅的代码」那样不可捉摸,前者貌似更容易达到,使得这种方式对我更有价值。除此之外,我发现从「编写傻瓜式的代码」入手较为容易,最终得到优于其它方式的、优雅的解决方案。
不是每一个优雅的解决方案都是直接的,但是,每个定义的「傻瓜式」的解决方案都是、且都应该是优雅的。
本文文字及图片出自 www.labazhou.net
你也许感兴趣的:
- Rust 中的奇怪表达式
- 为什么 Rust 编译器这么慢?
- 微软发布用Rust编写的Linux版经典MS-DOS编辑器
- 使用 CSS 实现缩放动画:变换顺序很重要……有时
- Linux 管道的速度到底有多快?
- 每位开发者都应尝试 Vim
- HTML 规范变更:对属性中的 < 和 > 进行转义
- 如何修改Starlink Mini以在不使用内置WiFi路由器的情况下运行
- 在字符串中检测元音的最快方法
- Python 正在逐步移除 GIL,这对 Python 开发者意味着什么
你对本文的反应是: