10个对开发项目有害的编程习惯

避免这些常见的编码习惯,会让我们的工作更轻松、软件更安全且更易于扩展。

帕雷托法则明确指出,20%的因导致80%的果。又称为80-20法则,它适用于几乎每一个需要人作为劳动主体的相关领域。

在软件开发领域,这个法则可以概括为,大多数的问题都是由少数不良编码习惯造成的。改变这些习惯,你会更有效率。

下面讲讲最要不得的10条编码习惯:

1.拼写错误

让我特别讶异的是,为什么大家明知这个习惯百害而无一利,竟然还是任其在代码中肆虐横行,以致于经常出现拼写错误的变量名和函数名。更加悲剧的是,错误的拼写常常隐蔽得很好,很难发现。

至于解决方法,可以在一个良好的集成开发环境(IDE)上写代码,或者干脆用程序员专用的文本编辑器,这些都可以显著减少拼写错误。还可以选择特定
的变量名和函数名,一方面容易拼写,另一方面即便写错了也能轻易发现。尽量避免使用很容易拼错的单词,例如“receive”,很容易拼写成
“recieve”。

2.未按规定格式写代码

缩进和格式化,能让我们的代码一目了然、易于理解,有什么错误也能一览无余。而且也方便别人理解和维护。

如果你使用的是不会自动格式化代码的IDE,那么可以考虑使用代码美化软件,如Uncrustify,这个软件允许用户自定义格式要求,然后它会一丝不苟地执行。

3.未按规定模块化编写代码

一个函数对应一个指令的习惯相当好,因为简短所以易于理解和维护。长函数实现的可能路径太多,所以测试起来就特别麻烦。

第一个规范原则:一个函数最多只能占一显示屏的空间。第二个:如果有10个以上的if语句或者循环语句,那么你就可以考虑重写了。

4.过度依赖IDE

毫无疑问,IDE和其他一些工具能让你的代码写得又快又好。在一定范围内它们能提供变量和其他很多东西,给出你想要输入内容的多种选择提示。但是这

种类型的工具也存在着风险——如果你不能保证自己有火眼金睛,那么很容易误选相似的变量名。从本质上说,这类工具替代了人的一部分思维,但实际上这是你自
己的责任。

工具的确是我们的好帮手,例如可以消除拼写错误,以及提高工作效率等,但是如果你自己不仔细的话,同样会有写错代码的问题出现。

5.使用硬编码的密码

很多人倾向于硬编码一个秘密帐户和密码,这样之后就可以自由进入系统。但是这是不对的——没错,这于你而言的确是大大的方便了,但同时这也大大方便了别人去访问你的源代码。

究其原因在于,硬编码的代码比你想象的还要脆弱,这就使得它成为了一个巨大的安全隐患,而且还是一个很不好修复的安全隐患。

6.没有采取良好的加密手段保护数据

敏感数据在互联网上传输时是需要加密的,因为在这个过程中它很有可能被拦截。不要抱怨麻烦,这是最基本的安全要求。

这也意味着以明文形式发送数据是不被认可的,同时也排除了我们使用自己的加密方式和混淆目标的措施。写安全加密系统是很难的——看看wep的情况就知道了——所以我们不妨使用经过验证的标准加密库。

7.过早优化代码

Donald Knuth,一位传奇的程序员,曾经说过,“程序员将太多的时间花在了思考和担忧程序非紧要部分的进度问题上,因为这些举措反而对效率产生了强烈的负面影响,如果还同时要考虑到调试和维护的话,那么影响更甚。”

善于写代码的程序员的确能让代码跑得更快更顺畅,但是后期调试和维护相反则会变难。提供一个好策略:清清楚楚地写好代码之后,再去找真正需要优化的地方以提高性能。

8.没有超前的思想

项目的目标是什么?预计规模有多大?会有多少用户,运行速度得有多快?这些问题乍一看上去好像和我们程序员没啥关系——但是,如果不好好思考这些问题,我们怎么能正确选择开发应用程序的框架,以满足这些要求?

Twitter在这方面就有因为低估未来需求而失败的例子,导致其最终不得不放弃Ruby on Rails,并且重写了很多使用Scala和其他技术的代码,这是因为原先用于架构的Ruby代码,根本跟不上Twitter的快速增长的用户群。

9.以为增加人手就能加快进度

几乎所有的软件项目都会落后于计划。有人会说,人多力量大,落后了那我添加人手不就能跟上进度了吗?听上去挺美的,但事实却是,几乎所有的项目在增加“新鲜血液”之后都发生了“凝血反应”——整体效率不升反降。

10.知错不改,错上加错

接上面第9点,有人会说,既然不能添加人手,那我死命赶进度总可以了吧。我奉劝一句,不要抱这种幻想。如果你远远落后于计划时间,那说明本身你对项目的预估时间就是错的。不要盲目地坚持将错就错,还是早点对项目时间做新的估计吧。

作者:小峰

来源:51CTO

时间: 2024-09-09 00:42:47

10个对开发项目有害的编程习惯的相关文章

C语言项目开发-项目架构和编程命名规范

