如何编写出高质量的代码

来源:互联网 发布:苹果蜂窝网络怎么回事 编辑:程序博客网 时间:2024/05/01 10:07

如何提高代码质量,是每个软件工作者都应该思考的问题,因为这直接影响软件产品的质量。提高代码质量,是有法可循,有条可依的,以下方法是本人工作积累的一些经验:

1、从全局的角度看问题。比如你遇到一个问题,一般的做法是先去找出错的地方,然后试图从出错的地方解决问题。出于种种原因,可能很难从出错的地方解决该问题,这时,我们就该想是否能从其他的地方解决该问题。如有你对整个系统比较了解,并且具有全局思维,一般是很容易解决的。举个例子,我曾遇到一个问题,updateCatalogLink函数出错,link无法更新,我花了很大的功夫去研究Catalog的相关的API,做了很多尝试,最后仅能实现部分功能,但代码复杂,很不理想。最后一位高手看了下,说另外一个函数replaceDocumentLink可以实现该功能。实现该功能仅需修改几行代码。我非常佩服,因此,我们要去了解整个系统,有全局的思维,往往事半功倍。

2、利用成熟的代码。从事产品开发我们不赞成你写的代码太过个性,我们要求用成熟的代码。有个性的代码往往会引出很多问题,而成熟的代码经过了很多的测试,一般不会有问题的。比如,以下代码就比较完善,不会出什么问题。如果你不清楚什么才是成熟的代码,那就建议你多看看别人的代码,看看哪些用的比较多,一般来讲,用的比较多的往往是成熟的。我们应该学习这些常用的代码,成为我们的知识。
bool already_in_list = false;
for(vector<wstring>::iterator it = _modified_files.begin(); it != _modified_files.end(); it++)
{
wstring current_file = *it;
if(_wcsicmp(current_file.c_str(), filename.c_str()) == 0)
{
already_in_list = true;
break;
}
}
if(! already_in_list)
{
_modified_files.push_back(filename);
}

3、规范命名,添加必要的注释。规范的命名,必要的注释,能提高代码的可读性。重要性不再多说,看以下例子,其中1874484-01表示QA报的错误问题代号,可以从相关系统查看错误信息。看以下代码,有种很舒服的感觉。

文件头部
23-OCT-09 X-12-05 evm          1874484-01: make sure CADModel is filled out before writing xml

代码部分
// 1874484-01: make sure CADModel is filled out before writing xml
if (!model->getIsMetadataFilledOut())
{
getAdapter()->getCADSystemHelper()->filloutModel(model);
}

另外还有一个代码修改文档,指出问题出错原因,解决方法,修改文件,测试情况等。

4、编译前检查代码。虽然编译器可以给我们发现很多的问题,但我还是建议编译前自己先检查一遍,有人的建议是写几行就要检查一次,比如名字写错,内存忘记释放,函数调用错误等一些低级的错误我们不应该让编译器去发现。一个是编译器可能找不到这些错误,还有就是会浪费很多的时间。

5、白盒测试很重要。开发人员经常不愿找自己的错误,这是个心理作用。为了写出高质量的代码,白盒测试非常重要。一步步的看执行结果,不放过任何一个问题,很多问题往往出现细节中。

6、黑盒测试更重要。开发人员在提交代码之前,我还是建议多做些测试,这样可以避免很多低级错误。如果一个问题由QA部门发现,然后再到开发部,往往折腾不少时间。尤其是些低级错误,更不能出现。

以上这些只是我工作中积累的一些经验,愿与大家分享,不足的地方欢迎大家指出。