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

关于网站建设的参考文献网站建设需要什么专业

关于网站建设的参考文献,网站建设需要什么专业,医院男性男科,wordpress 游戏网站重构到底是什么#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/120402.html

相关文章:

  • 中国建设银行官网站汽车卡广州app开发公司地址
  • 宜兴市建设局网站wordpress wp_page_menu
  • 承包网站开发网站建设 开票
  • dw网站建设的常用技术枣强网站建设电话
  • 企业网站会涉及到的版权问题可做百度百科参考资料的网站
  • 国外流行的内容网站做司考题的网站
  • 做网站用不用云服务器wordpress实现分页
  • 网站建设的扩展性分析北京网站制作建设公司
  • 义乌商城网站开发网站免费制作平台
  • 网站语音转写怎么做手机网站淘宝客怎么做
  • 邹城外贸网站建设layui响应式网站开发教程
  • 门户网站开发源代码30g月流量网站
  • 常州建设工程质量监督网站wordpress 设置显示中文字体
  • 如何提升网站流量手表购买网站
  • 站长工具同大全站大庆做网站公司
  • 深圳方维网站设计公司成立一个网站需要多少钱
  • 响应式网站好吗关键词搜索技巧
  • 手机网站维护费个人页面模板
  • 旅游电商网站建设方案线下推广图片
  • 网站建设售前今天
  • 湖南鸿源电力建设有限公司网站拉新推广怎么找渠道
  • 专门做网站的软件是宿迁司法拍卖房产网
  • 无锡网站开发培训网站建设方案是什么意思
  • 网站定制首页费用网站建设公司(推荐乐云践新)
  • 做网站没灵感最火高端网站设计厂家
  • 泉州个人建站模板wordpress布局 插件
  • 手机网站会员中心模板学做视频t的网站
  • 广东公司网站建设哪家好wordpress自动生成手机快捷方式
  • easyui 做网站兰州企业网站建设公司价格
  • 做淘宝客网站要备案吗餐饮网站设计公司