Advertisement

对现有代码进行重构和改进。

  •  5星
  •     浏览量: 0
  •     大小:None
  •      文件类型:None


简介:
第1章 重构,第一个案例11.1 起点11.2 重构的第一步71.3 分解并重组statement()81.4 运用多态取代与价格相关的条件逻辑341.5 结语52第2章 重构原则532.1 何谓重构532.2 为何重构552.3 何时重构572.4 怎么对经理说602.5 重构的难题622.6 重构与设计662.7 重构与性能692.8 重构起源何处71第3章 代码的坏味道753.1 DuplicatedCode(重复代码)763.2 LongMethod(过长函数)763.3 LargeClass(过大的类)783.4 LongParameterList(过长参数列)783.5 DivergentChange(发散式变化)793.6 ShotgunSurgery(霰弹式修改)803.7 FeatureEnvy(依恋情结)803.8 DataClumps(数据泥团)813.9 PrimitiveObsession(基本类型偏执)813.10 SwitchStatements(switch惊悚现身)823.11 ParallelInheritanceHierarchies(平行继承体系)833.12 LazyClass(冗赘类)833.13 SpeculativeGenerality(夸夸其谈未来性)833.14 TemporaryField(令人迷惑的暂时字段)843.15 MessageChains(过度耦合的消息链)843.16 MiddleMan(中间人)853.17 InappropriateIntimacy(狎昵关系)853.18 AlternativeClasseswithDifferentInterfaces(异曲同工的类)853.19 IncompleteLibraryClass(不完美的库类)863.20 DataClass(纯稚的数据类)863.21 RefusedBequest(被拒绝的遗赠)873.22 Comments(过多的注释)87第4章 构筑测试体系894.1 自测试代码的价值894.2 JUnit测试框架914.3 添加更多测试97第5章 重构列表1035.1 重构的记录格式1035.2 寻找引用点1055.3 这些重构手法有多成熟106第6章 重新组织函数1096.1 ExtractMethod(提炼函数)1106.2 InlineMethod(内联函数)1176.3 InlineTemp(内联临时变量)1196.4 ReplaceTempwithQuery(以查询取代临时变量)1206.5 IntroduceExplainingVariable(引入解释性变量)1246.6 SplitTemporaryVariable(分解临时变量)1286.7 RemoveAssignmentstoParameters(移除对参数的赋值)1316.8 ReplaceMethodwithMethodObject(以函数对象取代函数)1356.9 SubstituteAlgorithm(替换算法)139第7章 在对象之间搬移特性1417.1 MoveMethod(搬移函数)1427.2 MoveField(搬移字段)1467.3 ExtractClass(提炼类)1497.4 InlineClass(将类内联化)1547.5 HideDelegate(隐藏“委托关系”)1577.6 RemoveMiddleMan(移除中间人)1607.7 IntroduceForeignMethod(引入外加函数)1627.8 IntroduceLocalExtension(引入本地扩展)164第8章 重新组织数据1698.1 SelfEncapsulateField(自封装字段)1718.2 ReplaceDataValuewithObject(以对象取代数据值)1758.3 ChangeValuetoReference(将值对象改为引用对象)1798.4 ChangeReferencetoValue(将引用对象改为值对象)1838.5 ReplaceArraywithObject(以对象取代数组)1868.6 DuplicateObservedData(复制“被监视数据”)1898.7 ChangeUnidirectionalAssociationtoBidirectional(将单向关联改为双向关联)1978.8 ChangeBidirectionalAssociationtoUnidirectional(将双向关联改为单向关联)2008.9 ReplaceMagicNumberwithSymbolicConstant(以字面常量取代魔法数)2048.10 EncapsulateField(封装字段)2068.11 EncapsulateCollection(封装集合)2088.12 ReplaceRecordwithDataClass(以数据类取代记录)2178.13 ReplaceTypeCodewithClass(以类取代类型码)2188.14 ReplaceTypeCodewithSubclasses(以子类取代类型码)2238.15 ReplaceTypeCodewithState/Strategy(以State/Strategy取代类型码)2278.16 ReplaceSubclasswithFields(以字段取代子类)232第9章 简化条件表达式2379.1 DecomposeConditional(分解条件表达式)2389.2 ConsolidateConditionalExpression(合并条件表达式)2409.3 ConsolidateDuplicateConditionalFragments(合并重复的条件片段)2439.4 RemoveControlFlag(移除控制标记)2459.5 ReplaceNestedConditionalwithGuardClauses(以卫语句取代嵌套条件表达式)2509.6 ReplaceConditionalwithPolymorphism(以多态取代条件表达式)2559.7 IntroduceNullObject(引入Null对象)2609.8 IntroduceAssertion(引入断言)267第10章 简化函数调用27110.1 RenameMethod(函数改名)27310.2 AddParameter(添加参数)27510.3 RemoveParameter(移除参数)27710.4 SeparateQueryfromModifier(将查询函数和修改函数分离)27910.5 ParameterizeMethod(令函数携带参数)28310.6 ReplaceParameterwithExplicitMethods(以明确函数取代参数)28510.7 PreserveWholeObject(保持对象完整)28810.8 ReplaceParameterwithMethods(以函数取代参数)29210.9 IntroduceParameterObject(引入参数对象)29510.10 RemoveSettingMethod(移除设值函数)30010.11 HideMethod(隐藏函数)30310.12 ReplaceConstructorwithFactoryMethod(以工厂函数取代构造函数)30410.13 EncapsulateDowncast(封装向下转型)30810.14 ReplaceErrorCodewithException(以异常取代错误码)31010.15 ReplaceExceptionwithTest(以测试取代异常)315第11章 处理概括关系31911.1 PullUpField(字段上移)32011.2 PullUpMethod(函数上移)32211.3 PullUpConstructorBody(构造函数本体上移)32511.4 PushDownMethod(函数下移)32811.5 PushDownField(字段下移)32911.6 ExtractSubclass(提炼子类)330……第12章 大型重构359第13章 重构,复用与现实379第14章 重构工具401第15章 总结409参考书目413要点列表417索引419

