每个程序员都该知道的10大编码原则

回顾我的职业生涯,我曾自己单枪匹马地干过,也和一些特别有才能的人一起共事过,曾解决过一些非常严重的技术难题,也见识过一些鼎鼎大名的技术公司。近期我和我的团队偶然聊起我的这些经历,谈论的成果是我们在编码时应该知道一些原则。这不是规矩,也不是指导方针。它们只是我在编写和运行代码时总结出来的一些需要注意的原则。

1.偏执

这一点与我而言几乎是天生的。我几乎是靠自学才成为了程序员。

我从不相信电脑,也不相信我刚刚修复的bug真的已经修复好了,总之我不相信任何东西。我甚至连自己都不相信。除非多次检验之后,我才会相信我已经如我所愿地理解了问题。

偏执是我的诤友,而且我认为它也应该成为我们每一个工程师的“左膀右臂”。我们要偏执的是,应该总是想着从另一种方式来证实假设,或者从另一个角度去看我们遗漏了什么。虽然很多时候这显得很鸡肋,但是有时候它能发挥至关重要的作用 。

2.不要欺骗电脑

换言之就是“避免抽象漏洞”(注:抽象泄漏是指任何试图减少或隐藏复杂性的抽象,其实并不能完全屏蔽细节,试图被隐藏的复杂细节总是可能会泄漏出来)。系统该怎么用就怎么用,不要别出心裁自创用法。不要指望会出现什么奇迹。

如果系统使用规模超过当前的三倍,那么就得考虑重新设计。电脑是最诚实的孩子,如果你欺骗了它,它绝对会狠狠地反咬一口。

3.简单就好

我们喜欢创建一些新事物、解决一些疑难杂症。这也是为什么我们干这一行的原因。但是很多时候,我们发现某个问题可以解决,却并不意味着现在就是解决它的好时机。

我总是觉得自己是个爱自找麻烦的程序员——我喜欢干净简单易于理解的设计。别以为这很容易,相反这是一个难度不小的挑战——以一种复杂的方式解决问题谁都能办到,但是只有优秀的程序员才能用一种既简单又易于理解的方式解决问题。特别是要真正直截了当地思考出问题的关键就更是难上加难了。

理解是重点,要知道程序员大部分时间是在维护代码,而不是写代码。

4. 优化第一戒律就是不要优化

这一点来自于John Bentley所著的经典书籍《编程珠玑》。(它旨在帮助我们像一个经验丰富的程序员一样思考。虽然已经发行了好多年,但是上面的很多经验教训仍然适用于当今社会。)

优化可以采取多种形式:速度、后验形式、潜在规模、可能用途,等等。

问题在于,大多数的优化最终是没人用的,而且从定义上看,优化或多或少会使得设计更加复杂。所以,优化的第一戒律就是不要优化,除非你完全理解整个问题。(他的第二戒律依然是:“不要优化”,意即即使你理解了,但是除非你真的需要才能去优化。)

5.不要仅仅修复bug;要修复所有可能发生bug的地方

对于自己犯的错误,没必要耿耿于怀。每个人都讨厌出现bug,我也是。

我讨厌会让我犯错的系统。而且我真的非常非常讨厌去修复同样的bug,所以为了避免这种情况,每当我修复一个bug时,我就会思考以下问题:这种bug现在还有可能出现在哪里?以后又比较容易出现在什么地方?是什么原因造成了这种模式的bug?我能不能一下子一网打尽呢?

6.不断地做问题假设

因为我大部分时间都是在搞我自己的创业公司,所以我养成了一个不断询问自己的习惯“为什么要这么做?这能解决什么问题?有没有更好的方法?有没有什么更重要的事情是我还没做到的?”

我们应该一直保持这种态度,不断地询问自己这些假设情况。什么是真正需要解决的问题?是不是只要求解决效果而不必追究根本原因?解决方案完整吗?完备吗?值得吗?

7.从长远角度思考,放慢脚步,才能跑得更快

这可能是最重要的一点了。作为工程师,我们享受于高效的工作效率:喜欢不断地创建、创建、创建。但是如果我们不能用长远的角度看问题,只会作茧自缚,使得最后越来越难构建任何东西。

