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

公司网站建设西安微分销系统开发那家好

公司网站建设西安,微分销系统开发那家好,软件工程师招聘简章pdf,去国外做移动支付网站吗代码重构相关内容 聊一聊代码重构——我们为什么要代码重构 聊一聊代码重构——代码中究竟存在哪些坏代码 聊一聊代码重构——关于变量的代码实践 聊一聊代码重构——关于循环逻辑的代码实践 聊一聊代码重构——关于条件表达式的代码实践 聊一聊代码重构——程序方法上的…代码重构相关内容 聊一聊代码重构——我们为什么要代码重构 聊一聊代码重构——代码中究竟存在哪些坏代码 聊一聊代码重构——关于变量的代码实践 聊一聊代码重构——关于循环逻辑的代码实践 聊一聊代码重构——关于条件表达式的代码实践 聊一聊代码重构——程序方法上的代码实践 聊一聊代码重构——程序方法和类上的代码实践 聊一聊代码重构——存在继承关系类上的代码实践 聊一聊代码重构——封装集合和替换算法的代码实践 封装集合 对集合属性进行封装 很多时候我们封装了对象属性的访问这能提供属性的安全性但是对于集合我们一般会将集合作为一个整体来控制。这使得我们可以直接访问并修改集合这使得集合变得脆弱。而很多时候我们更加在意的是集合内部的元素的操作而不是对集合本身进行修改。所以在对象存在集合属性时需要对集合进行特殊的封装。 需要那些封装 在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/75652.html

相关文章:

  • 做网站的企划书网站建设项目确认书
  • 上海品划网站建设有限公司六安开发区网站
  • 网站管理登录系统wordpress给所有用户发邮件
  • 银川网站建设一条龙做公司网站的专业公司深圳
  • 门户网站建设参考文献wordpress 显示全部分类
  • 网站建设在哪里备案零售网站开发
  • 网站开发 先做前端吗设计工作网站
  • 南山区网站建设境外电商是做什么的
  • 中企高呈网站建设昆明专业网站建设的公司
  • 建设工程网站资质人员查询宜昌seo
  • 国内主流网站服务器网站怎样做地理位置定位
  • 设计网站大全软件安徽省工程建设信息官方网站
  • 重启 iis 中的网站郑州哪有做网站的汉狮
  • 学网站建设建设银行新加坡分行网站
  • 东莞网站建设完整线上策划方案
  • wordpress站点跟换域名家具网站开发环境与工具
  • 如何做招聘网站的方案市场调研报告模板ppt
  • 自己编写的网站如何放到wordpress网站备案审核需要多久
  • 内部网站建设计划国内设计网站公司网站
  • 网站定制设计价目表广州通报: 广州通报
  • 互助盘网站怎么做的天津建设工程信息王
  • 众筹网站开发价格用python自动写wordpress
  • 网站是什么东西佛山市外贸网站建设价格
  • h5网站开发设计网站建设后期需要后期做的
  • 专业北京网站建设公司排名建设网站的标语
  • wordpress漫画站主题公司简历模板图片
  • 大兴建设网站推销产品怎样才能打动客户
  • 盐城做网站优化做翻译 英文网站
  • 怎么样做一家卖东西的网站wordpress安装问题
  • 沈阳seo网站推广百度竞价排名怎么收费