`
dr.han
  • 浏览: 46292 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

敏捷开发 需注意的技术点

阅读更多
移除重复的代码

  在项目进行过程中,经常会出现功能类似,甚至完全一样的代码,我们应尽量提取出来作为单一对象的处理逻辑,其他地方直接调用即可

代码异味

首先判断代码的稳定性,如果一些具体的情况或者需求发生改动了,然后我们来看一下我们的代码要满足新的需求是否需要改动,如果需要改动则表明代码是不稳定的,这是个很麻烦的事情,因为有很多种可能性,我们不知道那些需要考虑,那些不需要考虑,有个更简单的办法,就是如果我们已经第三次修改这些代码了,那我们就认定它是不稳定的,但这是一个被动的方法,虽然它很有效

我们有个更好的办法,如果这个代码是不稳定的,那么它往往包含一些痕迹,我们把这种痕迹称为“代码异味”,下面列举了几种典型的代码异味情况

普遍的代码异味现象:
一:代码使用了类别代码(type code)
    大多数情况下,我们通过给一个类创建子类来去掉type code,或者通过类的不同实例的方式解决。
二:类的某些属性很少被使用,一些实例中的属性有时有用有时没有用
三:无法给一个变量取名,因为不同情况它有不同的含义
四:大量的if-else 或者which语句,(它通常和type code同时出现)
为了去掉if-else,我们需要先保证每个条件分支下要写得代码是一样的,我们用继承接口或者抽象类的方式,把if-else里面的方法抽象出来,通过调用不同子类的方法去掉if-else ;或者用类的不同对象来去掉if-else,根据不同的参数构造不同的类的实例对象,这样比写几个实现类要简单的多
五:太多的注释
    我们尽量把变量的命名规范一些,这样就省去注释了
六:一个方法有太多的参数,以及方法太长
七:两个类互相引用
八:类太长
九:在变量命名中使用”and””or”等等

怎样保持代码整洁

遵守单一职责原则The Single Responsibility Principle 认为:每个类都应该只为一个理由而修改,当一个类包含许多其他的功能时,很明显就违背了该原则
在此原则下我们应该尽量的抽取方法和属性,以类型或者接口的方式完成新的功能

慎用继承

继承了一下不合适或者没有用的东西
代理delegation,什么都没有做,只是调用了另外一个方法的返回称为delegation,我们可以用代理来替代继承,这样我们可以只把那些使用的方法设置为public
如果一个父类描述的东西不是所有子类共有的,那这个父类的设计肯定不是一个好的设计
当我们想用一个类去继承另外一个类时,一定要做再三的检查:子类会不会继承一些没有用的属性或者方法,如果有,我们需确定一下它们是不是有继承关系,如果没有则用代理,如果有,将这些功能转移到其他的地方去。

处理不合适的依赖
一般来讲,如果一个类A引用了一个类B,当我们想重用A这个类时还需要把B加进我们的系统,更甚B还引用了C,C还引用了D,但B,C,D在新的系统里面。
怎么判断是“不合适的依赖”
方法1:看看代码里面有没有互相依赖,这种肯定是不合适的依赖
方法2:检查代码是否必须依赖于其他类
方法3:推测一下,它是否会在以后的系统中重用
方法4:要重用的时候就知道了

引用反转原则的表述,抽象不应该依赖于具体,高层的抽象的类不应该依赖于底层的具体的类,当遇到这种问题时,我们应该抽取出一个更抽象的概念。

将数据库访问,UI和域逻辑分离
这三方面代码混在一起,会造成一下问题:
一:代码很复杂
二:代码很难重用
三:代码很难测试
四:一处动处处动
五:与面向对象的概念相违背






分享到:
评论

相关推荐

    敏捷开发知识体系--高清版.pdf

    需要注意的是,敏捷开发不仅仅是一套流程或技术实践,它更是一种文化和思维方式。因此,采用敏捷开发时,企业往往需要培养敏捷思维,而不仅仅是简单地应用一些敏捷工具或技巧。 以上便是关于敏捷开发的知识体系的...

    力软敏捷开发框架资源手册.rar

    总的来说,"力软敏捷开发框架资源手册"是一个全面的指南,它不仅提供了力软框架的技术细节,还强调了开发过程中的效率和协作。通过深入学习和实践手册中的内容,开发者将能够更熟练地运用力软框架,提升项目开发的...

    敏捷开发管理

    华为从IPD到敏捷开发的转变,不仅是一次技术上的革新,更是企业文化、组织结构乃至思维方式的全面升级。通过这一系列的变革措施,华为有效地提升了产品开发的灵活性和效率,更好地应对了市场变化带来的挑战。未来,...

    敏捷开发环境搭建

    敏捷开发环境的搭建是提升开发团队效率的关键步骤,它涵盖了多个工具和技术的集成,包括项目管理、代码构建、质量检查和版本控制等。在本文中,我们将深入探讨如何搭建一个基于SUSE 11 SP2 x64系统的敏捷开发环境,...

    敏捷开发方法、敏捷中的软件架构

    ### 敏捷开发方法与软件架构设计 #### 一、从方法论视角审视架构设计 **方法论(Methodology)**:方法论是指在特定领域内进行工作的整体框架,包括一系列相关的理论、方法和技术。在软件开发领域,方法论通常指的...

    敏捷开发必要技巧12:单元测试

    在IT行业中,敏捷开发是一种广泛采用的软件开发方法论,强调快速响应变化、迭代式开发和团队间的紧密协作。在敏捷开发中,单元测试扮演着至关重要的角色,它确保了代码的质量,增强了软件的可维护性和可靠性。这篇...

    rails敏捷开发,我的成功之路

    - **总结所学**:回顾在构建过程中涉及的主要概念和技术点,加深理解。 ### 知识点五:Depot应用程序开发案例 **标题与描述**:本书通过一个名为Depot的应用程序开发案例,详细介绍了如何使用Rails进行增量式开发...

    小规模团队敏捷开发Scrum

    ### 小规模团队敏捷开发Scrum #### 敏捷开发概述 敏捷开发是一种以人为本、迭代、增量的软件开发方法论,旨在快速响应变化,并通过早期和持续交付可用软件来满足客户需求。Scrum作为敏捷开发的一种实践框架,尤其...

    ruby on rails web敏捷开发第四版(英文)

    ### Ruby on Rails Web 敏捷开发第四版 #### 关于本书的重要信息 《Ruby on Rails Web 敏捷开发第四版》是一本专为希望深入了解 Ruby on Rails 的开发者编写的书籍。该书主要针对 Rails 3 版本进行讲解,因此对于...

    PHP敏捷开发CodeIgniter框架

    ### PHP敏捷开发CodeIgniter框架知识点详解 #### 一、CodeIgniter框架概览 **CodeIgniter**是一款专为PHP网站开发者设计的应用程序开发框架和工具包。它旨在简化开发流程,加速项目的构建速度。该框架提供了丰富的...

    企业数字化转型过程中的敏捷开发实践最新版.pdf

    企业数字化转型是当今众多企业面临的重大挑战,而敏捷开发作为一种灵活高效的软件开发方法,成为...然而,需要注意的是,敏捷开发并非一蹴而就的过程,而是需要逐步实施,不断调整和完善,以适应企业自身的特点和需求。

    02-敏捷开发概述.pptx

    敏捷开发是一种以人为本、迭代、增量的软件开发方法论,它强调快速响应变化,通过短期的工作周期(称为冲刺或迭代)来频繁交付可工作的软件。这一理念源于20世纪90年代末期,由一群软件开发从业者共同提出的《敏捷...

    探析敏捷开发在软件项目进度管理中的应用.pptx

    在软件项目进度管理中,敏捷开发可以帮助项目团队更好地应对需求变化和技术难题,提高软件项目的质量和效率。 应用场景 1. 小型项目:由于小型项目规模较小,需求变化和技术难题出现的概率也相对较低,因此敏捷...

    敏捷开发中用户故事简介

    敏捷开发是一种快速响应变化、以用户为中心的软件开发方法,其核心原则是迭代和增量开发,强调团队协作和持续改进。在敏捷开发中,用户故事是需求管理的重要工具,它帮助开发团队理解用户的需求,确保软件功能真正...

    CodeIgniter:php敏捷开发框架web快速开发详解

    实现发送 Email 的功能中有一些不容易解决的技术问题:比如设置文本自动换行(取消设置的话则可以保持长 URL 地址不被换行或截断)或发送附件。标准的 PHP 实现起来比较复杂,CI 简化了这些工作,它的 Email 类使得...

    敏捷软件开发:原则、模式与实践

    敏捷开发模式涵盖了多种具体实践和技术,其中包括: 1. **Scrum**:一种流行的敏捷框架,通过短周期的冲刺(Sprints)来迭代开发产品,每个冲刺通常为2至4周。 2. **极限编程(XP)**:强调简单设计、持续测试、...

    基于敏捷开发的大型软件自劢化测试架构

    综上所述,基于敏捷开发的大型软件自动化测试架构不仅需要强大的技术支持,还需要良好的团队协作和文化氛围。通过实施上述策略,企业可以显著提高软件开发的效率和质量,更好地适应市场的快速变化。

    (完整word版)软件敏捷模型开发流程图-V4.0.pdf

    根据提供的文件内容,我们可以从中提炼出以下敏捷开发的相关知识点: 1. 产品待办事项(Product Backlog): 产品待办事项是一系列需要完成的工作,按照优先级排列,由产品负责人(Product Owner, PO)维护。所有...

Global site tag (gtag.js) - Google Analytics