`
悲剧了
  • 浏览: 144531 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

拆分过程,提取方法再抽象

 
阅读更多
闲言碎语不要讲,直接写
比如A B两张表,字段不一样,存储的结果一样,但是另一张表有些特殊处理,比如A表为空,B表则存为特殊默认值,A表的时间,在B表示特殊字符串


分析
首先想到的应该是适配器方式--
手机充电需要5v电压,但是现在数据是220v,但现在不是调用的转换,是需要数据转换,把A表数据全部同步到B表,不是接口的问题是数据格式不匹配的问题.

那么转换方式是重点了,为了达到重用性,把相关过程拆分出来,形成策略.统一的处理方式在顶层封装,模板方式必选

那么转换这两张表,直接写就ok,里面包含了
1.从A表取数据
2.把A表数据数据进行特殊处理
3.在插入B表中
如果需求发生变化,比如默认值现在要重新修改,比如一些特殊的类型要进行处理,B表字段名称改变怎么样,换个人来改怎么样,时间流逝再改怎么样.
打开这个方法改就可以了,但是他要读懂你的过程,甚至他觉得不爽,直接重新写,反正也不难嘛.

如果拆分抽取在抽象,会是怎么样呢?
一:这个大过程,被拆分成了四个方法
1.获取A表数据集
2.A表与B表字段对应处理,返回对应结果集
3.A表数据特殊处理(在额外写一个map,封装默认值处理)
4.一个总方法负责组合前三个方法
二:写一个抽象类
上面的前三个方法抽象,第四个方法实现.负责总的调用,好吧,就叫模板方法模式吧,其实这个不重要

代码反应设计,充当文档,反应了详细的流程是可以的,这就是我感觉的敏捷之一,首先必须代码容易读懂,经得起变化,这个变化是人员流失,需求改变

分享到:
评论

相关推荐

    数据结构-抽象数据类型.pdf

    抽象的过程是提取事物共性的本质,它强调的是数据的逻辑特性而非其具体的实现细节。例如,在游戏开发引擎Unity中,Transform类用于表示游戏对象的位置,它包含x、y、z三个浮点数坐标。虽然在实际的Unity中,...

    07接口方法重构.zip

    4. **提取类层次结构**:有时,多个类实现了相同接口,但它们的行为有所不同,这时可以考虑使用抽象类来封装共享的行为,然后让这些类继承抽象类,只实现各自特有的方法。抽象类可以看作是接口的一个具体实现,提供...

    面向对象.pdf

    与面向过程编程不同,OOP关注的是将任务拆分成独立的对象,这些对象可以相互协作来完成复杂的任务,而不是简单地按照步骤执行。 面向过程编程着重于顺序执行的步骤,程序的逻辑主要由一系列函数调用组成。它强调...

    基于Python的函数式并行编程语言特征提取研究.zip

    特征提取是机器学习过程中的关键步骤,它涉及到从原始数据中挑选出有助于模型训练的最有代表性的特征。在Python中,可以使用`pandas`库进行数据预处理,`scikit-learn`库则提供了丰富的特征选择和转换方法。对于大...

    代码的坏味道 重构方式对应表

    2. **过长方法**:可以使用提取方法来拆分长方法,提高代码可读性。 3. **复杂的条件逻辑**:考虑使用策略模式、引入断言、以多态取代条件式等方法来简化条件表达。 4. **过长参数列表**:通过引入参数对象、保持...

    java 重构改善既有代码的设计.pdf

    - 提取方法(Extract Method):将长方法拆分成更小的方法。 - 提取类(Extract Class):如果一个类做了太多的事情,可以将其拆分为多个更专注的类。 - 内联方法(Inline Method)或内联变量(Inline Variable):...

    软件开发方法学(包括设计模式讲解)

    例如,工厂模式提供了一种创建对象的抽象方式,使得具体创建过程与使用分离;单例模式确保一个类只有一个实例;观察者模式允许对象间建立一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会...

    C#代码重构31法

    17. **提取工厂类**:使用工厂类来创建对象,使对象的创建过程与使用对象的代码解耦。 18. **提取子类**:将具有特殊行为的类分解为子类,实现多态性。 19. **合并继承**:减少继承层次,避免过多的类层次,提高...

    设计模式-2020-11-25-巫政霖1

    如果一个接口在实现时,部分方法由于冗余被客户端空实现,则应该将接口拆分,让实现类只需依赖 zelf 需要的接口方法。 构造型模式: 工厂模式:隐藏构造细节通过new的方式构建对象,相当于调用者多知道了一个类,...

    java代码重构

    1. **提取方法**(Extract Method):当一个长方法包含多个步骤时,可以将其拆分为多个小方法,每个方法执行单一职责。这提高了代码的可读性和可重用性。 2. **内联方法**(Inline Method):如果一个方法只在一个...

    2022年计算机与软件学-总体设计(共56张PPT).pptx

    抽象是提取关键特性,忽略非本质的细节,抽象在软件工程的每个阶段都起着重要作用,从可行性研究到需求分析,再到总体设计和详细设计,每次抽象都是对软件解法层次的一次精炼。逐步求精是在设计过程中逐渐揭示低层...

    英语专业学习方法.docx

    在背诵过程中,可以采用多次整理笔记、分类标记的方法,增加记忆效果。 6. **系统学习语法** 初中阶段应侧重词法学习,如名词、介词、冠词、代词和形容词等。课堂学习之外,可以额外选用一本系统的语法书作为补充...

    VulExplainer A Transformer-Based Hierarchical Distillation

    - **分层提取**:VulExplainer的分层蒸馏过程包括将源代码分组为具有相同CWE抽象类型的组、训练多个TextCNN教师以及从这些教师中分层提取基于Transformer的学生模型。 **6. 实验评估** - **评估方法**:...

    重构重构重构

    - IDE集成:许多现代IDE如Eclipse、IntelliJ IDEA和Visual Studio等都内置了重构支持,提供诸如提取方法、内联变量、重命名等操作。 - 静态代码分析工具:例如SonarQube,可帮助识别代码中的坏味道,并提供重构...

    软件工程电子教案名师优质课赛课一等奖市公开课获奖课件.pptx

    抽象是从具体问题中提取共性,形成高层次的概念,而细化则是将大问题逐步分解为更小的部分。数据抽象关注对象的属性,代码抽象关注对象的行为,通过类声明来实现。抽象有助于简化问题,使其更易于管理和解决。 在...

    重构改善既有代码的设计

    1. **提取方法**:当一个方法变得过长或者包含了多个职责时,可以将其拆分为多个小方法,每个方法只做一件事,使得代码更易读且可重用。 2. **提炼变量**:如果变量名不明确或者表示的意义过于复杂,可以将其改名为...

    eclipse 重构

    2. **提取方法**:当一个长方法包含多个职责时,可以将其拆分为更小、更专注的方法,提高代码可读性。 3. **内联**:将使用频繁的局部变量或方法直接替换为其实现,减少调用层次。 4. **移动和复制**:移动类或...

Global site tag (gtag.js) - Google Analytics