为你插上遨翔的翅膀,与您共同成长...
  •  假如你是一名Java开发者,正在开发和维护包含2000个类并使用了很多框架的应用程序。你要如何理解这些代码呢?在典型的Java企业项目小组中,大部分能够帮你的高级工程师看起来都很忙,文档也很少。你需要尽快交付成果,并向项目组证明自己的能力。你会如何处理这种状况呢?这篇文章为开始开发新项目的Java开发者提供了一些建议。

    1. 不要试图一下子搞懂整个项目 

    仔细考虑一下,为什么你会想要先理解项目代码呢?大部分情况是有人要求你修复一个bug,或者增强系统已有功能。你要做的第一件事情不是理解整个项目的架构。当对项目进行维护时,这样做(理解整个项目架构)可能会对你造成巨大的压力。 

    即便是有10年编程经验的Java开发者,也无法理解项目的核心工作机制,尽管他们可能已经在这个项目工作超过一年(假设他们并非最初的开发人员)。比如,对于认证机制或事务管理机制还是缺乏确切的认识。 

    他们是怎么做的呢?他们对于自己负责的部分非常了解,并且能够交付价值给小组。每天的交付价值远比了解一些以后还不确定有没有的东西重要的多。 

    2. 关注于尽快交付价值 

    那我是要打消你对于理解项目架构的热情吗?完全不是。我只是要求你尽早地交付价值,一旦你开始一个项目,搭建了开发环境,你就不应该花一两周时间才交付内容,无论它的规模大小如何。假如你是一位有经验的程序员,却两周都没有任何交付,你的经理怎么会知道你是真的在工作,还是在看新闻呢?。 

    所以交付能够将事情变得简单。不要认为在做有价值的交付前,你必须理解整个项目。这是完全错误的。加一段javascript的验证代码对业务就很有价值,经理能够通过你的交付对你更加信任。这样能够向上级领导证明你的贡献以及员工价值。

    日复一日,在不断修复bug及增强功能之后,你就能够慢慢开始理解项目架构。不要低估对系统方方面面理解时需要花费的时间。花34天理解认证机制,23天理解事务管理。这些都是依靠之前的相似项目的经历,但关键还是要花时间才能透彻的理解。要在日常工作中挤出时间,不要向经理要求特定的时间来做这些。 

    找找项目是否有一些有效维护的单元测试用例。有效的单元测试用例是理解大型项目代码很好的途径。单元测试能够帮助你理解代码片段,包括一个单元的外部接口(单元如何被调用以及返回内容)及其内部实现(调试单元测试比调试整个实际用例简单许多)。 

    你如果能够很好的理解一些内容,那么就写些笔记,或者画些类图、时序图、数据模型图等,以便你或日后其他的开发者可以进行维护。 

    3. 维护大型项目所必须的技能 

    你能从事当前的工作,必然已经具有良好的java技术。我们来谈谈能够让你在新项目中良好表现的其他技能。大部分时间里,你在项目中的任务是修复bug和增强功能。 

    有两项很重要的技能能够在你维护大型项目代码起到帮助。 

    3.1 能够迅速发现需要的类

    在任何维护活动中,无论是修复bug或增强功能,第一件事情就是识别出当前修复或增强的用例中调用的类。当你定位到需要修复或增强的类/方法,就已经完工了一半。 

    3.2 能够分析变更的影响 

    当你在完成必要的修改或增强工作后,最重要的就是要确认你的修改没有破坏代码的其他部分。你要用你的java技术及对其他框架的理解找出变更可能影响的部分。下面两个简单的例子详细描述了最后提及的情况: 

    当类Aequals()方法变更后,调用保存A实例的Listcontains()方法时就会受到影响。若Java知识不够,就很难考虑到这样的影响。

    web项目中,我们假设“user id”保存在session中。新加入的程序员可能在“user id”中加入一些信息来修复bug,但是却不知道那会影响到 与“user id”关联的用例。

    因此,既要深入了解Java语言,又要深入了解你在应用中使用的框架,这样才能分析出一个改变的影响。

    当你提高了如上两个技能,尽管你对项目不是非常了解,但大部分的维护任务会变得简单很多。如果你想要修复一个bug,就会定位并修复这个bug,并且保证变更不会破坏项目的其他部分。如果你想要增强或加入特性,基本上你只需要模仿现有的特性,使用类似的设计。 

    在一个在线银行项目中,为什么“查看账户摘要”和“查看交易历史”的设计要有巨大的差别呢?如果你理解了“查看账户摘要”的设计,完全可以模仿开发出“查看交易历史”的功能。 

    就修复bug和增强来说,你不必完全理解所有2000个类的工作内容和代码驱动系统运行的原理。只要有上面的技能,你就能很快定位需要修改的代码,使用良好的java和框架技能修复,保证变更不会破坏项目的其他部分,然后交付,尽管你可能只知道一小部分项目的设计。

  • 前一条:JAVA最重要的优势是哪些?
    后一条:程序员究竟该如何提高效率

24小时热线:028-87777180,13684087372
地址:成都锦江区百日红西路212号8楼。
关于川软 | 川软课程 | 常见问题 | 在线报名 | 联系我们 | 回到顶部 2002-2023   川软教育版权所有   蜀ICP备13021846号-1

川公网安备 51010502010656号