有时候,我们还没理解问题就直接去写代码,最后导致不得不放弃。有时候我们的方案虽然对局部问题很有疗效,可却能让事情变得更糟或造成更严重的后果。有时候我们匆匆忙忙没有完成设计,从而导致后期别人需要花更多的时间来修复。有时候我们只是懒得用正确的方式写,直接就复制或者借鉴了别人的内容,原因可能是因为忙着赶项目进度不想花时间去好好思考。……

上面这些情况举不胜举。也有人说,这可比我碰到的情况好多了,呵呵。但是我还是想重复一下——我们的目标是建设最多最强大的功能,拥有最广泛的用户。所以,目光要看得长远。

8.关心自己的代码

我想这一点没必要过多解释了吧。不过遗憾的是,现在有很多人时不时地将其抛之脑后。

为自己的工作骄傲!关心你自己写的代码!

如果我想偷懒抄近路,我就会告诉自己种瓜得瓜种豆得豆,现在偷懒将来可能会面对很多乱七八糟的代码,最后可怜的还是自己。

当然你也不必极端——在谷歌公司我经常开玩笑说其他的工程师对待代码就像对自己的宠物一样,而我和代码之间的关系我更像是一个牧场主——务实,不感情用事。话虽然这样说,但是碰到代码不听使唤的时候,我还是忍不住会发脾气。

9.成本、速度、正确率

这是软件中的铁三角关系,也是全世界软件工程师孜孜以求的目标。但是这不能成为我们裹足不前自满自得的借口。

事实上,所谓程序员的优秀和伟大之间的区别往往在于他们驾驭这个铁三角的能力——伟大的程序员通常会想尽办法尽可能地达到这三个目标。我们都应该努力成为伟大的程序员。

不过话说回来,鱼与熊掌不可兼得,当我们不得不摒弃这个铁三角的时候,一定要明白我们要妥协什么,为什么而妥协,是否是当前形势下最正确的选择。

10.最后,保持好奇心,不断地学习

好吧,这可能看上去更像是职业建业。但是如果你没有了好奇心,不愿意学习新鲜事物,不再关心新技术、新语言,那么你还干这一行干嘛呢?

【文章出处php100】

大家好,我目前就职于达内集团-昆明分公司,2823060927是我的qq有什么关于JAVA、PHP、NodeJS、数据库方面的问题可以和我交流。

目前我们公司在招聘JAVA、PHP项目经理,有意向的可以加我QQ详谈。

时间: 2025-01-02 15:01:41

每个程序员都该知道的10大编码原则的相关文章

每个程序员都该知道的10大编程格言

