`
lgx522
  • 浏览: 125829 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

软件开发的实用主义

阅读更多
本人是实用主义者,所以对软件设计也是采用这种态度。所谓实用主义,最主要的中心思想就是不重过程重结果。

由于本人脑子不是很好使,绕不了几个弯弯,所以在软件设计的过程中都是力求简单直接。

但有一点是很重要的,那就是业务建模一定要认真,非常地认真。本人不会专业的UML,也不用什么Power Design。习惯找张纸开画,或者写在白板上与客户及同事讨论。虽然简陋,但力求真实反映客户需求,最大限度贴近用户业务。多费些时间精力也无所谓,总比最后人家用着难受要好。

至于什么方法、思想,觉得理解得了,用得着的就抓来用;搞不明白,用不着的就敬而远之。比如什么XP,就只用TDD和结对编程。做Java用TDD(层次有点多,不一层层测好了没法做),做PHP或RoR就不用TDD(页面一刷就出来了,写测试完全是浪费)。

还有一点也很重要,软件一定要重构,要反复地重构。一开始我们不可能做得很好,但时间做久了,技术和业务理解深入了,就一定要与时俱进。
4
2
分享到:
评论
7 楼 魔力猫咪 2008-02-02  
引用
为图省事没有采用TDD,出错直接看页面提示,最多加几个debug就搞定了。上线前提心吊胆,上线后系统却相当稳定,维护加新功能也没有出问题。


???拜托,那是你对象太简单的原因吧?如果一个对象只有set/get方法(纯读写数据,无任何其他操作)。测试当然没什么用。如果你的对象有很多业务、算法的话,肯定容易出错。
还有,现在稳定不等于没问题。也许是压力不足、也许是有问题的地方没有人用到,目前没发现错不能说没错。无论是先单元测试还是后单元测试。单元测试应该是一定要做的。即使小项目因为太简单没遇到问题,但是如果养成不测试的坏习惯就麻烦了。以后要吃苦头的。

你们是两个人结对吧?我觉得你的项目现在比较稳定一个重要的原因就是结对。结对的很大一个优点就是能比较容易发现低级的拼写错误。其实很多问题都是这些少写、错写、多写一两个字母造成的。只要能排除这些问题,没有复杂业务逻辑、加之Rails简化了很多操作,确实不容易出错。因此,给了你单元测试没用的错觉。
6 楼 johnnyhg 2008-02-01  
软件工程本身是为开发人员服务的,但是为了软件工程而软件工程,就是对软件工程而软件工程,则是对软件工程最大的反叛。
5 楼 lordhong 2008-01-31  
  实用最重要。。。我和楼主差不多。。。
TDD这些是TW们收费的借口。。。测试和代码比例是4:1.。。哈哈
4 楼 lgx522 2008-01-31  
本人最初是在CSDN上开的blog,近两年在JavaEye混得比较多,所以一般是两处发。

什么时候用TDD,个人观点是因人而异。ruby虽然是动态语言,且写法太多,的确是容易写错;但ror的“惯例”太强了,写DB应用的话写来写去就那一套,实际编码中真的很不容易写错。

实际项目中尝试过两人一起编码,Model数量有一百来个。为图省事没有采用TDD,出错直接看页面提示,最多加几个debug就搞定了。上线前提心吊胆,上线后系统却相当稳定,维护加新功能也没有出问题。可见测试在这类中小应用是没有多少价值的。

其实测试很大程度上是由分工所带来的,分工越多,单元测试越重要。否则一是对接不上,二是扯皮不断。
3 楼 tedeyang 2008-01-31  
http://blog.csdn.net/lgx522/archive/2008/01/31/2074124.aspx
楼主真勤奋,需要维护两处blog————刚才突然在CSDN发现的。

2 楼 魔力猫咪 2008-01-31  
PHP和RoR不用TDD?????
拜托,那才是要命的。RoR之所以能发展起来,单元测试要占很大的分量。要知道动态语言的语法检查太松了。Ruby之类的动态语言没有静态语法检查。很多能够用Java静态编译检查出来的错误在Ruby中是合法语句。没有严格的单元测试,造成的各种BUG能要你的命。Java单元测试虽然也很重要,但是很多时候应用测试也可以撑过去。
还有,单元测试时重构重要的基石,你Java用单元测试重构,Ruby不用。那么你Ruby的重构风险百倍于Java。Java如果接口等地方变化了,会编译不过去。Ruby不执行到那段代码,永远也不知道有问题。
1 楼 tedeyang 2008-01-31  
呵呵,怎么听起来像是敏捷宣言

相关推荐

    matlab开发-实用主义PowerPointImageConverterWindows

    在本项目"matlab开发-实用主义PowerPointImageConverterWindows"中,开发者创建了一个Matlab函数,该函数允许用户将PowerPoint演示文稿中的幻灯片转换为指定分辨率的图像文件,这在需要处理大量PPT内容或者进行自动...

    恶魔和梦魇的私语------- 关于软件开发的务虚主义对话(3).docx

    【标题】:“恶魔和梦魇的私语------- 关于软件开发的务虚主义对话(3)”探讨了软件开发中的设计模式、泛型编程与面向对象的融合,以及编译器处理的角色。 【主要内容分析】: 在这次对话中,恶魔和梦魇深入探讨了...

    支撑软件开发人员的三种精神

    文章内容如下:我注意到有三种精神指引着软件开发人员的灵魂——伟大的艺术家精神,可信赖的员工精神和自私的实用主义精神。伟大的艺术家精神如果你听到一种声音说“你不能这样画”,然后,你继续这样画,这种反对的...

    自动更新实例程序,实用主义

    在IT行业中,自动更新机制是软件开发不可或缺的一部分,它确保用户始终能够运行最新、最安全的软件版本。本文将深入探讨使用C#编程语言实现自动更新的实例,以实用主义为指导,帮助开发者构建高效、易用的自动更新...

    Scrum敏捷软件开发

    这本书为实用主义者而生。写给那些已经开始尝试S且可能已经遇到一些问题的人,以及那些虽然没有开始但已经按捺不住跃跃欲试的人。这些人需要的已经不是关于如何画一张燃尽图,或者是在每日站会上如何经出三个问题的...

    软件定制开发流程.pdf

    阳光风云的项目管理强调实用主义,结合RUP(统一过程)和XP(极限编程)的优点,灵活应对不同项目需求,确保项目高效、有序进行。 总结,软件定制开发的成功在于深度理解客户需求,科学规划项目流程,严谨设计系统...

    实用资料全面软件质量管理PPT.ppt

    总结来说,全面软件质量管理是一个系统的、实用主义的方法,它强调将商业目标与质量目标相结合,通过识别和优化关键质量属性,以及在各个阶段实施有效的质量管理活动,以提高软件产品的质量和用户满意度。...

    软件工程三部曲

    《Pragmatic Programmer》是一本关于实用主义程序员的书,强调了程序员在日常工作中应当培养的实践技巧和习惯,以更好地应对技术挑战。 《Pragmatic Version Control: Using CVS》介绍了一种版本控制系统CVS的使用...

    《笑话播报》[文].pdf

    3. **决策过程**:彩票中奖者的回答反映出在财务决策中的实用主义,优先处理房贷,然后逐步规划剩余资金。在软件开发中,这可以类比为项目资金的分配,优先处理关键任务,然后逐步推进其他功能。 4. **危机应对**:...

    非程序员2001-23

    - **技术的实用主义**:强调技术的应用价值,即技术必须能够解决实际问题,而不仅仅是停留在理论层面。 - **技术落地困难**:即使技术理论成熟,将其成功应用到具体项目中也往往需要克服诸多障碍,包括团队技能、...

    The_Pragmatic_Programmer_From_Journeyman_To_Master

    一、实用主义哲学:软件开发的灵魂 《实用程序员:从工匠到大师》一书的核心在于其强调的实用主义哲学,它教导我们如何在软件开发过程中做出明智的选择,以实现既高效又高质量的目标。书中提到“软件熵”这一概念,...

    一款非常简单音乐播放器软件。

    这款音乐播放器软件是作者使用C#编程语言自行开发的,虽然它的功能相较于市面上的商业音乐播放器可能并不算强大,但其小巧的体积和简洁的设计使得它在易用性上有着自己的优势。C#是一种面向对象的、现代的编程语言,...

    软件工程思想电子书下载

    - **实用主义**:软件工程的理念、方法、策略和规范都非常实用,易于理解和应用。 3. **软件工程的应用** - **预防性应用**:软件工程方法不应仅在出现问题后才考虑应用,而应在开发过程中提前预防潜在的问题。 ...

Global site tag (gtag.js) - Google Analytics