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

软件开发的实用主义

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

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

但有一点是很重要的,那就是业务建模一定要认真,非常地认真。本人不会专业的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幻灯片转换为具有给定分辨率的图像

    敏捷软件开发.pdf

     5A.2.3实用主义和无名的  5A.2.4可预测、计划驱动和其他中心调整  5A.2.5约束理论  5A.2.6精益开发  5A.3新的方法集话题  5A.3.1敏捷项目管理  5A.3.2测试  5A.3.3用户体验设计  5A.3.4规划管控、Burn图和...

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

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

    Scrum敏捷软件开发

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

    实用主义而非意识形态:IBM 对开源软件的热爱-研究论文

    在本文中,我们认为 IBM 对开源软件的接受并非来自新发现的意识形态,而是来自其实用主义的历史。 简而言之,IBM 是幸存者。 在其历史的大部分时间里,它一直主导着 IT 领域,不是因为任何根深蒂固的意识形态,而是...

    软件工程专业本科培养方案.doc

    本专业培养掌握软件工程领域基础理论知识和先进的开发技术,具备软件开发和管理能力,能从事软件系统分析、设计、开发和项目管理,适应社会主义市场经济和信息产业发展需要的复合型、实用型高级软件设计、开发及管理...

    全面软件质量管理.ppt

    本文给出了一套实用主义的“全面软件质量管理”方法。 重要的理念:商业目标决定质量目标。提高软件质量的最终目的是为了赢利,而不是创造完美无缺的产品。因此对于普通商业软件而言,并不是“质量越高越好”,而是...

    基于HAL库的STM32模块库项目

    以实用主义为导向,只会将实际用过的功能进行封装(所以你会看到不同库中导入的芯片文件并不统一),并不会专门编写相关模块库。 项目结构 Demo:示例工程文件夹 Document:文档文件夹,所有模块的介绍说明书存放于...

    DBSqlite20200102.zip

    好用、实用的sqlite编辑工具。 现有的Sqlite工具对使用者要求高,必须记住关键字及语法结构,并且不能执行多条语句,不支持变量,查询时很不方便。...面向用户对象:软件开发、数据库设计、一般数据维护人员、学生

    version-one-dev-utils:版本1开发工具

    我们是位于英国布莱顿的定制软件开发团队。 我们拥有丰富的产品管理,设计和开发经验。 我们的技能包括原型开发,前端开发和移动开发。 我们对简洁美观,极简主义和针对复杂问题的简单UX解决方案感兴趣。 该存储...

    dais集成开发环境

    初学者利用他来进行编译软件生成hex文件学习和软件仿真,修改一些小程序很实用。 dais ,好用的集成开发环境 学习单片机的朋友可以学习使用该dais软件编译与软仿真功能。 学习单片机之初最先遇到的问题就是不知道...

    ios-RTMPC连麦.zip

    7,实用主义,那些什么坑什么优化等概念请搜索相关文章 8,OpenH264软件编码,FFMpeg软件解码,FAAC/FAAD软件编解码,适配不同系统的硬件编解码统统包含 9,支持SRS、Nginx-RTMP等标准RTMP服务;同时支持各大CDN...

    传统产品经理和互联网产品经理的区别

    作为职场中的实用主义者,我认为,我们无需过于纠结于概念之争。在当前的互联网与软件行业中,产品经理的角色确实已经超越了传统书籍中的描述。在我看来,现今业内所称的“产品经理”,九成以上已不再是传统意义上的...

    entrenadorCultural:企业间的社会交流

    在软件开发过程中进行原型验证。 多元文化企业CNH工业公司,由文化和商业团体的客户组成。 从文化角度出发,从文化差异到普遍性之间的关系,从文化到文化的共性。 Deaquíen adelante,实用主义的文化参照物。 文化...

    Android项目源码基于RTMP和RTC混合引擎的在线视频连麦互动直播.zip

    7,实用主义,那些什么坑什么优化等概念请搜索相关文章 8,OpenH264软件编码,FFMpeg软件解码,FAAC/FAAD软件编解码,适配不同系统的硬件编解码统统包含 9,支持SRS、Nginx-RTMP等标准RTMP服务;同时支持各大CDN...

    饼干压缩 v1.0.0.1001.zip

    饼干压缩是一款非常实用的解压缩工具,工具小巧实用,不占用资源,主要功能可帮助您来进行压缩及解压缩操作,软件采用极速双核核心模式,解压缩速度快,是您日常使用电脑的必备工具。 饼干压缩功能: 1、极简主义 ...

    Microsoft Edge Dev Chromium Edge开发版 v89.0.723.0官方Dev版

    为您提供Microsoft Edge Dev Chromium Edge开发版下载,Microsoft Edge Dev(Chromium Edge开发版)是微软采用Chromium内核重新开发的Edge Dev版浏览器,这款全新的开发版...设计注重实用和极简主义;渲染引擎被称为

    代码重构之道

    “重构”这个概念对于当代的开发人员来说已经不陌生,它最早...但是达到这个目标通常很困难,很有可能存在过度设计重构是实用主义满足当前需求设计同时,在版本迭代中不断改进当前的设计,尽量靠近设计模式的理想国度相

    Jeontaeyun:我的个人资料存储库

    嗨,我很热心,也很感动本地服务开发人员 :desktop_computer: [客户端]... :page_with_curl: [灵感]“干净的体系结构”,“ GoF设计模式”,“软件工匠:专业精神,实用主义,自豪感” :label: [等] Git,Git流,源树。

Global site tag (gtag.js) - Google Analytics