如何进行良好的程序设计(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等代码,有时又会忘记了删除,让代码看起来会不太好看,对于单元测试,也不太清楚怎样去写良好的单元测试,这也是后面得去慢慢学习的内容。
对设计,应该是一个精心去雕琢的过程,尽量能够保持在自己能力内的完美,然后这也是日积月累的工作,没有捷径可走,只有多看多学才行。
»博主后一篇:贝叶斯、概率分布与机器学习
posted on 2010-09-12 22:24 LeftNotEasy 阅读(1704) 评论(4) 编辑 收藏
- 如何进行良好的程序设计(1)
- 如何进行良好的程序设计(1)
- 如何进行良好的程序设计(1))
- 如何进行良好的界面设计
- c语言良好的程序设计习惯(1)
- 良好的程序设计习惯
- 如何对BUG质量进行良好的把握
- js良好的程序设计原则
- 程序设计应养成良好的习惯
- c语言良好的程序设计习惯(2)
- c语言良好的程序设计习惯(3)
- c语言良好的程序设计习惯(4)
- c语言良好的程序设计习惯(5)
- c语言良好的程序设计习惯(7)
- 程序设计、分析一点良好的习惯
- 如何保持良好的心态
- 如何保持良好的心态
- 如何维持良好的客户关系
- 国外发中国互联网报告:老人及农村将成关键
- 时间管理——我之窥见
- 纠正国人对Linux的误解和错误认识
- 中国手机败阵苹果原因调查:厂商忙追赶无暇创新
- 使用Oracle显式游标及for循环
- 如何进行良好的程序设计(1)
- 一点细节 关于linux下tcp断开连接时的情况
- 指向指针的指针做函数的参数
- 电脑故障------xp下添加和删除程序打不开,会弹出0x00310030内存不能读。
- Facebook工程发布技术的幕后故事
- Linux下用source insight的另一种方式--Samba
- 【Python】Python使用smtplib发送简单文本邮件
- JAVA学习笔记2
- c++内存管理
评论
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
设计模式只是设计的一小方面,我觉得更重要的是类、函数的功能设计
》》 你说的没错,类和函数的设计 非常非常重要 但是 如何设计类呢? 设计模式给你思路 ,尤其是 设计模式背后的思想 你不觉的设计模式 只是 很多很好的 设计技巧和方法 但他背后的指导思想是什么呢? 设计原则 。。。原则很简单 但如何实现 又是另外一回事情了 回复 引用 查看