提取方法是最常用的重构之一。当一个方法看起来太长或者方法中一些代码需要注释才能明白它的目的时,可以考虑把它们提取出来作为一个独立的方法。如:

void PrintOwing(){double outstanding = 0;

//print banner    Console.WriteLine("**********");    Console.WriteLine("***Owes***");    Console.WriteLine("**********");

//Calculate outstanding    foreach(Order o in orders)    {        outstanding += o.Amount;    }

//print details    Console.WriteLine("Name: " + name);    Console.WriteLine("Amount: " + outstanding);}

通过提取方法,重构后代码如下

void PrintOwing(){    PrintBanner();    outstanding = GetOutStanding();    PrintDetails(outstanding);}

void PrintBanner(){    Console.WriteLine("**********");    Console.WriteLine("***Owes***");    Console.WriteLine("**********");}

void PrintDetails(int outstanding){    Console.WriteLine("Name: " + name);    Console.WriteLine("Amount: " + outstanding);}

int GetOutStanding(){double result = 0;

foreach(Order o in orders)    {         result += o.Amount;    }

return result;}

经过重构后,代码看上去清爽多了。提取方法还可以提高代码的重用性,提高代码的模块化

程度。

转载于:https://www.cnblogs.com/reallypride/archive/2008/10/05/1304263.html

重构《一》-- 提取方法相关推荐

  1. VS2005中重构的用法

    重构工具可自动重新构造源代码,例如,通过将局部变量升级为参数或将代码块转换为方法. 重构是在编写代码后在不更改代码的外部行为的前提下通过更改代码的内部结构来改进代码的过程. 一.重构命令 提取方法 重 ...

  2. 【JAVA】代码重构技巧

    简介 重构是持续改进代码的基础.抵制重构将带来技术麻烦:忘记代码片段的功能.创建无法测试的代码等等. 而有了重构,使用单元测试.共享代码以及更可靠的无bug 的代码这些最佳实践就显得简单多了. 鉴于重 ...

  3. java如何停止函数循环_在Java中使用break来退出循环是不好的做法吗?

    好主不. 有时在满足总体要求的循环中可能会出现某些情况,而不满足逻辑循环条件. 在这种情况下,使用break ,来阻止你毫无意义地在循环中循环. 例 String item; for(int x = ...

  4. Kotlin协程-Coroutines-原汁原味一篇就够了系列

    文章目录 Kotlin协程-Coroutines 1. 协程概述 1.1 来自官方的解释:[Coroutines Guide - Kotlin Programming Language](https: ...

  5. 编写可维护软件的不朽代码随想-2

    编写短小的代码单元 代码单元的长度应<=15行,将长的代码分解成多个更短的代码单元:短小的代码单元易于理解.测试和重用. 代码单元:可独立维护和执行的最小代码集合. 例如在C#中,一个方法或者构 ...

  6. java 代码坏味道_代码中的坏味道

    前言 在日常生活中,当我们买的水果放久了之后会发出一种难闻的气味("坏味道"),这个时候我们就应该把它扔掉.同样,代码也有"坏味道",当然确定什么是和不是代码& ...

  7. AIGC - 生产力新工具 Copilot

    文章目录 介绍 能干啥 IDEA 安装 介绍 https://github.com/features/copilot 能干啥 Copilot的主要功能包括: 代码补全和提示:Copilot会根据上下文 ...

  8. 三维模型特征提取方法概述

    作者I 开拓者5号@CSDN 编辑I 3D视觉开发者社区 一.三维特征提取概述 三维特征提取是模式识别中最基本的研究内容之一,可以有效地缓解模式识别领域经常出现的"维数灾难"问题并 ...

  9. .NET重构—单元测试的代码重构

    阅读目录: 1.开篇介绍 2.单元测试.测试用例代码重复问题(大量使用重复的Mock对象及测试数据) 2.1.单元测试的继承体系(利用超类来减少Mock对象的使用) 2.1.1.公用的MOCK对象: ...

最新文章

  1. 让Windows命令行显示UTF-8字符
  2. 【STM32】定时器程序
  3. Java Tomcat SSL 服务端/客户端双向认证
  4. 29.变量的生命周期
  5. PHP 收货地址:添加、修改、删除
  6. Mysql的安全设置
  7. MINT:蛋白质相互作用数据库简介
  8. 批量添加搜狗域名绑站工具
  9. 2022百度大数据开发工程师实习面试经历
  10. 智能门锁走向而立之年
  11. 一文带你明白什么是浏览器插件?
  12. IPFS独角兽西部世界解读:销毁的近2000万FIL去哪里了?
  13. python爬知识星球付费数据_Python 知识星球爬虫(一) 根据 topic comment 爬取数据...
  14. HTML5实现手机QQ表情功能
  15. mongo E11000 duplicate key error collection
  16. 区分统一社会信用代码、组织机构代码、注册号
  17. 恋人/情人/性伴侣/红颜知己
  18. setText()的一点小体会
  19. java获得日期去掉横杠,python怎么去掉日期中的横杠?
  20. KAIST : Multispectral Pedestrian Detection: Benchmark Dataset and Baseline

热门文章

  1. java.lang.IllegalStateException: closed
  2. Go 切片使用绕坑指南
  3. tomcat源码环境构建
  4. springbatch读取外部数据到mysql
  5. MS CRM 2011 如何创建基于SQL的自定义报表,并使用数据预筛选(Pre-Filtering)
  6. 蘑菇街更新招股书:Q3亏1.8亿 IPO后陈琪有79%投票权
  7. 部分 I. 教程_第 2 章 SQL语言_2.2. 概念
  8. 申请了:苹果已经在测试“毫米波”5G技术
  9. [7.14更新日志]CRP编译缓存和海外构建让编译健步如飞!
  10. Android学习笔记——保存数据到SQL数据库中(Saving Data in SQL Databases)