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

公司网站建设西安凡科网站设计

公司网站建设西安,凡科网站设计,郑州做网站公司yooker,华为网站建设方案模板代码重构相关内容 聊一聊代码重构——我们为什么要代码重构 聊一聊代码重构——代码中究竟存在哪些坏代码 聊一聊代码重构——关于变量的代码实践 聊一聊代码重构——关于循环逻辑的代码实践 聊一聊代码重构——关于条件表达式的代码实践 聊一聊代码重构——程序方法上的…代码重构相关内容 聊一聊代码重构——我们为什么要代码重构 聊一聊代码重构——代码中究竟存在哪些坏代码 聊一聊代码重构——关于变量的代码实践 聊一聊代码重构——关于循环逻辑的代码实践 聊一聊代码重构——关于条件表达式的代码实践 聊一聊代码重构——程序方法上的代码实践 聊一聊代码重构——程序方法和类上的代码实践 聊一聊代码重构——存在继承关系类上的代码实践 聊一聊代码重构——封装集合和替换算法的代码实践 封装集合 对集合属性进行封装 很多时候我们封装了对象属性的访问这能提供属性的安全性但是对于集合我们一般会将集合作为一个整体来控制。这使得我们可以直接访问并修改集合这使得集合变得脆弱。而很多时候我们更加在意的是集合内部的元素的操作而不是对集合本身进行修改。所以在对象存在集合属性时需要对集合进行特殊的封装。 需要那些封装 在getter方法中返回集合的一个只读拷贝以防止外部代码修改集合。在setter方法中进控制将对集合的修改限制在元素上的修改。对集合添加对集合元素内操作的方法。 就像下面对属性的封装 public class ShoppingCart {private ListItem items new ArrayList();public void addItem(Item item) {items.add(item);}public void removeItem(Item item) {items.remove(item);}public double getTotalPrice() {double total 0;for (Item item : getItems()) {total item.getPrice();}return total;}public ListItem getItems() {return Collections.unmodifiableList(items);}private void setItems(ListItem items) {this.items items;} } 在上面的示例中我们将 items 属性设置为私有并创建了 getter 和 setter 方法。我们在 setter 方法中添加了一些逻辑以确保集合只能通过该方法进行修改。在 getter 方法中我们返回集合的一个只读拷贝以防止外部代码修改集合。在 getTotalPrice 方法中我们通过 getItems 方法来访问集合。最终我们可以逐步修改代码中所有直接访问 items 属性的地方使其改为通过 getter 和 setter 方法进行访问。 替换算法 很多时候在最开始实现业务的时候对业务最终展现的形式不是很清晰或者因为时间原因我们只能选择最快实现业务的方式。但是这些内容有可能并不是最好的方式在原先的做法之外可能存在更简单的解决方案此时在重构代码时需要尝试对原来算法进行重构。比如使用更高效的算法替代低效算法使用已经存在的三方库中方法替代自己编写的方法等。 如何进行算法替换 选择一个可以替换当前算法的新算法。如果新的算法不是三方库中已有的内容则将新算法实现为一个新的方法。在原方法调用地方切换为新方法。测试正确性比较新算法的性能。 什么样的内容要替换算法 使用高效算法替换低效的算法 使用高可读性的算法替换低可读性算法 引入特例 特殊的逻辑 正常业务中即使逻辑分支不同但是其需要经历的流程大多是类似的这个时候我们使用一些系列公共逻辑将其抽象。后来的开发同学在理解这些内容时会更加容易。但是某些时候总会有某个特殊的逻辑分支在业务逻辑或者涉及数据范围都和其他分支差异巨大。为了不破坏原有代码结构和设计又不想在父类中添加太多的特定逻辑。我们可以声明一个特殊标记的专门类来处理这个逻辑需要处理这个逻辑的地方调用这个特例类的方法。这个特例类通常是一个继承自父类的子类但是只包含特定的逻辑处理不包含其他的业务逻辑。这样既完成了特殊处理又保持原有的代码结构和设计避免对原有代码的影响和破坏。但是过度使用引入特例可能会导致代码过于复杂和难以维护因此需要根据具体情况进行选择和使用。 下面情况下可以考虑使用引入特例的重构 如果业务分支中存在大量针对特殊情况的判断和处理并且这些特殊情况的处理逻辑相同。 特殊分支处理逻辑和正常情况的处理逻辑内容迥异其逻辑会影响对正常逻辑的理解和扩展。 尝试引入特例的 审查代码找出代码中符合上面描述的特殊情况。创建一个特例类该类应该继承自原来的类并重写特殊情况下的方法。在原来的类中添加一个方法用于判断当前是否为特殊情况。在原来的类中将特殊情况下的代码替换为使用特例类的代码。如果当前为特殊情况则创建特例类的实例并调用其方法否则调用原来的方法。测试 下面是一个使用特例方式重构的demo 原始代码中getTotalPrice()当检测到特殊产品ID时候会使用与正常计算规则不同的计算方式。如果一个系统中是通过优惠标记来进行产品折扣的那么这种固定产品ID进行折扣的方式显然和产品正常涉及的逻辑不相符合。这个时候我们可以提供一个特殊的对象将其内部处理逻辑和正常逻辑隔离出来 public class Order {private int productId;private int quantity;private double price;public Order(int productId, int quantity, double price) {this.productId productId;this.quantity quantity;this.price price;}public double getTotalPrice() {if (productId 1) {return quantity * price * 0.9;} else {return quantity * price;}} }在下面新建一个继承于新对象的SpecialPriceOrder初始化时使用新的对象取代原始对象。将正常的代码逻辑和特殊的代码逻辑隔离出来 public class SpecialPriceOrder extends Order {public SpecialPriceOrder(int productId, int quantity, double price) {super(productId, quantity, price);}Overridepublic double getTotalPrice() {return super.getTotalPrice() * 0.9;} }public class Order {private int productId;private int quantity;private double price;public Order(int productId, int quantity, double price) {this.productId productId;this.quantity quantity;this.price price;if (productId 1) {this.setSpecialOrder(new SpecialPriceOrder(productId, quantity, price));}}...... }
http://www.dnsts.com.cn/news/137058.html