全部评论 (0)

还没有任何评论哟~
客服
客服
  • 设计的.pdf
    优质
    本PDF文档探讨了如何通过重构优化现有代码设计,提升软件质量与可维护性。适合软件开发人员阅读和实践。 第一章:重构案例 1.1 起点 1.2 重构的第一步 1.3 分解并重组statement()函数 1.4 运用多态取代与价格相关的条件逻辑 1.5 结语 第二章:重构原则 2.1 什么是重构 2.2 为什么需要进行重构 2.3 在什么时候进行重构 2.4 如何向经理解释重构的必要性 2.5 重构中遇到的问题和挑战 2.6 重构与设计的关系 2.7 重构对程序性能的影响 2.8 重构的历史背景 第三章:代码中的坏味道 3.1 DuplicatedCode(重复代码) 3.2 LongMethod(过长函数) 3.3 LargeClass(过大类) 3.4 LongParameterList(参数列表太长) 3.5 DivergentChange(发散式变化) 3.6 ShotgunSurgery(霰弹式修改) 3.7 FeatureEnvy(依恋情结) 3.8 DataClumps(数据泥团) 3.9 PrimitiveObsession(基本类型偏执症) 3.10 SwitchStatements(switch惊悚现身) 3.11 ParallelInheritanceHierarchies(平行继承体系) 3.12 LazyClass(懒惰类) 3.13 SpeculativeGenerality(夸夸其谈的未来性) 3.14 TemporaryField(令人迷惑的临时字段) 3.15 MessageChains(过度耦合的消息链) 3.16 MiddleMan(中间人模式) 3.17 InappropriateIntimacy(狎昵关系) 3.18 AlternativeClasseswithDifferentInterfaces(异曲同工的类) 3.19 IncompleteLibraryClass(不完善的库类) 3.20 DataClass(纯稚的数据类) 3.21 RefusedBequest(被拒绝的继承权) 3.22 Comments(过多注释) 第四章:构建测试体系 4.1 自动化测试的价值 4.2 使用JUnit进行单元测试 4.3 增加更多测试用例 第五章:重构列表 5.1 重构记录格式 5.2 寻找引用点 5.3 这些重构手法的成熟度 第六章:重新组织函数 6.1 ExtractMethod(提炼方法) 6.2 InlineMethod(内联方法) 6.3 InlineTemp(内联临时变量) 6.4 ReplaceTempwithQuery(以查询取代临时变量) 6.5 IntroduceExplainingVariable(引入解释性变量) 6.6 SplitTemporaryVariable(分解临时变量) 6.7 RemoveAssignmentstoParameters(移除对参数的赋值) 6.8 ReplaceMethodwithMethodObject(用方法对象替换方法) 6.9 SubstituteAlgorithm(替换算法) 第七章:在对象之间搬移特性 7.1 MoveMethod(移动方法) 7.2 MoveField(移动字段) 7.3 ExtractClass(提炼类) 7.4 InlineClass(将类内联化) 7.5 HideDelegate(隐藏委托关系) 7.6 RemoveMiddleMan(移除中间人模式) 7.7 IntroduceForeignMethod(引入外加方法) 7.8 IntroduceLocalExtension(引入本地扩展) 第八章:重新组织数据 8.1 SelfEncapsulateField(自封装字段) 8.2 ReplaceDataValuewithObject(以对象取代数据值) 8.3 ChangeValuetoReference(将值类型改为引用类型) 8.4 ChangeReferencetoValue(将引用类型改为值类型) 8.5 ReplaceArraywithObject(用对象替换数组) 8.6 DuplicateObservedData(复制被观察的数据) 8.7 ChangeUnidirectionalAssociationtoBidirectional(把单向关联变双向关联) 8.8 ChangeBidirectionalAssociationtoUnidirectional(将双向关联改为单向关联) 8.9 ReplaceMagicNumberwithSymbolicConstant(用符号常量代替魔法数) 8.10 EncapsulateField(封装字段) 8.11 EncapsulateCollection(封装集合类型) 8.12 ReplaceRecordwithDataClass(以数据类替换记录结构) 8.13 ReplaceTypeCodewithClass(使用类替代类型码) 8.14 ReplaceTypeCodewithSubclasses(用子类代替类型码) 8.15 ReplaceTypeCodewithState/Strategy(用状态策略模式取代类型码) 8.16 ReplaceSubclasswithFields(以字段替换子类) 第九章:简化条件表达式 9.1 DecomposeConditional(分解复杂条件语句) 9.2 ConsolidateConditionalExpression(合并相似的条件表达式) 9.3 Consolidate
  • 设计的中文版.pdf
    优质
    本书《改进现有代码设计的重构中文版》提供了实用的方法和策略来优化软件系统的内部结构,帮助开发者提升代码质量与可维护性。 第1章 重构:第一个案例 1.1 起点 1.2 重构的第一步 1.3 分解并重组Statemen(状态) 1.4 运用多态取代与价格相关的条件逻辑 1.5 结语 第2章 重构原则 2.1 何谓重构 2.2 为何重构 2.3 何时重构 2.4 怎么对经理说 2.5 重构的难题 2.6 重构与设计 2.7 重构与性能 2.8 重构起源何处 第3章 代码的坏味道 3.1 Duplicated Code(重复的代码) 3.2 Long Method(过长函数) 3.3 Large Class(过大类) 3.4 Long Parameter List(过长参数列) 3.5 Divergent Change(发散式变化) 3.6 Shotgun Surgery(霰弹式修改) 3.7 Feature Envy(依恋情结) 3.8 Data Clumps(数据泥团) 3.9 Primitive Obsession(基本型别偏执) 3.10 Switch Statements(switch惊悚现身) 3.11 Parallel Inheritance Hierarchies(平行继承体系) 3.12 Lazy Class(冗赘类) 3.13 Speculative Generality(夸夸其谈未来性) 3.14 Temporary Field(令人迷惑的暂时值域) 3.15 Message Chain (过度耦合的消息链) 3.16 Middle Man(中间转手人) 3.17 Inappropriate Intimacy(狎昵关系) 3.18 Alternative Classes with Different Interfaces(异曲同工的类) 3.19 Incomplete Library Class(不完善的程序库类) 3.20 Data Class(纯稚的数据类) 3.21 Refused Bequest(被拒绝的遗赠) 3.22 Comments(过多的注释) 第4章 建立测试体系 4.1 自我测试码的价值 4.2 JUnit测试框架 4.3 添加更多测试 第5章 重构名录 5.1 重构的记录格式 5.2 寻找引用点 5.3 这些重构准则有多成熟 第6章 重新组织你的函数 6.1 Extract Method(提炼函数) 6.2 Inline Method(将函数内联化) 6.3 Inline Temp(将临时变量内联化) 6.4 Replace Temp With Query(以查询取代临时变量) 6.5 Introduce Explaining Variable(引入解释性变量) 6.6 Split Temporary Variable(剖解临时变量) 6.7 Remove Assignments to Parameter (移除对参数的赋值动作) 6.8 Replace Method with Method Object(以函数对象取代函数) 6.9 Substitute Algorithm(替换你的算法) 第7章 在对象之间移动特性 7.1 Move Method(搬移函数) 7.2 Move Field(搬移值域) 7.3 Extract Class(提炼类) 7.4 Inline Class(将类内联化) 7.5 Hide Delegate(隐藏「委托关系」) 7.6 Remove Middle Man(移除中间人) 7.7 Introduce Foreign Method(引入外加函数) 7.8 Introduce Local Extension(引入本地扩展) 第8章 重新组织你的数据 8.1 Self Encapsulate Field(自封装值域) 8.2 Replace Data Value with Object(以对象取代数据值) 8.3 Change Value to Reference(将实值对象改为引用对象) 8.4 Change Reference to Value(将引用对象改为实值对象) 8.5 Replace Array with Object(以对象取代数组) 8.6 Duplicate Observed Data(复制「被监视数据」) 8.7 Change Unidirectional Association to Bidirectional(将单向关联改为双向) 8.8 Change Bidirectional Association to Unidirectional(将双向关联改为单向) 8.9 Replace Magic Number with Symbolic Constant (以符号常量/字面常量 取代魔法数) 8.10 Encapsulate Field(封装值域) 8.11 Encapsulate Collection(封装群集) 8.12 Replace Record with Data Class(以数据类取代记录) 8.13 Replace Type Code with Class(以类取代型别码) 8.14 Replace Type Code with Subclasses (以子类取代型别码) 8.15 Replace Type Code with State/Strategy (以State/Strategy取代型别码) 8.16 Replace Subclass with Fields(以值域取代子类) 第9章 简化条件表达式 9.
  • 设计的.pdf(含清晰书签目录)
    优质
    《改进现有代码设计的重构》一书深入探讨了如何通过有效的重构技术优化软件代码的质量与可维护性。本书结构清晰,包含详细书签与目录,便于读者快速定位所需内容。 《重构:改善既有代码的设计》PDF电子书于2010年出版,并带有标签目录。
  • 设计的[清晰PDF, 完整书签]
    优质
    本书《改进现有代码设计的重构》提供了一套完整的指南,帮助开发者通过有效的重构技术优化和改善软件代码结构。书中内容以清晰的PDF格式呈现,并配有完整书签,便于读者快速查找所需信息。 在清晰的PDF版本基础上手工添加了书签,并附带CHM文字版。文件包括:《重构-改善既有代码的设计[再版.完整书签]》(Martin Fowler著)以及《重构-改善既有代码的设计》(Martin Fowler著)。
  • 采用良C-C法相空间
    优质
    本研究采用改进的C-C方法进行相空间重构,旨在更准确地分析复杂系统的动力学特性,适用于混沌时间序列的数据处理与预测。 相空间重构是复杂系统动力学研究中的一个重要方法,它通过从有限的单变量时间序列数据中重建出系统的多维相空间,从而揭示系统的内在动态结构。“利用改进C-C进行相空间重构”这一主题主要涉及混沌理论和时间序列分析。混沌理论关注非线性动力系统看似随机但又具有确定性的行为。在混沌系统中,微小的变化可以导致长期行为的巨大差异,这就是著名的蝴蝶效应。相空间重构是理解和模拟这类系统的关键步骤,因为它可以帮助我们从单一观测值恢复出系统的所有状态变量。 C-C方法即交叉互信息法(Cross-Entropy Method),由Tsonis和El-Nainay提出,是一种常用的技术,在相空间重构中用于确定最佳的延时时间。通过计算不同延迟时间下的两个独立时间序列之间的互信息来实现这一点,确保重构的相空间能够充分捕捉到原始系统的动态特性。这种方法在处理噪声数据和避免伪周期性问题上表现优秀。 改进C-C方法可能是在原有基础上增加了对数据预处理、噪声滤波或者优化算法的应用,以提高重构效果和稳定性。例如,在原技术的基础上结合其他信息论指标如最大熵或Kolmogorov-Sinai熵,以及采用更复杂的延时嵌入算法如True Delay Embedding或Optimal Embedding Dimension等。 陆振波的工具箱提供了一套方便的软件工具用于执行相空间重构和相关分析。该工具通常包含数据预处理模块(去除趋势、平滑处理)、C-C方法实现,以及后续混沌特性参数计算(Lyapunov指数、Correlation Dimension和Kolmogorov Entropy等)。通过使用此类工具箱,科研工作者可以加载自己的时间序列数据,并应用改进的C-C方法进行相空间重构及各种混沌特性分析。 总的来说,“利用改进C-C进行相空间重构”是研究非线性动力系统的重要手段,涉及时间序列分析、信息论和混沌理论等多个领域。陆振波提供的工具箱简化了这一过程,极大地提高了科研工作者的工作效率,并有助于深入理解复杂系统的动态行为。
  • 后泊松建源的分析
    优质
    本文深入剖析了经过优化后的泊松重建算法源代码,探讨其在三维模型构建中的性能提升与技术细节。 改进后的泊松重建源码分析主要集中在优化算法效率、提高图像质量以及增强代码的可读性和维护性等方面。通过对现有实现进行深入研究,并结合最新的研究成果和技术进展,可以显著提升泊松表面重构的效果与性能。此过程涉及到对关键函数和数据结构的理解与调整,同时还需要考虑如何在保证重建精度的同时减少计算资源的需求。 改进措施包括但不限于:引入更高效的数值求解方法;优化内存管理和数据访问模式以加快运行速度;增加用户自定义参数选项以便于灵活配置重构流程等。通过这些改动,可以使泊松重建算法更加适应复杂场景下的应用需求,并为后续研究提供坚实的基础支持。
  • JSM2的DCS算法
    优质
    本文介绍了对JSM2模型中的DCS(需求配置服务)模块进行优化和重构的新算法版本,旨在提升系统的性能与灵活性。通过引入更高效的计算方法及架构调整,新算法在保持原有功能基础上增强了扩展性,并显著改善了资源消耗情况。这一改进对于大规模应用环境下的系统稳定性具有重要意义。 用于分布式压缩感知的第二种联合稀疏模型重构算法,在MATLAB环境下运行。
  • 经过多阶段并针MDVRPMDVRPTW极致优化的组蛙跳算法
    优质
    本研究提出了一种经多阶段改进的重组蛙跳算法,专门针对移动配送车辆路由问题及其时间窗口约束进行了深度优化。 在这项工作中,我们提出了一种新颖的多阶段改进蛙跳算法(MPMSFLA)框架来更高效地解决多个站点车辆路径问题(MDVRP)。该算法首先利用K-means聚类分析所有客户,并根据这些结果生成青蛙群体,随后经历三个主要阶段。第一阶段中,针对每个群集执行集群MSFLA局部搜索;第二阶段通过二元锦标赛选择机制来构建新种群并使用全局MSFLA对全部顾客和仓库进行优化处理;最后,在第三阶段通过对总体的聚类调整产生新的分组配置。这些步骤会不断重复直到达到预设的收敛条件为止。实验结果显示,该算法能够在较短时间内为MDVRP、带时间窗限制的MDVRPTW及车辆停放问题(CVRP)提供高质量解决方案,并且适用于大规模复杂场景下的优化任务处理。
  • Java设计阶书籍-
    优质
    本书籍专注于指导读者如何在Java编程中进行有效的代码重构,旨在帮助开发者优化现有代码结构和提高软件质量。适合有一定基础的Java开发人员阅读学习。 重构是指通过调整程序代码来改善软件的质量、性能,并使程序的设计模式和架构更加合理,提高其扩展性和维护性。 有人可能会问:为什么不在项目开始的时候多花些时间做好设计工作,而要在之后再进行重构呢?要知道一个能够完美预见未来任何变化或灵活应对所有可能的扩展的设计是不存在的。系统设计师通常只能从宏观上把握项目的整体方向,并不能预见到每一个细节;此外,“唯一不变的就是变化”,提出需求的人往往在软件成型后开始挑剔和修改,而作为设计者不可能成为先知来预测这些变动。因此,功能的变化必然会导致设计方案需要调整。 鉴于此,“测试先行、持续重构”的开发习惯被越来越多的开发者所接受,并且这种做法就像黄河护堤一样,在保证软件质量方面发挥着关键作用。
  • 如何Python加密
    优质
    本文将介绍几种针对Python代码的加密方法,帮助开发者保护自己的源码不被轻易阅读和修改。从简单的混淆到复杂的编译技术,全面解析实现过程及优缺点。 本段落主要介绍了如何给Python代码进行加密,并通过示例代码详细讲解了相关方法。内容对学习或工作中需要这方面知识的人具有一定的参考价值。有兴趣的朋友可以参考此文。