编程很像吃饭。
晚上我饿了。我不在家。我不能到厨房里找点东西吃。我四周看了看,看到只有一家街对面的麦当劳。
于是,我就进入了一个任何时候我离开家、离开我那舒适的小窝后遇到的两难境地:是吃那些垃圾食品,先填饱肚子呢?还是先饿着肚子,等回到家后去吃更健康的食物?
当我在思考这种困境时,我不禁或多或少会把这个问题跟代码质量作一定的联系。当然更多的还是先考虑吃的问题。
我的话只是表达我自己的观点,我并不认为麦当劳是一个能够提供我健康食品的餐馆。作为一个追求绿色食物的人,甚至只是作为一个注意饮食的人,麦当劳的食品远在我的健康食品的标准之下。但是,我相信,跟你们很多人一样,我们已经养成了吃麦当劳里的食物时不再思考这些食物的健康价值了。我饿了,麦当劳里有食物。
既然我已经认识到了麦当劳食物对我身体的短期和长期的影响,我就会全力避免去吃它。对所有预处理过的食物都要这样。这对我来说是漫漫长路。决定去改变自己的饮食习惯并不是一蹴而就的事,
健康饮食是一种持续动作。
很快你就会发现这一切都跟编程有联系。
健康饮食是一种持续动作?
麦当劳的食品不是一种健康食品。然而吃巨无霸汉堡加水果沙拉会比吃巨无霸汉堡加油炸土豆条要稍微健康一些。吃星巴克的金枪鱼会比吃大汉堡要稍微健康些。在本地咖啡连锁店里喝一碗汤要比吃星巴克的沙丁鱼要稍微健康些。在家里吃新鲜蔬菜做的食物要比其它任何地方的食物都健康。
按这样的方式看食物,我们会得出两点信息:
-
所有的事情都是相对的。你永远都可以做到更好,也一直可以做的更差。吃一个巨无霸汉堡并不意味着你会死,而为了能在家里吃饭而忍住一天不进食也未必更健康。
-
每一顿饭都是一个新的开始。人很容易落入这样一种陷进:“既然我昨天已经吃了一个大汉堡,不妨今天就再吃一个了”。这种思考方式是毫无逻辑的,也是有害的。每顿饭要吃什么都是一个新的决定。即使你今天早餐吃了一个大汉堡,午餐时吃家做的食物也是你的健康饮食之旅上前进的一步。
把程序代码当作食物
很像食物,代码质量的保证也是个持续的过程。
从简单层面上我们可以认为,一个没有测试和文档就发布的程序包要比有测试和文档的相同的程序包质量要差。
可是,在这些一眼就能看清楚的问题之外,还有很多说不清楚的东西。没有人都对什么是”健康”的代码有自己的标准。有些人非常清楚自己的编程问题,并在不断的改进自己。有些人数年来一直写着相同烂代码却从来没有想过这些代码是否“健康”。
做出健康的选择
像对待食物那样对待程序代码。
就像你需要吃饭一样,你最终需要发布你的程序。那么,如何处理这短期和长期里的影响呢?
如果你按照吃麦当劳食物的态度,发布了烂程序出去,那么,短期内你的需求是满足了。但从长期看,你将会一直受到它的影响。你的代码将会很难维护,需要你投入更多的精力。它对你长期的生活和健康没有什么好处。
如果你遵循吃家做食物态度,短时间里你的需求可能不会得到满足。这短期的影响是你会饿会儿肚子,但这样做的一个好的理由是:它对你长期的影响是正面的。你的程序代码会更容易维护,bug 会更容易解决,而且需求变更后修改起来更容易。你的程序代码会有一个更长更健康的生命期。
本文的作者 Jesse Storimer
抉择
写健康的代码跟你保持健康饮食一样,需要:认识和承诺。从吃垃圾食品到健康食品需要你认识到有些事情需要改进。对这些认识采取行动需要你对决定作出承诺。
改进你的编程习惯需要同样的事情:认识到有些地方需要改进,并承诺做出行动。
通常来说,你的抉择需要符合实际。你必须要吃饭,你的软件到一定时候必然要发布。找不到健康的食物,麦当劳必须是你的选择。我不知道你的软件项目会有什么样的限制因素,有时你不得不发布烂程序。但你要记住, 健康的编程是一个持续过程。用沙拉换掉你的巨无霸汉堡边的炸薯条。
世上没有‘最健康’的食品。你可以花上一整天来烹饪你认为的最健康的食品,但如果它没有进入你的胃里,就谈不上有什么用处。 代码质量很重要,但如果你不发布它,一切都没有意义。
最好的获得更健康的代码的途径是持续的改进。让你的程序每天都有改进,而不是期望一朝一夕就丢掉你所有的不好的编程习惯、期望以一个全新的更健康的来代替。
分享到:
相关推荐
对于require()饥饿程序员来说,不仅仅是大量生产的烂面包。 依赖 3分升牛奶 50克酵母 50克黄油 0.5 分升糖浆 0.5 茶匙盐 5 分升全麦面粉 3.5 分升小麦粉 安装 将酵母放入碗中,将其分解成小块。 通过测量面粉来准备...
多目标饥饿游戏算法MOHGS Matlab 适合智能计算方向研究生学习 饥饿游戏算法HGS求解多目标优化问题 代码完整 属于改进的HGS算法 本研究提出了一种通用的基于种群的优化技术- -饥饿博弈搜索( Hunger Games Search,HGS...
ViewKlass是用于开发Motif应用程序的C ++框架,特别强调了启用可重用组件的创建。 它是SGI的ViewKit(tm)库的克隆。 它源自“饥饿程序员”(http://www.hungry.com)ViewKi
java课程设计:饥饿小鱼 线程机制完成,功能较完备
饥饿游戏搜索算法HGS Java实现
了解死锁与饥饿产生的条件 了解死锁的解决方法 掌握利用银行家算法进行死锁避免
血清饥饿法对人牙髓细胞周期同步化的研究,刘斐,吴补领,目的:探讨不同的血清饥饿方法和饥饿时间对人牙髓细胞(HDPCs)细胞周期的影响。方法:血清直接饥饿和梯度饥饿处理人牙髓细胞。倒置�
小米手机饥饿营销策略分析-论文.zip
小米手机饥饿营销策略分析.zip
小米手机饥饿营销策略分析.doc
小米手机公司案例介绍饥饿营销.pptx
饥饿诱导对纤维环细胞自噬的影响,朱伟荣,叶伟,目的 探讨饥饿诱导对椎间盘纤维环细胞自噬的影响。 方法 用EBSS(Earle's balanced salt)液饥饿诱导处于对数生长期的纤维环细胞,0h、1h、2
描述了死锁和饥饿的相同点与不同点,对于了解操作系统有帮助。
操作系统课件——05死锁与饥饿_922004864.ppt
基于反相器的全差分电流饥饿型运算放大器的设计,朱昱光,周健军,介绍了一种应用于CT机内低功耗Sigma-Delta调制器中的跨导运算放大器。通过对传统运放结构进行比较,提出了一种基于反相器的全差分电�
饥饿对鱼类生理生化指标影响的研究进展,陈雷,李海波,本文对饥饿过程中鱼类的代谢水平、生化组成、组织结构及消化酶活性变化等方面进行综合阐述,旨在为深入研究该领域起到参考作用。
随着网络操作系统和手机通讯业的日益成熟,为智能机的发展带来了更广阔的市场。在当下智能手机激烈竞争的现状下,中国国产手机小米凭借...小米的成功离不开它精细化和差异化的营销策略,离不开它独特的饥饿营销手段。
饥饿的毛毛虫游戏在Python免费源代码 介绍 这 饥饿的毛毛虫游戏在 程序设计语言。该项目包含演示实际游戏玩法的基本功能。此应用程序包含各种形状和彩色背景。该项目将使正在学习IT相关课程的学生受益。这 饥饿的...
哲学家的生活就是思考和吃饭,即思考,饿了就餐,再思考,...3.3.3 为了避免死锁,把哲学家分为三种状态,思考,饥饿,进食,仅当一个哲学家左右两边的筷子都可用时,才允许他拿筷子,并且一次拿到两只筷子,否则不拿。
智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真模型及运行结果