如何进行良好的程序设计(1)

来源:互联网 发布:热云数据招聘 编辑:程序博客网 时间:2024/05/19 13:18

如何进行良好的程序设计(1)

 

    关于程序设计,掐指算来也写了快有十年的程序了,之前很长的一段时间都是以算法类的竞赛为主,对于程序结构的设计,总是胡乱写写,能跑通就算ok了。来公司后, 接触了一些大一点的项目的设计,设计的重要性就凸现出来了。

    为了更好的设计(不能说到完美,但是至少不要把自己和用户弄晕),我写点自己的一些感悟(有自己思考的,也有和公司的前辈讨论得到的),不能说本系列是一篇指导性的文章,权当是抛砖引玉,希望能够大家不吝赐教,多多讨论。

    对于程序设计,常常是有下面的一个过程:

    1)给出了需求,对需求进行思考,考虑用某种结构去实现

    2)对于结构的思考觉得可以满足了需求,开始程序设计

    3)设计的过程中发现某些地方有效率问题、可行性问题、或者某些不能满足需求的问题 - 在当前的基础上进行修修补补

    4)设计的过程中用户提出了一些新的需求 - 在当前的基础上进行修修补补

    5)为了调试、测试的方便,在程序中的一些临时代码也忘了清除,使得程序看起来乱七八糟

    6)重复2)3)4)的过程,直到看起来满目苍夷的程序完成需求,交付项目

    7)过了半年一年,用户有了一些新的需求,或者发现了一些bug,当重拾代码时,发现代码已经不忍卒读了

    每次经历这样的一次情况,内心中都有一种煎熬的感觉,觉得程序越写越背离了当初设计的初衷,代码连自己都不想去看,哪里能算优秀的程序呢。有时候觉得很懒,喜欢给自己找一些借口,比如项目做完了的时间可以学习一下其他的东西,看看论文什么的,或者说省一点时间去陪陪家人。其实设计和算法一样,都是非常有价值的东西,就像IPad和笔记本的比较一样,IPad就因为设计的新颖,和各处的精益求精,让全世界的人为之疯狂。

    最近和同事进行讨论,自己也想了想,可以从下面的一些方面来学会如何进行良好的设计:

    想要设计应该先去多看看别人优秀的代码,从代码中体会大师的设计。设计模式只是设计的一小方面,我觉得更重要的是类、函数的功能设计,让这些函数不管从接口上还是从内部的实现上,都是去做一些比较干净的功能。这样不管自己去写,别人去读,或者加入新的函数和类等,都更加方便。

    对于一些书(比如Effective C++等)中间讲的知识不一定要生搬硬套的去使用,而可以从别人的代码中看看大师们是怎样用这些技巧的,比如imp指针这种技巧,我觉得就不适合在普通的接口中使用,这种技巧不同于人的直接思维,在原本简洁的借口后面包装了一个不太漂亮的“影子”。也不利于编码和理解、调试。

    对设计,应该是跨越语言的范围的,对于不同的语言,也同样可以看到很多美好的设计,比如Java中非常多的开源项目就可以有很多可以去参考学习。比如我们目前正在做的分布式机器学习库就可以去参考一下Apache的Mahout,里面对问题的处理方式应该是一致的。对于同一种语言开发出来的程序,可以去看看语言的技巧如何正确的使用。

    对测试,我个人习惯不太好,总喜欢在测试的时候加入一些cerr等代码,有时又会忘记了删除,让代码看起来会不太好看,对于单元测试,也不太清楚怎样去写良好的单元测试,这也是后面得去慢慢学习的内容。

    对设计,应该是一个精心去雕琢的过程,尽量能够保持在自己能力内的完美,然后这也是日积月累的工作,没有捷径可走,只有多看多学才行。

分类: 结构设计
标签: 设计
绿色通道:好文要顶关注我收藏该文与我联系
LeftNotEasy
关注 - 15
粉丝 - 185
+加关注
0
0
(请您对文章做出评价)
«博主前一篇:[zt]数学之美番外篇:平凡而又神奇的贝叶斯方法
»博主后一篇:贝叶斯、概率分布与机器学习

posted on 2010-09-12 22:24 LeftNotEasy 阅读(1704) 评论(4) 编辑 收藏

评论

2282011

#1楼2010-09-12 22:44白途思      

有一次老板让处理一个文本程序,
本来是想用正则表达式提取规范信息,
但是格式变来变去
后来就改成了流处理的方式,处理到哪里输出一下,如果出错,马上看到错误位置和数据源

我就是想说,一开始想用规范的方式处理,可是实际上遇到的问题一点也不规范,用最傻的方式却最有效。
 回复 引用 查看   

#2楼[楼主]2010-09-12 22:58LeftNotEasy      

恩,我也觉得是这样的,设计这个东西是最简单的最有效,前几天听ms的一个研究员做的讲座,一个机器翻译平台的实现,就用的是最基本的算法,因为这样的算法在工业应用中最可靠,一些论文中的高深技术可能往往用起来效果还不太好  回复 引用 查看   

#3楼2010-09-13 08:51finallyliuyu      

对于程序结构的设计,总是胡乱写写,能跑通就算ok了。
++++++++++++++++++++++++++++++++++++
我目前的境界
 回复 引用 查看   

#4楼2011-12-29 10:19wangok      

设计模式只是设计的一小方面,我觉得更重要的是类、函数的功能设计
》》 你说的没错,类和函数的设计 非常非常重要 但是 如何设计类呢? 设计模式给你思路 ,尤其是 设计模式背后的思想 你不觉的设计模式 只是 很多很好的 设计技巧和方法 但他背后的指导思想是什么呢? 设计原则 。。。原则很简单 但如何实现 又是另外一回事情了
 回复 引用 查看   

刷新评论列表刷新页面返回顶部
程序员问答社区,解决您的IT难题
原创粉丝点击