当前位置: 首页 > news >正文

关于网站建设的参考文献深圳老牌房企被曝全员解散

关于网站建设的参考文献,深圳老牌房企被曝全员解散,全国建设信息网官网,大理工程建设信息网站重构到底是什么#xff1f;只是代码的推倒重新编码#xff1f;还是有规则、有方法可寻#xff1f;当然#xff0c;结论肯定是有的#xff0c;本文#xff0c;我们通过一个简单的实例#xff0c;来理解一下重构。 1.借助一个实例需求 这是一个影片出租店用的程序#…重构到底是什么只是代码的推倒重新编码还是有规则、有方法可寻当然结论肯定是有的本文我们通过一个简单的实例来理解一下重构。 1.借助一个实例需求 这是一个影片出租店用的程序计算每一位顾客的消费金额并打印详单。操作者告诉程序顾客租了哪些影片、租期多长程序便根据租赁时间和影片类型计算出费用。影片分为三类普通片、儿童片和新片。除了计算费用还要为常客计算积分具体的租赁用户积分规则为 租赁规则 价格计算规则普通片儿 —— 起步价2¥超过2天的部分每天每部电影收费1.5元新片儿 —— 每天每部3元儿童片 —— 起步价2¥超过3天的部分每天每部电影收费1.5元 积分计算规则 每借一部电影积分加1新片每部加2 2. 实现重构 我们很容易实现了代码类图如下 但是此时考虑几个需求 /** * 打印顾客的订单详情 * TODO 函数复杂 * TODO 如果有需求需要更改打印样式或者换一个html样式那么需要把statement copy一次 * TODO 如果需要修改计价规则则需要变更所有的计价函数 * TODO 如果需要新增类型则需要变更过所有的函数 * return */自然而然我们首先想到statment函数功能太复杂了那我们需要吧这个函数功能分解最简单的计算价格应该分离出来根据输入的影片类型还有租借天数得到了租赁的价格 Extract method将方法抽离 /** * Extract method * param rentUnit * return */ private double getRentPrice(RentUnit rentUnit) {double temp 0;switch (rentUnit.getMovie().getMovieType()) {case NEW:temp rentUnit.getDays() * 3;if (rentUnit.getDays() 2) {temp (rentUnit.getDays() - 2) * 2.5;}break;case NORMAL:temp rentUnit.getDays() * 2;if (rentUnit.getDays() 2) {temp (rentUnit.getDays() - 2) * 1.5;}break;case CHILDREM:temp rentUnit.getDays() * 1;if (rentUnit.getDays() 2) {temp (rentUnit.getDays() - 2);}break;}return temp; }这时大家发现抽离的方法依然有问题因为切记任何一个傻瓜都可以写出计算机理解的代码但是唯有写出人类容易理解的代码才是优秀的程序员。 所以这里我们采用 Rename field and method继续优化 大家此时发现没有其实这个方法和Customer没有关系的是和租赁类有关系的也就是每个租赁实体类应该有这样一个方法可以计算返回它的租赁价格 所以我们采用Move method移到合适的类中 积分规则同样如此操作 此时还有什么问题计价规则和积分规则其实是日后最容易变动的地方所以我们需要将其抽离 大家返回来看通过一系列简单的提炼操作是否现在代码对于需求的兼容性更高了呢 例如 我现在要改变积分规则或者计价规则只需修改RentUnit类即可我现在想要添加一个htmlstatement打印函数那么也可以自己调用相应的价格和积分计算函数 但是需要考虑一个事情影片分类增加怎么办某种影片类型的计价规则或者积分规则发生变化不应该是整体发生变化其实关键在于switch语句每次修改都需要修改这语句对于代码整体健壮性来说肯定是不对的。 那么我们把计价规则和积分规则先抽离到Movie类中这时有人会说这就简单了只需要去新增不同的Movie类然后去继承Movie从而实现计价规则和积分规则的变动但是大家切记如果是在一个大的系统中那么这样将是灾难性的后果因为这样变更之后意味着上层所有调用Movie实例的地方都必须去区分到底想要去调用哪种类型所以的地方都需要去改 但是我们站在开发使用的角度来讲我新建一个Movie类只需要告诉你类型就可以我不想关心这么多的东西我只想告诉你类型你让我新增相应的计价规则和积分规则即可。 有两个东西需要去做 一个是switch语句需要借助多态性去除另外一个不可以直接movie继承的方式去搞不然上层就得跟着变动而且这样设计后期上层的使用上也会诸多不便 重构到这里实例的所有需求都已兼容而且都是在不影响最上层调用的前提下完成的最主要我们是一步一步配合测试完成的 接下来思考这里还有什么问题 后期如果新增影片类型那么需要修改枚举定义中添加类型还需新增具体的影片的计价规则和积分计算规则也就是新增一个price类即可。 但是这里有一个问题就是需要修改Movie类因为这里有一个根据类型去新建price的switch语句那么这里应该怎么去优化呢
http://www.dnsts.com.cn/news/60033.html

相关文章:

  • 广东手机网站制作公司wordpress 归档链接
  • 360免费建站永久免费动画制作软件flash
  • 有哪些做ae小动效的网站seo执行招聘
  • 网络工程毕设做网站linux网站建设技术指南 pdf
  • 网站开发自学资料我想做京东网站淘宝怎么做
  • 桂林市住房和城乡建设局网站wordpress网页教程百度云
  • 锐旗网站建设网站建设 用什么语言
  • 开源网站 做镜像 如何做学校网站设计论文
  • 如何将图片生成网址东莞百度seo在哪里
  • 视觉差的网站北京装饰公司名称
  • 网站有多少个做外贸的网站有哪些
  • dw做的静态网站怎么分享链接Checkout v1.4.1 WordPress主题
  • 浙江华纳建设有限公司网站百度查一下
  • 网站开发项目税率雄安网建 网站建设
  • 专业摄影网站移动论坛网站模板
  • 汽车集团网站建设网页简单模板下载
  • 盐城中瑞做网站公司模板网站
  • 网站建设佰金手指科杰十一wordpress 500错误
  • 企业自助建站百度网页版网址链接
  • 网站制作公司获取客户w7自己做网站
  • 网站系统分析关键词优化公司哪家推广
  • 一个网站同时做百度和360 百度商桥都可以接收客户信息吗html5从入门到精通
  • 经营地址怎么在国税网站做更改做百度推广去些网站加客户
  • 哪个网站专门做政策解读做爰全过程免费视频网站
  • 365建站器网站如何选择服务器
  • 义县城乡建设局网站高端品牌网站建设网站开发注意什么
  • 做网站范本青岛百度网站排名
  • 京东网站是哪个公司做的罗湖商城网站设计公司
  • 网站开发分前台后台中企动力为什么一直招人
  • 个人做网站开工作室做公众好号的网站吗