`
realreal2000
  • 浏览: 77815 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

Agile Java 一些感想

阅读更多
最近看了一些关于敏捷的东西,

很认真的学习了Agile Java这本书.

虽然一直都很认真的写测试,但是基本上都是开发驱动测试,为了完成覆盖率而写.

用了两天时间将这本书的例子都跑了一遍之后发现,其实TDD还是真得不错,先构建测试有助于理解我们需要实现什么功能,以及功能实现时可能存在的边界问题.

Agile Java中驱动我是这么看得
1.写一个测试,运行得到失败的报告,Case只需要覆盖一个功能点
2.编写代码,代码只需要保证Case能够正常的通过.
3.运行测试,保证测试通过.
4,重构代码,确保代码没有什么臭味道.
5.修改测试代码,确保测试代码易懂.

重此往复.

坚持TDD的关键,就在于坚持在没有无法通过的测试的时候,就不要增加新的代码.
凡是增加新功能,或者修改功能的时候都必须要有新的无法通过测试用例.

可是无休止的增加测试用例,对于程序员来说是一项灾难性的工作,我们大多时候都难以坚持,我们会认为,我们的代码足够强装,新的测试用例所测试的范围我们以后的代码已经照顾到了.不需要增加这样的测试用例.

至于测试用例有多么的重要和必要,就不多说了,但是经过几年来不断的版本升级,足够强壮的自动测试是软件持续演进必不可少的一环.不管你的代码写的如何臭不可闻,但是至少软件的已有功能不会受到影响.

为了让TDD能够贯彻始终,敏捷团队中特意提出的结对编程这种方式.以这种方式客服一个人的惰性.

我是没有什么真正的结对编程的经验,只是有一些两人一同开发,一人负责测试用例,一人负责代码的经验.即使如此,代码的质量也大大高于一个人开发.

我们团队是以FDD模式在运作,但是在程序员级别上,我们有意推行Strum团队编程,很不幸或者恨幸运被选作Strum master,来带动整个团队的运行.

结对编程,据说在其他项目组中运用重来没有取得过成功,但是我还是想一开始就运用他,而不是仅仅只是用Scrum来管理进度.

我所看到的结对编程的优点:
1.最大的优点就是所有敏捷团队中首要的第一点交流,与更快的反馈.
2.能够更好的贯彻TDD开发.
3.能够更好的避免一个人编程中出现的不仔细的失误.
4.更好的互相成长和学习.
5.更优质的代码.

但是也许结对编程的很多存在问题由于没有实践而无法获得,但是不管如何,总的等一个周期运行结束之后再来总结一下得失,才知道是真好,还是假好.







分享到:
评论
13 楼 kmkim 2009-12-17  
这本书我有买,感觉比较基础。
12 楼 hankesi2000 2009-12-13  
引用


个人感觉:水平只要相差不多,气味相投就可以结对

差距大就导致
水平稍高的人一边讲解一边编程。。
水平稍低的人一脸无辜看着屏幕



结队的要求很高啊,就我所知的公司基本都不能达到这个要求。

不知道哪个公司(业务型的)能在这方面做的很好?
11 楼 Angel_Night 2009-12-12  
达达乐队 写道
结对需要一男一女


怎么说呢。。我和一个很要好的朋友结对编程时常能爆发欢笑,bug也会少,欢乐也驱走了疲劳

(那个朋友和我都是正常男性)


个人感觉:水平只要相差不多,气味相投就可以结对

差距大就导致
水平稍高的人一边讲解一边编程。。
水平稍低的人一脸无辜看着屏幕



黑暗浪子 写道

这个问题已经讨论了老多遍了。得出的结论就是为新人结对还不如不结对。
结对就是要高手与高手。否则写的来的代码质量谁来保证?就和下棋一样,老是把人家下的大败,真的能提高自己水平?新手真的能短时间快速成长?
每次都看见这种白痴言论,还真的发现有些人真的不适合做IT行业


     每次都看到这种喷子言论,还真的发现有些人真的是拿网络来发泄的啊




10 楼 ronghao 2009-12-12  
结对给人的最大感觉就是累,比一个人干活累多了。一天8个小时就真是8个小时的完全投入。
另外一个很深的感触就是在对未知技术进行spike时,结对的效率绝对远远大于2个人,那种遇到问题的挫折感在换为另外一种思路时会开阔很多。
9 楼 黑暗浪子 2009-12-12  
berlou 写道
结对的做法对新人很有用.成熟的技术人员结对简直是浪费时间浪费生命。

这个问题已经讨论了老多遍了。得出的结论就是为新人结对还不如不结对。
结对就是要高手与高手。否则写的来的代码质量谁来保证?就和下棋一样,老是把人家下的大败,真的能提高自己水平?新手真的能短时间快速成长?
每次都看见这种白痴言论,还真的发现有些人真的不适合做IT行业
8 楼 guoapeng 2009-12-11  
敏捷对开发人员的素质要求比较高,起码重构能力要强,对各种模式也要很熟悉。
设计人员要宏观把握需求的,设计不能太僵硬。
很难组织这样的团队 , 很多coder都还停留在面向过程的思想,虽然是用的面向对象的语言,这是障碍。思想不对,沟通很难。
7 楼 realreal2000 2009-12-11  
berlou 写道
结对的做法对新人很有用.成熟的技术人员结对简直是浪费时间浪费生命。


感觉对于新人来说用结对反而不好, 因为没有起到结对的意义, 结对编程主要是体现了敏捷中交流与反馈的作用.

让更多的人理解同一业务和代码.

其次就是避免一个人产生惰性和大意出现的问题
6 楼 daquan198163 2009-12-11  
berlou 写道
结对的做法对新人很有用.成熟的技术人员结对简直是浪费时间浪费生命

这是为什么呢?
成熟的技术人员不需要交流、讨论?
5 楼 berlou 2009-12-11  
结对的做法对新人很有用.成熟的技术人员结对简直是浪费时间浪费生命。
4 楼 daquan198163 2009-12-10  
结对需要格外注意个人卫生、口气、健康……
3 楼 kekeemx 2009-12-10  
好吧.
我曾经结对编程..跟某位女同事..的确比现在有趣多了.起码不像现在这样累,这样枯燥
2 楼 realreal2000 2009-12-10  
太好了我也是这么想的,哈哈,正好自己带队,徇私一下.:)
1 楼 达达乐队 2009-12-10  
结对需要一男一女

相关推荐

    Agile Java Crafting Code with Test-Driven Development

    Agile Java Crafting Code with Test-Driven Development英文版,包含pdf和chm格式,pdf格式的目录缩进和超连接有问题,所以附上了改造过的chm文件,以便有心人可以修改目录。

    agile java 课程源码

    agile java 每一章 课程 的 源码;

    Agile Java 中文版

    《Agile Java 中文版》是一本专门为Java初学者和希望深入敏捷开发实践者准备的优秀书籍。本书全面覆盖了Java编程语言的基础知识,并结合敏捷开发的理念,为读者提供了实战性的学习路径。以下是对该书内容的详细解读...

    Agile Java Example Code

    【标题】"Agile Java Example Code" 涵盖了敏捷开发方法在Java编程中的实践应用,这是一系列示例代码,旨在展示如何在实际项目中采用敏捷原则和技巧。敏捷开发是一种以人为本、迭代和增量的软件开发方法论,强调快速...

    《Agile Java》中文版

    《Agile Java》是一本专为初学者设计的Java编程教程,中文版的推出使得国内的编程爱好者能够更方便地学习这一全球广泛使用的编程语言。这本书深入浅出地讲解了Java语言的基础知识,旨在帮助读者快速掌握编程技能,并...

    Agile Java 高清中文版

    Agile Java 高清中文版 这本书一大特点是以单元测试和TDD来贯穿全书的,在教你Java各种重要的基础知识的过程中,潜移默化的影响你的编程思维走向敏捷,走向TDD。这本书成书,以JDK5.0的语法为基础讲解,要学习JDK...

    agile Java课后习题代码

    【描述】"agile Java课后习题代码"暗示了这是一个教学情境,可能是学生在学习完敏捷开发与Java编程相关课程后,完成的练习项目或代码示例。这些代码可能包含了对敏捷开发原则的实践,例如短迭代周期、持续集成、用户...

    Agile Java 高清中文版.rar

    《Agile Java 高清中文版》是一本深入讲解敏捷开发和Java编程实践的重要书籍,旨在帮助读者掌握如何在敏捷环境中高效地运用Java技术。这本书的高清中文版为中文读者提供了方便,使得学习过程更为直观易懂。 1. **...

    agileJava 程序代码

    首先,我们要理解"AGILE"(敏捷)在软件开发中的含义。敏捷开发是一种以人为本、迭代、增量的开发方法,强调快速响应变化,通过持续交付有价值的软件来满足客户需求。它倡导灵活的规划、迭代的工作节奏以及团队间的...

    agile java(CHM)

    《Agile Java》是一本专为Java开发者设计的书籍,主要关注的是敏捷开发方法和测试驱动开发(TDD)在Java编程中的应用。这本书的核心理念是通过TDD来提高代码质量,推动敏捷开发流程,帮助开发者编写更加灵活、可维护且...

    agile java 课本及课后代码

    《敏捷Java》可能会介绍一些常见的设计模式,如工厂模式、单例模式、观察者模式等,这些模式在敏捷开发中起着关键作用。 5. **测试驱动开发**(TDD):TDD是一种编程实践,开发者先写测试用例,然后编写足够的代码...

    ( 2 agile java.pdf

    本书《Agile Java: Crafting Code with Test-Driven Development》不仅深入浅出地介绍了Java语言的基础知识,还特别强调了敏捷开发理念与测试驱动开发的实际应用。通过阅读本书,读者不仅可以掌握Java编程的核心技能...

    Agile Java 习题3,4--类方法和类变量

    本话题将深入探讨Agile Java中的类方法和类变量,这些是面向对象编程的基础概念,对于理解和编写高质量的Java代码至关重要。 类方法和类变量是Java类的核心组成部分。在Java中,类是创建对象的蓝图,它定义了对象的...

    Agile Java Development with Spring, Hibernate and Eclipse-code

    书中的代码示例涵盖了Java开发的重要方面,结合了Agile开发理念、Spring框架、Hibernate持久化库以及Eclipse集成开发环境的实用技巧。 Agile开发是一种以人为核心、迭代、逐步交付的软件开发方法论,强调快速响应...

    AgileJava教程课本代码

    《AgileJava教程课本代码》是一份非常宝贵的资源,它包含了《AgileJava》一书中的所有源代码。这本书在Java编程领域具有很高的知名度,是许多开发者学习和提升敏捷开发技能的重要参考。AgileJava教程强调了敏捷开发...

    Agile Java Development with Spring, Hibernte and Eclipse

    除了技术和工具的应用外,《敏捷Java开发》这本书还强调了敏捷开发的方法论,包括**Extreme Programming (XP)**、**Agile Model Driven Development (AMDD)**和重构(Refactoring)等实践。 - **Extreme ...

Global site tag (gtag.js) - Google Analytics