一个项目的流程: 1.公司市场人员与客户交流,了解客户.引导客户使用公司最优资源并产出一份市场需求文档 2.公司需求人员(BA)与客户交流,了解客户需求并产出一个软件需求文档 3.项目经理.开发小组成员.需求人员(BA)一起开一个需求评审会议,对不合理的地方,    打回给BA,再由BA与客户沟通 4.程序员接到和充分了解软件需求文档后产生软件设计文档(包括概要设计文档和详细设计文档,    涉及到数据库的还需要进行数据库的设计) 5.程序员根据设计文档进行编码.调试.打包发布.如果编写的函数库

系统软件开发项目,会编程的请进

问题描述 各位大虾.小弟最近要申报一个科研项目,关于远程视频监控的系统软件.需要提供一些源代码,可是小弟不懂代码,不知道大虾可否给在下发一些代码呢?只要跟这个相关就行,语言不限啊,不用实现软件,只要代码就好,先感谢了. 解决方案 解决方案二:科研项目?解决方案三:看过一个嵌入式WEB服务器的,思路还是比较清晰,你自己做吧,既然是要申报,学术这个东西还是认真一点的好解决方案四:是公司立项的东西,只有申报立项了才能拨款开发.上面说的嵌入式web服务器我不是很懂,能不能发给我看看呢?我的QQ是1265

《并行计算的编程模型》一1.10 MPI开发心得

1.10 MPI开发心得 与其他的编程方法一样,MPI编程需要了解MPI特性,只有掌握MPI编程方法的优点和缺点,才能编写高效的MPI程序.对MPI最重要的认识是MPI属于一种函数库.MPI操作需要至少调用一个或多个MPI函数,针对特别少量的数据传输,MPI编程方法的效率可能不是最高的.因此,若使用MPI编程,在每次数据通信中需传输尽可能多的数据,从而提高通信效率. MPI支持用户构建自己的软件库.相对于在程序中调用MPI函数,利用MPI在程序中实现自定义接口的方法更好.很多应用程序采用自定义接

iOS动画开发之四——核心动画编程(CoreAnimation)

iOS动画开发之四--核心动画编程(CoreAnimation) 一.引言         前几篇博客详细介绍了有关UIView层的动画使用与相关的效果,然而这些动画是UIKit为我们封装好的核心动画层的方法,通过这些方法,我们可以用的更加简便,当然功能也十分强大,基本能达到我们项目的大多需求.但是如果你想更加自由的通过动画操作视图的属性,你就需要跳过UIKit的封装,使用CoreAnimation核心动画层的方法来实现动画. 二.开始前的准备 1.认识一个的朋友         在开始介绍核心

第一次正式java web开发项目的总结

去年下半年到现在,因为公司人员流动,也有好几个新进的员工分给我来带领,也有刚从学校出来的,在和他们交流的过程中,不由的想起自己刚刚进入这行的一些感想. 记得自己当初写过一篇总结的,我想这些对于刚出校门没什么工作经验的程序员应该会有一些帮助,但是却怎么也无法在csdn博客列表中找到这片文章. 后来无意中发现它竟然跑到了我的回收站中,我已忘记是因为什么原因使他跑到了这里,但是我想恢复的时候又发现有点坑的是,csdn回收站的东西无法恢复,因此只好重新发表了. 以下是当时的总结:   从学校走出来,转眼

J2EE文萃:做好网站开发项目需求的分析

j2ee|项目 一个网站项目的确立是建立在各种各样的需求上面的,这种需求往往来自于客户的实际需求或者是出于公司自身发展的需要,其中客户的实际需求也就是说这种交易性质的需求占了绝大部分.面对对网站开发拥有不同知识层面的客户,项目的负责人对用户需求的理解程度,在很大程度上决定了此类网站开发项目的成败.因此如何更好地的了解.分析.明确用户需求,并且能够准确.清晰以文档的形式表达给参与项目开发的每个成员,保证开发过程按照满足用户需求为目的正确项目开发方向进行,是每个网站开发项目管理者需要面对的问题.就这

讨论基于B/S架构开发项目的原型工具

这里说的原型仅针对基于B/S架构开发的项目. 目前有很多专业制作原型的工具例如axure.mockflow.InfoMaker和一些"非专业"软件:photoshop.Dreamweaver等等,如果你有足够的耐心使用word也可以做原型,当然还有笔.纸.橡皮擦. 我接触过很多原型制作工具,也做了很多所谓的原型,项目不同,公司不同,使用的工具也不一样. 个人认为用哪种工具制作原型, 第1取决于用哪种工具最适合项目人员间的交流与沟通. 第2要看原型制作者是否对此工具最熟悉,能以最快和最准

eclipse开发项目使用tomcat发布项目报错

问题描述 eclipse开发项目使用tomcat发布项目报错 和同学一起做的项目,用的同样的Eclipse,同样的Tomcat到我的电脑上出如下错误Unable to process Jar entry [org/logicalcobwebs/proxool/util/FastArrayList.class] from Jar [jar:file:/F:/MyJob/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/sz

论坛开发项目实战

问题描述 正在做论坛开发项目(C#),关联数据库这一块一直比较迷糊,哪位大神有专业点的资料发到jklove_lj@163.com提前谢谢, 解决方案 解决方案二:楼主傻逼..解决方案三:连怎么访问数据库都迷糊就"实战开发项目"啦.lz你开发的是什么项目,可怜的客户知道么?解决方案四:啊....这个........额......也许......可能......大概......解决方案五:不如LZ去下载一个DZNT的源码看看如何...这论坛应该是中国最牛逼的了而且是asp.net+mssq