重构——37移除控制标记(Remove Control Flag)

移除控制标记(Remove Control Flag)

在一系列表达式中,某个变量带有“控制标记作用”;以break语句或者return语句取代控制标记

一、动机

单一出口的原则会大大降低代码的可读性

二、做法

1、找出让你跳出这段程序的控制标记值

2、找出对标记变量赋值的语句,代以恰当的break语句或continue语句

3、每次替换后,编译并测试

4、在未能提供break和continue的编程语言中

5、使用Extract Method,恰当的return

时间: 2024-07-30 12:17:44

重构——37移除控制标记(Remove Control Flag)的相关文章

重构——15移除中间人(Remove Middle Man)

移除中间人(Remove Middle Man) 某个类做了过多的简单委托动作:让客户直接调用受托类 一.动机 1.封装委托对象有代价,每当客户要使用委托类的新特征是,你就必须在服务器端添加一个简单的委托函数 2.尺度很难拿捏,重构的意义就在于:你永远不必说对不起,只要把出问题的地方修补好就行了 二.做法 1.建立一个函数,用以获得受托对象 2.对于每个委托函数,在服务类中删除该函数,并让需要调用该函数的客户转为调用受托对象 3.处理每个委托函数后,编译.测试

重构——44移除参数(Remove Parameter)

移除参数(Remove Parameter) 函数本体不再需要某个函数:将该参数去除 一.动机 不去掉多余的参数,就让用户多费一份心 二.做法 1.检查函数签名是否被超类或者子类实现,如果是,则需要针对每份实现分别进行下列步骤 2.声明一个新函数,名称与原函数相同,只是去除不必要的参数.将旧函数代码复制到新函数中 3.编译 4.修改旧函数,令它调用新函数 5.编译,测试 6.找出旧函数所有的引用点,将它们全部修改为对新函数的引用.每次修改后,编译并测试删除旧函数,或者deprecated 7.编

C#使用for循环移除HTML标记_C#教程

移除一段文字中的HTML标记,以消除其中包含的样式和段落等,最常用的办法可能就是正则表达式了.但是请注意,正则表达式并不能处理所有的HTML文档,所以有时采用一个迭代的方式会更好,如for循环. 看下面的代码: using System; using System.Text.RegularExpressions; /// <summary> /// Methods to remove HTML from strings. /// </summary> public static c

重构——7移除对参数的赋值(Remove Assignments to Parameters)

移除对参数的赋值(Remove Assignments to Parameters) 代码对一个参数进行赋值,以一个临时变量取代该参数的位置 一.动机 1.降低了代码的清晰度 2.java只采用按值传递方式,我们的讨论也正是基于这一点 二.做法 1.建立一个临时变量,把待处理的参数值赋予它. 2.以"对参数赋值"为界,将其后的所有对此参数的引用点,全部替换为对此临时变量的引用 3.修改赋值语句,使其对新建之临时变量赋值 4.编译,测试

重构——51移除设值函数(Remove Setting Method)

移除设值函数(Remove Setting Method) 类中的某个字段应该在对象创建时被设值,然后就不再改变:去掉该字段的所有设值函数 一.动机 不希望对象被改变,就不要提供设值函数,同时final之 二.做法 1.检查设值函数被使用的情况,看它是否只被构造函数调用,或者被构造函数所调用的另一个函数调用 2.修改构造函数,使其直接访问设值函数所针对的那个变量 3.编译,测试 4.移除这个设值函数,将它所针对的字段设置为final 5.编译,测试

Oracle 快照控制文件(snapshot control file)

      听说过Oracle 控制文件,还有快照控制文件这个说法呢?没错,尽管快照控制文件很少被提及,但确实是存在,只不过在使用RMAN时这个快照控制文件被使用.回顾一下 Oracle 控制文件,我们知道控制文件是Oracle体系结构中的重要组成部分之一,记录了当前数据库的结构信息,同时也包含数据文件及日志文件的信息以及相关的状态,归档信息,也记录了系统当前SCN的值等等.那快照控制文件也就是控制文件的一个副本,本文介绍了什么是快照控制文件以及何时被使用.   1.快照控制文件     快照控

项目管理实践教程二、源代码控制【Source Control Using VisualSVN Server and TortoiseSVN】

在第一篇文章 项目管理实践教程一.工欲善其事,必先利其器[Basic Tools]发布后,根据大家的回复,我需要向大家说明几个问题: 1.为什么要用VisualSVN Server,而不用Subversion? 回答: 因为如果直接使用Subversion,那么在Windows 系统上,要想让它随系统启动,就要封装SVN Server为windws service,还要通过修改配置文件来控制用户权限,另外如果要想以Web方式[http协议]访问,一般还要安装配置Apache,如果是新手,岂不是很

代码重构(四):条件表达式重构规则

继续更新有关重构的博客,前三篇是关于类.函数和数据的重构的博客,内容还算比较充实吧.今天继续更新,本篇博客的主题是关于条件表达式的重构规则.有时候在实现比较复杂的业务逻辑时,各种条件各种嵌套.如果处理不好的话,代码看上去会非常的糟糕,而且业务逻辑看上去会非常混乱.今天就通过一些重构规则来对条件表达式进行重构,让业务逻辑更为清晰,代码更以维护和扩展. 今天博客中的代码示例依然是Swift班,在对条件表达式重构时也会提现出Swift的优雅之处,会用上Swift特有的语法及其特点,比如使用guard来

PHP 杂谈《重构-改善既有代码的设计》之四 简化条件表达式_php技巧

思维导图 点击下图,查看大图.  介绍    条件逻辑有可能十分复杂,因此本章提供一些重构的手法,专门用来简化它们.   全文简述(你可直接跳过下面的内容) 核心重构:Decompose Conditional--分离"转辙逻辑"(switching logic)和"操作细节"(details)分离. 多处测试有相同结果:Consolidate Conditional Expresssion 条件代码中去掉重复成分:Consolidate Duplicate 标识特