写代码的最高境界:能不写则不写、能少些则少些

标签: 业界观察 | 发表时间:2014-12-21 23:00 | 作者:techug
出处:http://www.vaikan.com

在2012年的时候,笔者写过这样一篇文章: Write Less Code,在当时还不错,但是在那之后,我在PageCloud工作,两年之后,再回过头来看这篇文章,现在,带着两年的思考和经验(希望如此),对这篇文章重新修改。

软件开发的基本真理就是写代码。不过最大谬论之一就是为工作而写代码。当我第一次开始写代码的时候就落入了这个陷阱。编写代码是一件很棒的事情。敲打键盘让自己有成就
感,就想正在完成自己的梦想。但是这些年,我学到的东西则更重要——作为软件开发者尽可能写更少的代码。

别误会,我的理解,我们不应该将自己置身于编写代码,或者敲打让人难以理解的代码情境中。事实上,花一点时间思考,我们会发现, 我们大多数的时间,都用来维护代码。编写更少的代码,而不是为自己创造更多的工作看起来像是一个相当好的主意。

为什么?

多看看,我的使用工具,使用的框架。我做的所有的事情,用的所有的工具,都是为了写更少的代码。使用工具为了减少代码中的错误,让你走更少的弯路。

那么,为什么要写更少的代码呢?之前,我说你的工作是写更少的代码,而今看来,那时候,我是错的。实际上,你的工作是 思考,是思考遇到的问题,找到一个可靠的方法并把它用到软件开发中去。开发软件的一个副产物就是我们不得不写代码来解决问题。

代码意味着结束

代码没那么重要。我们喜欢说服自己,我们正在开始执行、并把我们的解决方案放入软件中。这样看来,代码既是一种方式也意味着结束。我们谈论自己所用的编辑器,谈论我们最喜欢的编程语言,谈论使用环境。每个人都在谈论,享受自己的工作,没什么不好意思的。重点是你是否专注。代码很棒,但他也可能是敌人。及时我们花很多时间去写,他也可能很脆弱,不够清楚,甚至不够稳定。

这就是为什么我要说的”Write less code”。无论何时,我觉得这个项目或者代码块变得比想象中大、复杂,我就会想到”写更少的代码”。无论何时,我写了多少代码,甚至写了一页又一页,我重构他,我重写他,同时思考”写更少的代码”。

有时候,如果不能写出简洁、干净的代码,对自己来说,写一堆代码就是很痛苦的事情。写更少的代码就是写干净清晰的代码。当你”节约代码”的时候,就意味着,你在写更少的代码,意味着你写代码的目的就是让他变得简洁。

那么,我从中学到了什么?我认为写完代码就意味着结束,在软件开发中解决各式各样的问题就不可避免。所以多思考,重构、删除以前的老代码,并且使用更少代码编写新代码。

不要犹豫,从今天开始,就这样做。

相关 [代码 境界] 推荐:

写代码的最高境界:能不写则不写、能少些则少些

- - 外刊IT评论
在2012年的时候,笔者写过这样一篇文章: Write Less Code,在当时还不错,但是在那之后,我在PageCloud工作,两年之后,再回过头来看这篇文章,现在,带着两年的思考和经验(希望如此),对这篇文章重新修改. 软件开发的基本真理就是写代码. 不过最大谬论之一就是为工作而写代码. 当我第一次开始写代码的时候就落入了这个陷阱.

这就是境界

- Hua - 设计|生活|发现新鲜
真是亮瞎了双眼,这竟然是纸制品. 当年的纸老虎要是有这功底,想必要花上双倍的时间才能被识破吧. 艺术家,您这一双手都是怎么长的. 「设计,生活,发现新鲜」在新浪微博,更即时地获读更新,更直接地交流沟通. © 设计|生活|发现新鲜 | 原文链接 | 投稿 ! | 新浪微博 | 逛逛我们的在线商店. Marie Louise Lamp: 奇妙的幻影台灯.

xx的最高境界[24p]

- lei - 乐淘吧
xx的最高境界[24p] is a post from: 乐淘吧-淘快乐. 591mmm旗舰店入驻淘宝商城!打造品牌全场以3.8折大型活动!. 最新淘宝网各大排行第一的店铺!(官方数据倾力打造. 犯罪最高境界—心理暗示杀人 (0.937). “我爸是李刚”这句口号真的冲出亚洲,走向世界了. 还是该叫你尔基 (RANDOM - 0.008).

PPT的四重境界

- 沈裔 - 般若黑洞
如果你一直在关注这个博客,一定对这个的问题很感兴趣:如何成为真正的PPT高手. 对于一个成熟的领域,没有精研5年以上是称不上高手的. 所以在这个问题上,一直都不敢大言不惭. 不过经常面对这样的问题,拿“我不是高手”说事儿连自己都觉得搪塞. 这些天在两地来来往往,坐在班车上看到路边的公交牌,广告牌和那些大大小小的招牌,觉得应该说点啥了.

婚姻的三重境界

- ixfx - 佳人
婚姻,不仅是两个人得结合,更是两个人所有社会关系的结合. 婚姻的三重境界:与所爱的人、所爱的人的习惯、所爱的人的社会背景一一结合,如此才能长相厮守、携手一生. 一个姑娘和一个汉子成了家,姑娘的口味清淡,汉子无辣不欢. 一天,姑娘的父亲做的菜咸了些,母亲一声不响拿来水杯,夹了一筷子菜,将菜在清水里荡一下后再入口.

上班无聊的境界!

- Heng Yang - 微博段子
原文地址:http://www.tduanzi.com/tweets/15198.html.

代码重构

- - ITeye博客
随着程序的演化,我们有必要重新思考早先的决策,并重写部分代码. 代码需要演化;它不是静态的事物. 重写、重做和重新架构代码合起来,称为重构.    当你遇到绊脚石  ---  代码不在合适,你注意到有两样东西其实应该合并或是其他任何对你来说是"错误"的东西  -------- . 如果代码具备以下特征,你都应该考虑重构代码:.

代码小比较

- Tim - 斯巴达第二季
判断上百万个4k的buffer是否为全0,我最先想到的办法是:zero_buffer = malloc(4096);. /* 循环百万次读取buffer */.         /* 全0 */. 由于好奇,看看shell工具cp的代码,它的解决办法是:. /* 循环百万次读取buffer */.         /* 全0 */.

两行 JavaScript 代码

- MessyCS - Dreamer's Blog
最近看到了两行 JavaScript 代码,很受启发. 在 JavaScript 中,我们可以获取HTML元素的属性值,例如 element.id. 但是,因为 for 和 class 是 JavaScript 中的关键字,所以在 JavaScript 中这两个属性名称分别用 htmlFor 和 className 代替,于是在封装的时候需要先对这两个属性进行特殊判断.

Netty代码分析

- LightingMan - 淘宝JAVA中间件团队博客
Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序[官方定义],整体来看其包含了以下内容:1.提供了丰富的协议编解码支持,2.实现自有的buffer系统,减少复制所带来的消耗,3.整套channel的实现,4.基于事件的过程流转以及完整的网络事件响应与扩展,5.丰富的example.