但是它運行了而且flag还是false,虽然后面t进程被中断了
本文章向大家介绍简化条件表达式之移除控制标记(Remove Control Flag)主要包括简化条件表达式之移除控制标记(Remove Control Flag)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定嘚参考价值需要的朋友可以参考一下。
在一系列布尔表达式中某个变量带有“控制标记’的作用。以break或return语句取代控制标记
动机:在┅系列条件表达式中,常常会看到用以判断何时停止条件检查的控制标记这样的标记带来的麻烦超过了它所带来的便利。人们之所以会使用这样的控制标记因为结构化编程原则告诉他们:每个子程序只能有一个入口和出口。“单一出口“原则会让你在代码中加入让人讨厭的控制标记大大降低条件表达式的可读性。这就是编程语言提供break和continue语句的原因:用它们跳出复杂的条件语句去掉控制标记所产生的效果往往让你大吃一惊:条件语句真正的用途会清晰得多。
做法:1、对控制标记的处理最显而易见的办法就是使用break或continue语句。
范例:以break 取玳简单的控制标记
这种情况下很容易找出控制标记:当变量found 被赋予true 时搜索就结束。我可以逐一引入break 语句:
最后可以把对控制标记的所有引用去掉:
范例:以return 返回控制标记
本项重构的另一种形式将使用return 语句为了阐述这种用法,我把前面的例子稍加修改以控制标记记录搜索结果:
在这里,变量found 做了两件事:它既是控制标记也是运算结果。遇到这种情况我喜欢先把计算found 变量的代码提炼到一个独立函数中:
然后以return 语句取代控制标记:
最后完全去掉控制标记:
即使不需要返回某值,你也可以使用语句来取代控制标记这时候你只需 要一个空嘚return 语句就行了。
当然如果以此办法去处理带有副作用(连带影响)的函数,会有一些问题所以我需要先以 Separate Query from Modifier 将函数副作用分离出去。稍後你会看到这方面的例子