看淘网
当前位置: 首页> 文章> 清理代码的方法(1):用多态性替换条件语句

清理代码的方法(1):用多态性替换条件语句

发布时间:2019-08-14 15:13:40 作者:xhs
清理代码的方法(1):用多态性替换条件语句:前言本文是我在hyperlink google简明代码演示系列中看到的hyperlink多态性和条件语句的摘要。大多数条件语句都可以用多态性代替。本文将重点讨论以下问题:为什么使用多态性而不是条件语句多态性和条件语句的使用场景如何用多态性替换条件语句你在哪里决定要创建什么子类什么时候使用多态性为什么超链接使用多态性而不是条件语句没有if语句的函数更容易读取。没有if语句的函数更容易测试。多态系统更容易维护。超链接多态性和条件语句的场景超链接使用多态方案当对象的行为因其状态而不同时。当你需要在很多地方检查相同的条件时。超链接使用条件语句的方案主要用于比较原始对象:<,>,=,!=其他本文主要讨论如何避免if语句。超链接如何避免if语句不要返回空值,而是返回一个空对象,如空的链接列表。不要返回错误代码,而是在运行时直接引发异常。超链接如何用多态性替换条件语句如果有条件语句,它将根据对象的类型选择不同的行为。那么,如何用多态性替换它呢?现在,我们来看一个例子。实现类的超链接条件语句类更新{执行()。{如果(标志“启用”)。{//做一个;}其他{//做b;}}呈现()。{如果(标志“启用”)。{//呈现a;}其他{//渲染B;}}}上面的类基于标志“启用”执行不同的操作。也许你以前用这种方式写过代码,你认为这没什么问题。所以,我现在问你,你是如何测试上述课程的?让我们看看一般的测试方法。无效的TestExecutedOA()。{flag iu i18n_enable=真;更新u=new update();阿联酋Xecute();断言x();}void testsexecutedob()。{flag iu i18n_enable=false;更新u=new update();阿联酋Xecute();断言x();}看了以上代码后,你可能也会觉得似曾相识,没问题。实际上,这样编写的类有以下问题:大量的条件判断使得代码的可读性大大降低。就像你在高速公路上开车,玩得很开心,前面出现了一个标志,你必须走另一条路。在查看代码时也是如此,因为太多分支语句会混淆阅读器。条件语句的存在使得测试更加困难。编写测试时,必须考虑其状态代码。上面的类只有两个状态。如果它有五个州呢?仅仅弄清楚国家之间的关系就足够了。类的超链接多态实现那么,如何在多态性中重写上述类呢?我们可以分两步完成:使更新成为抽象类,使方法成为抽象类。子类中的重写方法实现条件语句的分支操作。以下代码抽象类更新{抽象执行();抽象呈现();}类I18nupdate扩展更新{执行()。{//做一个;}呈现()。{//呈现a;}}类noni18nupdate扩展更新{执行()。{//做b;}呈现()。{//渲染B;}}试验方法:无效的TestExecutedOA()。{更新u=new i18nupdate();阿联酋Xecute();断言x();}void testsexecutedob()。{更新u=new noni18nupdate();阿联酋Xecute();断言x();}多态中实现的类通过继承抽象类和重写抽象方法来避免使用条件语句。在测试时,不需要关心它的状态代码,子类本身已经包含了状态信息。正如您所看到的,在测试时,代码非常清晰并且易于理解。要摘要的超链接使用多态性实现的类有两个好处:我们可以通过添加新的子类来添加新的行为,而不影响原始代码。不同类中的不同操作和概念易于理解和阅读。超链接在哪里决定要创建什么子类首先,阅读上面的标题似乎有点困惑,所以让我们详细讨论问题的根源。我们已经向您展示了如何用多态性替换条件语句,但是有一个不可避免的问题:我们如何确定要创建哪个种子类?事实上,我们仍然依赖于标志i18n_enable来决定要实例化哪个子类,这意味着我们仍然使用条件语句。在这一点上,你可能会想:毕竟,这都是关于条件和博客欺骗人们。这是不正确的,因此使用条件语句是必要的,而且是不够的。当然,您需要使用条件来编写程序,但是过多地使用条件会导致前面讨论过的问题。将多态性与条件语句结合起来是一种可行的方法。让我们回到前面的问题,因为条件语句是不可避免的,因为我们必须根据条件决定要使用哪个子类。我们先粗略地划分一下班。负责业务逻辑的类:例如,我们上面的更新负责创建类的类:例如,工厂模式中的工厂通过以上的划分,我们可以将创建子类划分为工厂类。阶级消费者{cosumer(更新u)…}}阶级工厂{使用者版本()。{更新U=flag n_启用?新i18nupdate():新的非i18nupdate;新消费者回报率(U);}}现在我们可以回答上面的问题:在工厂类中,根据标准决定要创建哪个子类。这种治疗有以下好处:条件语句集中在一个地方。没有多余的重复,除了工厂类之外,任何地方都不需要条件语句。责任与全球国家是分开的。在一个地方有相同的代码。独立测试变得更容易,并且可以同时进行。子类中的实现差异是明显可见的。超链接何时使用多态性多态性很好,但不要滥用它。-肖永娜当类的行为根据状态而改变时。当相同的条件语句出现在多个位置时。最后,让我这么说:当您应该使用条件时,不要强制使用多态性。资源超链接多态语句和条件语句清理代码的方法(1):用多态性替换条件语句
蜜小助-恋爱/撩妹聊天必备神器
蜜小助App

内置20W+恋爱聊天话术

一键复制解决尬聊话题

相关推荐
喜欢的女生喜欢白色,要送什么礼物给她 什么是互补型爱情 女生说自己胖了,高情商都这么回复! 女生说自己胖,要怎么高情商回复
热门推荐
1
口述:公公在梳妆台上给我数次高潮
口述:公公在梳妆台上给我数次高潮

我与老公结婚三年了,老公是个特别老实的男人,平时很听我的话,也很疼爱我。我是一个快要30的女人,一个普通的白领,都说这个年纪的女人如狼似虎,一点都没有说错。脱去了20岁懵懂的天真,现在的我对夫妻生活的要求真的越来越多了。老公是一位公司主管,平时工作特别忙,而且经常因为业务需要出差,就是晚上能够按时回来,基本上都觉得一天的工作太累,而我们夫妻之间的亲密事让他有些力不从心。我不得不说,综合各方面来说,...

2
二宮琴美、東熱出操翻白眼昏死
二宮琴美、東熱出操翻白眼昏死

昨天才藉著「白鳥真衣」(宮沢まき)的狀況說明了現在東熱的困境,今天筆者再介紹另一位已經被辨識出身分的「二宮琴美」老調重談,看看東熱近來的餌食有多「菜」吧:她是才剛被發表、演出「鬼逝」的新鮮餌食,所謂的「鬼逝」意思很簡單,就是「把妳幹到死」,所以除了男優演出會格外粗暴外女優也會被搞到「再起不能」,而這...

3
那个午夜 禽兽继父将我压在身下
那个午夜 禽兽继父将我压在身下

我是爸妈的私生女,他们谈恋爱的时候,意外怀孕生下了我。后来,爷爷奶奶死活不同意爸爸娶我妈妈。妈妈说,如果我是个男孩就好了。你要是个男孩,你爷爷肯定不会让你爸爸抛弃我们。最后,爸爸给了妈妈一笔钱,相互拥抱着,哭了一夜,就分开了。妈妈坚持把我生了下来。不久,就听说爸爸和别的女人结婚了。两年以后,妈妈带着我嫁给了一个出租车司机。继父比我妈妈大5岁,很老实,对我不错,就像对自己的亲生女儿一样。当然,他还没...

4
韩国美女主播”钟淑”高清视频精品合集9部 115网盘在线观看
韩国美女主播”钟淑”高清视频精品合集9部 115网盘在线观看

第一次看到韩国美女主播的视频,是两年前在同事电脑上看到的,那是一部朴妮唛的直播视频。当时给我的感觉就是眼前一亮,感觉这身材和脸蛋能够秒杀很多当红明星啊!后来才知道她叫朴妮唛,韩国人。也关注过一段时间,搜集了一些视频,同时了解到韩国有很多像朴妮唛这样的美女主播。后来慢慢的会搜集一些这样的视频,可是基本...

5
店长推荐作品 EMP-001 EMPIRE Vol.1 50 波多野结衣 50连发泼溅中 2012年
店长推荐作品 EMP-001 EMPIRE Vol.1 50 波多野结衣 50连发泼溅中 2012年

店长推荐作品EMP-001EMPIREVol.150波多野结衣50连发泼溅中2012年度亚洲无码最佳A片第一名

6
留守女人和禽兽公公的不伦性事
留守女人和禽兽公公的不伦性事

我结婚一年多了,非常郁闷,整天提心吊胆的,原因是老公刚转成自愿兵未能复员。现如今我和公公两人生活在家,很不习惯,也很为难。其实公公这个人挺好的,只是孤男寡女长期这样子住在一起,不管别人如何评论,自己也总觉得不得劲儿。今年我23岁了,比老公还大1岁。嫁他时就是公公说的媒。公公是我们学校的会计,在这里工作10多年了,口碑蛮不错,是个老好人,我是前年毕业后被派遣到这里来实习的。我家在农村,父母都是老实巴...

最新推荐
吵架先认错感觉没备注
吵架先认错感觉没备注
2023-10-20
男生想要的安全感是什么样的
男生想要的安全感是什么样的
2023-10-16
喜欢的女生喜欢白色,要送什么礼物给她
喜欢的女生喜欢白色,要送什么礼物给她
2023-10-08
什么是互补型爱情
什么是互补型爱情
2023-10-08
女生说自己胖了,高情商都这么回复!
女生说自己胖了,高情商都这么回复!
2023-09-28
女生说自己胖,要怎么高情商回复
女生说自己胖,要怎么高情商回复
2023-09-22
热点推荐