每个程序员都该知道的10大编程格言 编程格言1:无风不起浪 (There is no smoke without fire) 编程格言2:预防为主,治疗为辅(An ounce of prevention is worth a pound of cure:) 编程格言3:不要把鸡蛋都放在一个篮子(Don't put all your eggs in one basket) 编程格言4:种瓜得瓜,种豆得豆(As you sow,so shoul you reap) 编程格言5:欲速则不达(Great

程序员必知的10大编码原则

每个程序员的职业生涯都是与一个又一个代码共度的,每天除了码代码还是码代码.总结回顾下我的职业生涯,经历的多了,总觉得不总结点有用的东西出来感觉对不起程序员码代码这份职业!编码多了,这里就给大家总结下编写和运行代码是一些需要注意的原则.仅供参考! 1.偏执 这一点与我而言几乎是天生的.原谅我可能是处女座的程序员! 我从不相信电脑,也不相信我刚刚修复的bug真的已经修复好了,总之我不相信任何东西.我甚至连自己都不相信.除非多次检验之后,我才会相信我已经如我所愿地理解了问题. 偏执是我的诤友,而且我认

每个程序员都应该知道的 16个最佳 PHP 库

PHP是一种功能强大的web站点脚本语言,通过PHP,web网站开发者可以更容易地创建动态的引人入胜的web页面.开发人员可以使用PHP代码与一些网站模板和框架来提升功能和特性.然而,编写PHP代码是一个繁琐又耗时的过程.为了缩短开发时间,开发人员可以用PHP库替代编写代码来为站点添加功能. 使用PHP库来取代编写代码,可以显着地降低网站的开发时间,从而开发人员可以将时间投入到网站设计等重要环节. 今天我们要介绍的就是16个最佳的PHP库,它们将帮助网站开发人员轻松提高网站的功能,优化PHP的开

每个JavaScript程序员都需要知道的5个数组方法

Array.forEach() .forEach() 方法能够方便的让你 遍历数组里的每个元素,你可以在回调函数里对每个元素进行操作..forEach()方法没有返回值,你不需要在回调函数里写return,这是无意义的. var animals = ['dog', 'cat', 'mouse']; animals.forEach(function(item){ console.log(item); }); Array.map() .map() 方法能够遍历整个数组,然后 返回一个新数组,这个新数

凤凰大厅源码代理每个程序员都该知道的 5 个定律

定律或称法则,可以指导我们并让我们在同伴的错误中学习.凤凰大厅源码代理(h5.hxforum.com)联系方式170618633533企鹅2952777280 (http://yhgj8004.com) 源码出售 房卡出售 后台出租有意者私聊扣扣 这篇文章中,我将介绍我每次设计或实现软件时出现在我脑海的 5 个定律.其中有些和开发有关,有些和系统组织有关.它们可以帮助你成为合格的软件工程师. 墨菲定律 "凡事可能出错,就一定出错."这条定律来源于 Edward Murphy -- 一名

每个php程序员都应该知道的15个最佳PHP库

PHP是一种功能强大的web站点脚本语言,通过PHP,web网站开发者可以更容易地创建动态的引人入胜的web页面.开发人员可以使用PHP代码与一些网站模板和框架来提升功能和特性.然而,编写PHP代码是一个繁琐又耗时的过程.为了缩短开发时间,开发人员可以用PHP库替代编写代码来为站点添加功能. 使用PHP库来取代编写代码,可以显着地降低网站的开发时间,从而开发人员可以将时间投入到网站设计等重要环节. 今天我们要介绍的就是15个最佳的PHP库,它们将帮助网站开发人员轻松提高网站的功能,优化PHP的开

每一个程序员都必须阅读的10篇文章

原文:10 Atricle Every Programmer Must Read by Javin Paul 作为一名Java程序员和软件开发者,我已经从那些名为<关于XXX,每个程序员都应了解的>的文章中学了很多东西,这些文章倾向于提供许多关于某一个特定主题的实用的.有深度.难以发掘的信息.在我的学习过程中,我读到了不少非常有用的文章,我会收藏这些文章以便日后参考和再次阅读.我个人认为所有程序员可以从这些文章中获益,这也是促使我发帖,并与你们分享这些<关于XXX,每个程序员都应了解的&

每一个JavaScript开发者都应该知道的10道面试题

JavaScript十分特别.而且差点儿在每一个大型应用中起着至关关键的数据.那么,究竟是什么使JavaScript显得与众不同,意义非凡? 这里有一些问题将帮助你了解其真正的奥妙所在:   1.你能说出对JavaScript应用开发人员非常重要的两种编程范式吗? 答: JavaScript是一门多范式语言, 支持命令式/过程式编程以及OOP(面向对象编程)和函数式编程.JavaScript使用原型继承来实现OOP. 面试官非常高兴听到这些: ·原型继承(或:原型,OLOO(对象链接到其它对象)

提高程序员职场价值的10大技巧

如果你已经是个很牛叉的程序员,但是依然觉得觉得还不够的话,欢迎阅读此文.本文旨在帮助各位更上一层楼. 你是不是觉得自己已经掌握了所有的编程技巧?别太自以为是了! 会写代码的确很重要,但是要拿到更好薪水,则更依赖于别人是否知道你的才能.换言之,你需要推销自己.下面是如何成功推销的秘诀. 开发技巧No. 1:博客 建立自己的博客,每月至少发布一篇文章.做点研究,因为只有自己亲身经历过,才能言之有物,不会听上去像吹牛皮.学会如何写文章,像以前你的老师教的那样:列大纲,描述情节,最后检查语法和错别字.然