黑马程序员技术交流社区

标题: 软件开发的10个错误实践 [打印本页]

作者: 黑妞~    时间: 2014-7-11 15:21
标题: 软件开发的10个错误实践

帕雷托法则说80%的成果取决于20%的原因。这也被称为28原则,人类几乎每一个领域的尝试都和它有关。

在软件开发领域,这个原则可以总结为大多数问题都是由少数的糟糕的编码实践导致的。消除这些问题,你的工作会变得更轻松,效率也会得到提升 .


令人惊讶的是,这是最常见的,由于它和你的编码水平高低没有关系,因此很让人抓狂。变量名或者函数名的一个拼写错误就会给你的代码造成严重的破坏。更严重的是,它们通常不易察觉。


那怎么解决?在一个好的IDE或者程序员专用的文本编辑中工作可以显著地减少拼写错误的问题。还可以做的一件事情是:尽量选择容易拼写的变量或函数名,这样当写错的时候就很容易能发现了。避免使用类似receive这样的单词,因为它很容易写成recieve。



将代码进行缩进或者别的格式化可以使得它易于理解,因此也方便定位错误。同时由于代码的风格一致,其它人维护你的代码会变得更简单。


如果你用的IDE没有自动进行代码缩进,可以考虑使用一个类似Uncrustify这样的代码美化器,它能根据你配置的规则进行格式化。


一个好的编码实践就是实现的函数做且只做一件事情。这使得函数更短因此也更易于阅读及维护。长函数会有许多可能的路径,这使得它们很难进行测试。

一条好的经验是:一个函数应该占用不超过一屏幕的空间。还有一点是,如果它有超过10个if语句或者循环语句,那就说明它太复杂了,应该得重写。


IDE以及其它提供代码补全的工具对于提高效率非常有效。它们会根据作用域以及你的输入来建议变量名或者其它东西。不过这种类型的工具有一个危险——你会因为某个选项看起来像是你所要的而选择了它,却没有确保这的确是你所想要的东西。事实上,工具只是替你去思考了,但你得自己去确保这个东西是正确的。

你可能会硬编码一个安全帐号及密码,这样后面你可以登录到系统里。你也知道不应该这么做——是的,这的确很方便,但对于能访问到源代码的人来说也同样很方便。


真正的问题在于硬编码的密码最终会被比你预料中更多的人所获取到。这是一个非常巨大的安全隐患,更别提修复起来有多麻烦了。


敏感数据需要在网络传输的过程中进行加密,只有这么做才不容易被截获。这不是什么好的点子,而是管制要求,尽管它还算不上是规章制度。


这意味着你坚决不能直接发送数据。同时也不要自己去加密或者混淆。自己写安全加密系统非常困难——看一下WEP发生了什么就明白了,因此最好用一个业界证明过的标准加密库,并正确地使用它。


传奇程序员Donald Knuth曾经说过,“程序员浪费了大量的时间在考虑或者担心他们程序的非关键部位的执行效率,而这些努力对后续调试和维护的效率起到了很大的负面作用。”


在代码上费尽心思却只能让它运行得稍微快一点而已,但却使得它更难调试及维护了。更好的一个策略是:清晰地写好你的代码,然后如果有什么地方的确需要优化的时候才去提升它的性能。


你的项目是做什么的,它需要扩展到多大的规模,有多少用户会使用它,它的运行速度需要有多快?这些问题可能并没有答案——不过如果你没有提前预估的话,那你如何能选择出一个合适的应用开发的框架,能让你的程序满足这些要求?


如果你低估了未来的需求会遭遇什么问题,这个事情上Twitter是一个很好的案例。Twitter放弃了Ruby On Rails并用Scala及其它技术重写了大部分的代码,这是由于最初架构所使用的Ruby代码,它的扩展能力无法跟上Twitter快速增长的用户基数。


许多软件项目都赶不上进度。增派人手到项目中来让进度赶上正轨听起来是个不错的主意,但这是错误的。事实上,增加新人到项目中来通常都会延误整个的开发进度。


同时很重要的是,不要想像不需要给项目加人也能赶上原先的进度。如果你已经落后于时间表了,这是由于你预估的时间是错误的。这也意味着你得重新评估下整个项目的周期,而不是盲目地坚持已经被证明是错误的评估时间。



作者: FrancisTan    时间: 2014-7-12 00:15
不明觉历!沙发归我了,嘿嘿!
作者: 薛马顺    时间: 2014-7-12 08:26
错儿改之,才能进步!!
作者: zxdanshui    时间: 2014-7-12 22:36
学习了      
作者: sports、    时间: 2014-7-13 01:19
不觉名利...
作者: 一世独殇    时间: 2014-7-13 20:19
顶一个!
作者: ⋛⋌⋚JEEP    时间: 2014-7-13 23:00
看看:) 支持一下
作者: 张斌    时间: 2014-7-14 08:57
学习学习看卡
作者: XCodeRush    时间: 2014-7-15 07:22
知错就该,但如果不自知呢
作者: 且行且惜    时间: 2014-7-16 00:23
有错误才是正常的额,没有错误才是不正常的,加油啦!!!
作者: 薛马顺    时间: 2014-7-17 08:22
en,领教了,以后要注意了!
作者: 刘孝泽    时间: 2014-7-26 15:22
路还有很长 真正能静下心来学习是一件很难的事情 我不知到我为什么静不下心来  该好好想想了
作者: 计算机小菜鸟    时间: 2014-11-9 23:21
受教了!
作者: sunspot    时间: 2014-12-26 01:42
长见识了
作者: chaijie    时间: 2014-12-26 22:57
这个太重要   
作者: qiezhiyi    时间: 2015-1-29 14:31
路过啦!
作者: 张宁111    时间: 2015-1-29 21:28
哦累累。哦拉拉 。
作者: 骑士向前    时间: 2015-2-26 17:29
fighting!fighting!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2