如何写出健壮的代码

11660阅读 9评论2012-01-15 GFree_Wind
分类:LINUX

作者:gfree.wind@gmail.com
博客:blog.focus-linux.net   linuxfocus.blog.chinaunix.net
 
 
本文的copyleft归gfree.wind@gmail.com所有,使用GPL发布,可以自由拷贝,转载。但转载请保持文档的完整性,注明原作者及原链接,严禁用于任何商业用途。
======================================================================================================

首先,先汗一下自己的这个主题。作为一个毕业不过5年的软件工程师,写这个题目,似乎有点自不量力,因为一般都是大师才写这样的经验之谈。没关系,我已经准备挨砖了,就当抛砖引玉。

对于这个主题,我正在公司做一个简单的training,从基础一点点的讲起。也是自己的一点经验总结吧。说的不好之处,大家敬请批评指教。有机会的话,我也会把一些training的东西,分享给大家——是我自己的东西,不涉及公司机密呵。其中就有我博客中“编写安全代码”下面的内容。

1. 我认为最重要的因素是自己的主观思想,作为开发人员,他必须真正的热爱程序员这一行业,热爱coding,热爱自己的工作,热爱技术,对于写出优质健壮的代码有着强烈的愿望。只有这样,他才会自觉地提高自己,把代码写好,写漂亮。当兴趣与工作结合之后,才能做到事半功倍,享受coding的快乐。

2. 要注重细节,注重基本概念。这个观点看似简单,但是很多人却不重视。对于最基本的概念,只是知其然不知其所以然,甚至根本糊里糊涂。我面过一些工作5年的人,连对指针的理解还不透彻,仍然不明白“指针亦变量”这一简单的概念。当然,也许他们了解或者熟悉其它更高深的技术,但是以我看来,如果连最基本的东西都搞不明白,盲目的去追求热门或者新潮的技术,反而不够踏实。没有良好的基础,就去拔高,岂不在是建空中楼阁?

3. 在写每一行代码的时候,要明白这一行代码的真正意思和真正作用,要清楚对于这行代码背后,CPU到底会做什么操作或者什么运算。不记得是哪位大师说过,“如果你能理解程序每一个字节,那么该程序才会真正的无错”——大概意思是这样,我记不得原文了。做到这点太难了,我们只能尽力而为。

上面三点都比较泛泛,下面的几条就比较具体,不过也是相对具体呵:)

4. 要有良好的代码风格。记住真正的代码不是给计算机读的,而是给人读的,既包括你的同事,也包括你自己。当过段时间,你重读自己的代码时,都要感到费劲,更何况别人呢。这样的代码,谁来维护?当每个人的代码都有很好的可读性和可维护性,那么就容易理解整个儿系统了。系统的可靠性也就随之提高。

5. 要有良好的软件设计。我最喜欢的一个设计原则就是“Keep it simple”。这句话真是看似简单,做起来却很难。可以想想Unix的设计文化,我觉得就体现了这一观点。每一个命令功能都比较简单,但是将几个命令组合起来,就形成了强大和复杂的功能。当然,除了这一设计原则外,还有很多重要的原则,如减少耦合等。

6. 良好的软件开发流程。我是一名开发人员,对于整个儿的软件开发流程只是泛泛的了解,我更关心coding阶段的流程。Code Review是我认为可以减少bug的一个重要流程。当开发人员知道自己的代码需要别人review时,不自然的就会将代码写好,以避免别人对自己的不良评价和印象。另外,每个人思考的方式和角度都不同,换一个人或许就可以看出代码编写者忽视的问题。而且在代码的review过程中,参加review的人可以了解到不同模块的代码,对于熟悉整个儿产品都有所帮助,并且每一个人都可以在review发现的问题中,学到新的东西。

7. 提高自己的开发能力。扩大自己的知识面,熟悉自己的开发平台,系统,以及开发工具。以我个人而言,尽管我是一个Linux的程序员,但是对于windows的开发也有一些了解;尽管做上层应用居多,但是对于Linux内核也有一些了解;尽管是工作语言为C,但是对于C++也比较熟悉,至于linux上的各种脚本也是都有涉猎。尽管是软件工程师,但是对于硬件底层如CPU等也有一些了解。等等。至于有了比较宽广的知识面以后,才能在大脑中将各个知识点连接起来,真正形成一个体系。这样写出的代码,才有保证。

今天一共从七个方面说了说如何写出健壮的代码。其实这个主题太庞大了,可以找出更多的方面。另外就上面的七个方面来说,无论是哪一点,都可以继续展开。每个都是一个庞大的话题。这里只是泛泛而谈。

其实,最最重要的就是第一条:“热爱coding”。只要有了这一点,那么你就会很自觉地去努力,找到自己最适合的方法,写出优质无错的代码。

最后,用以前说过的一句话“我编程,我快乐”。然后一句话与大家共勉,成为一名top的程序员,天赋,机遇和努力,三者必不可少。但是成为一个good的程序员,我相信只要我们能力,都能做到。


上一篇:Haskell(4)——实现二分查找
下一篇:避免Bug:混用位域bit-fields和联合union时要谨慎

文章评论