2008-01-31
软件开发的实用主义
关键字: 软件开发的实用主义
本人是实用主义者,所以对软件设计也是采用这种态度。所谓实用主义,最主要的中心思想就是不重过程重结果。
由于本人脑子不是很好使,绕不了几个弯弯,所以在软件设计的过程中都是力求简单直接。
但有一点是很重要的,那就是业务建模一定要认真,非常地认真。本人不会专业的UML,也不用什么Power Design。习惯找张纸开画,或者写在白板上与客户及同事讨论。虽然简陋,但力求真实反映客户需求,最大限度贴近用户业务。多费些时间精力也无所谓,总比最后人家用着难受要好。
至于什么方法、思想,觉得理解得了,用得着的就抓来用;搞不明白,用不着的就敬而远之。比如什么XP,就只用TDD和结对编程。做Java用TDD(层次有点多,不一层层测好了没法做),做PHP或RoR就不用TDD(页面一刷就出来了,写测试完全是浪费)。
还有一点也很重要,软件一定要重构,要反复地重构。一开始我们不可能做得很好,但时间做久了,技术和业务理解深入了,就一定要与时俱进。
由于本人脑子不是很好使,绕不了几个弯弯,所以在软件设计的过程中都是力求简单直接。
但有一点是很重要的,那就是业务建模一定要认真,非常地认真。本人不会专业的UML,也不用什么Power Design。习惯找张纸开画,或者写在白板上与客户及同事讨论。虽然简陋,但力求真实反映客户需求,最大限度贴近用户业务。多费些时间精力也无所谓,总比最后人家用着难受要好。
至于什么方法、思想,觉得理解得了,用得着的就抓来用;搞不明白,用不着的就敬而远之。比如什么XP,就只用TDD和结对编程。做Java用TDD(层次有点多,不一层层测好了没法做),做PHP或RoR就不用TDD(页面一刷就出来了,写测试完全是浪费)。
还有一点也很重要,软件一定要重构,要反复地重构。一开始我们不可能做得很好,但时间做久了,技术和业务理解深入了,就一定要与时俱进。
评论
魔力猫咪
2008-02-02
引用
为图省事没有采用TDD,出错直接看页面提示,最多加几个debug就搞定了。上线前提心吊胆,上线后系统却相当稳定,维护加新功能也没有出问题。
???拜托,那是你对象太简单的原因吧?如果一个对象只有set/get方法(纯读写数据,无任何其他操作)。测试当然没什么用。如果你的对象有很多业务、算法的话,肯定容易出错。
还有,现在稳定不等于没问题。也许是压力不足、也许是有问题的地方没有人用到,目前没发现错不能说没错。无论是先单元测试还是后单元测试。单元测试应该是一定要做的。即使小项目因为太简单没遇到问题,但是如果养成不测试的坏习惯就麻烦了。以后要吃苦头的。
你们是两个人结对吧?我觉得你的项目现在比较稳定一个重要的原因就是结对。结对的很大一个优点就是能比较容易发现低级的拼写错误。其实很多问题都是这些少写、错写、多写一两个字母造成的。只要能排除这些问题,没有复杂业务逻辑、加之Rails简化了很多操作,确实不容易出错。因此,给了你单元测试没用的错觉。
johnnyhg
2008-02-01
软件工程本身是为开发人员服务的,但是为了软件工程而软件工程,就是对软件工程而软件工程,则是对软件工程最大的反叛。
lordhong
2008-01-31
TDD这些是TW们收费的借口。。。测试和代码比例是4:1.。。哈哈
lgx522
2008-01-31
本人最初是在CSDN上开的blog,近两年在JavaEye混得比较多,所以一般是两处发。
什么时候用TDD,个人观点是因人而异。ruby虽然是动态语言,且写法太多,的确是容易写错;但ror的“惯例”太强了,写DB应用的话写来写去就那一套,实际编码中真的很不容易写错。
实际项目中尝试过两人一起编码,Model数量有一百来个。为图省事没有采用TDD,出错直接看页面提示,最多加几个debug就搞定了。上线前提心吊胆,上线后系统却相当稳定,维护加新功能也没有出问题。可见测试在这类中小应用是没有多少价值的。
其实测试很大程度上是由分工所带来的,分工越多,单元测试越重要。否则一是对接不上,二是扯皮不断。
什么时候用TDD,个人观点是因人而异。ruby虽然是动态语言,且写法太多,的确是容易写错;但ror的“惯例”太强了,写DB应用的话写来写去就那一套,实际编码中真的很不容易写错。
实际项目中尝试过两人一起编码,Model数量有一百来个。为图省事没有采用TDD,出错直接看页面提示,最多加几个debug就搞定了。上线前提心吊胆,上线后系统却相当稳定,维护加新功能也没有出问题。可见测试在这类中小应用是没有多少价值的。
其实测试很大程度上是由分工所带来的,分工越多,单元测试越重要。否则一是对接不上,二是扯皮不断。
tedeyang
2008-01-31
http://blog.csdn.net/lgx522/archive/2008/01/31/2074124.aspx
楼主真勤奋,需要维护两处blog————刚才突然在CSDN发现的。
楼主真勤奋,需要维护两处blog————刚才突然在CSDN发现的。
魔力猫咪
2008-01-31
PHP和RoR不用TDD?????
拜托,那才是要命的。RoR之所以能发展起来,单元测试要占很大的分量。要知道动态语言的语法检查太松了。Ruby之类的动态语言没有静态语法检查。很多能够用Java静态编译检查出来的错误在Ruby中是合法语句。没有严格的单元测试,造成的各种BUG能要你的命。Java单元测试虽然也很重要,但是很多时候应用测试也可以撑过去。
还有,单元测试时重构重要的基石,你Java用单元测试重构,Ruby不用。那么你Ruby的重构风险百倍于Java。Java如果接口等地方变化了,会编译不过去。Ruby不执行到那段代码,永远也不知道有问题。
拜托,那才是要命的。RoR之所以能发展起来,单元测试要占很大的分量。要知道动态语言的语法检查太松了。Ruby之类的动态语言没有静态语法检查。很多能够用Java静态编译检查出来的错误在Ruby中是合法语句。没有严格的单元测试,造成的各种BUG能要你的命。Java单元测试虽然也很重要,但是很多时候应用测试也可以撑过去。
还有,单元测试时重构重要的基石,你Java用单元测试重构,Ruby不用。那么你Ruby的重构风险百倍于Java。Java如果接口等地方变化了,会编译不过去。Ruby不执行到那段代码,永远也不知道有问题。
tedeyang
2008-01-31
呵呵,怎么听起来像是敏捷宣言
发表评论
- 浏览: 76153 次

- 详细资料
搜索本博客
最新评论
-
OO和SQL,应该携手共进
世界本来就是一个平衡体, 分析问题也要如此心态
-- by spiritfrog -
OO和SQL,应该携手共进
本来就是如此,各有所长嘛!
-- by hatedance -
Spring性能小测,参其它技 ...
laiseeme 写道hibernate没问题 有问题的是用hibernate的 ...
-- by xellos -
Spring性能小测,参其它技 ...
王者之剑 写道我觉得这个贴子应该成为精华贴, 如果将这类问题老是搞得看不见的话, ...
-- by davidcen -
Spring性能小测,参其它技 ...
jander 写道icewubin 写道williamy 写道 2。上面谁说OR ...
-- by icewubin






评论排行榜