今天有人对我现在进行项目的几个方面提出了疑问,认为是几点值得考虑的风险,自己在仔细考虑后觉得确实值得反思:
1、为什么要采用hibernate,采用OO设计取代传统数据库设计?
      觉得这个问题对我而言没什么可值得仔细思考的部分,采用hibernate利大于弊,这点对我而言毫无疑问,一是因为即使不采用hibernate,在代码中仍然要对获取的resultset做转化为对象的步骤,二是hibernate对通用CRUD的良好支持,三是数据库无关性,四是对象关联的支持。
      但以提问的人的观点来看,一是他个人对于hibernate并不熟,认为他无法掌控,这就是风险,二是他认为采用hibernate反而增加了项目的实现难度。
      综合自己的观点和提问人的观点来看,觉得在项目中采用什么样的技术才是合适的技术确实是个值得思考的问题,怎么样从可满足项目的多种技术实现方案中进行选择?
2、项目中采用XP是否合适?
      我采用XP被人置疑的地方竟然是项目成员的交流合作问题...... 这点让我挺震惊的,这点我都不知道到底是我做的不对还是被人误解,至少我认为我现在team的交流绝对比一般重型软件过程的团队交流做的好很多很多,早会、迭代会议、不时的讨论等等,这些交流我觉得应该不会差吧,呵呵,不过被人疑问,我觉得至少就说明自己做的仍然不够好。
      另外竟然还被看成是不做设计直接编码的行为,在这点上我真的是觉得让别人误解了,CRC设计难道不是设计???而且我觉得CRC设计绝对是超越传统的那种做详细设计的方法的。
 
总而言之,我觉得有人提出疑问是好事,只有这样才能真正仔细的去反思自己的很多做法。

另外,说说关于TDD,觉得自己现在才是真正的做TDD,今天在给一个同事讲的时候真正的自己也去领悟TDD的好处,在写一个对象的实现的时候,通常会在实现的过程漏掉一些边缘性的检测或别的问题,更突出的就是在集成的时候才发现问题,今天在实践的时候突然觉得TDD的好处就在于迫使了开发人员在写一个对象的实现之前仔细的考虑那个方法的功能、边缘性的一些东西,这个时候通过编写测试代码就完全可以体现了,然后再去写实现其实就比较简单了,把握针对测试写实现的原则,更不用说对于集成测试的好处了,呵呵,这样才能发挥XP的很多优点,比如简单设计、重构、持续集成等等。