相关文章:

  • 最棒的网站建设网站开发技术项目说明书
  • 有关建筑企业的网站有哪些ps素材网
  • 外贸行业网站建设公司东莞海外网络推广
  • 怎么查看网站的空间商桂林市教科所
  • 深圳html5网站建设价格网站建设最高管理权限
  • 网站建设要学会什么软件福州建设网站效果图
  • 如何在好医生网站做二类学分免费咨询图片带字
  • 做养生产品哪个网站好某某公司网络营销策划书
  • 常州好的网站设计公司王老吉网站建设水平优点
  • 网站维护费进入哪个科目注册公司流程和费用联系人
  • 桥头镇网站仿做注册公司和建网站
  • 建立网站如何盈利站群服务器是什么意思
  • 织梦中英网站怎么做微信小游戏开发者平台
  • 网站开发 入门教程网络网站开发设计
  • 黑icp 网站建设网络规划设计师和系统规划与管理师哪个容易
  • 宝宝投票网站怎么做的企业网址是什么?
  • 如何在godaddy空间做手机网站青海省住房和城乡建设厅网站首页
  • 平湖企业网站建设南宁会制作网站的技术人员
  • 这样做网站推广北京做手机网站设计
  • 陕西建工第三建设集团网站口碑营销话题
  • 在线教育网站建设公司怎么做自己公司的网页
  • 做网站需要哪些东西wordpress做seo优化
  • 网站备案单位的联系方式html个人网站案例
  • 营业执照办好了就可以做网站了吗e时代速递搜索引擎网站建设
  • 网站开发公司企业官网计算机编程网课
  • 定制企业网站费用icp网站备案管理系统
  • 什么网站可以做电子画册wordpress如何自己添加锚文本
  • 服务好的郑州网站建设河南建筑信息一体化平台
  • 外国自适应企业网站wordpress 怎么学
  • 有哪些专业做饰品的网站app公众号运营收费价格表