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

企业建站平台网页设计公司有哪些国内

企业建站平台,网页设计公司有哪些国内,wordpress 翻译不起作用,不做网站只做推广可以么前些天发现了一个巨牛的人工智能学习网站#xff0c;通俗易懂#xff0c;风趣幽默#xff0c;忍不住分享一下给大家。点击跳转到教程。 买了《重构 - 改善既有代码的设计 》一书#xff0c;一直没有好好看#xff0c;大致过了下也觉得只是有点点印象而已#xff0c;最后…前些天发现了一个巨牛的人工智能学习网站通俗易懂风趣幽默忍不住分享一下给大家。点击跳转到教程。 买了《重构 - 改善既有代码的设计 》一书一直没有好好看大致过了下也觉得只是有点点印象而已最后还是决定把代码敲一次记录一下这些学习过程。 第一例租赁影片 程序说明顾客租了哪些影片租期多长根据租赁时间和影片类型算出费用和积分。 1. 分解并重组statement()  原代码如下有3个类。  package bean; /*** 租赁订单* author Administrator*/ public class Rental {private Movie _movie ; // 影片private int _daysRented; // 租赁天数public Rental(Movie _movie, int _daysRented) {this._movie _movie;this._daysRented _daysRented;}public Movie getMovie() {return _movie;}public int getDaysRented() {return _daysRented;}}package bean;/*** 影片* author Administrator*/ public class Movie {public static final int CHILDRENS 2; // 儿童片public static final int REGULAR 0; // 普通片public static final int NEW_RELEASE 1; // 新片private String _title;private int _priceCode;public Movie(String _title, int _priceCode) {this._title _title;this._priceCode _priceCode;}public int getPriceCode() {return _priceCode;}public void setPriceCode(int _priceCode) {this._priceCode _priceCode;}public String getTitle() {return _title;}}package bean;import java.util.Enumeration; import java.util.Vector;/*** 顾客* author Administrator*/ public class Customer {private String _name; // 顾客名字private Vector _rentals new Vector(); // 租赁订单数组public Customer(String name) {super();this._name name;}public void addRental(Rental arg){_rentals.addElement(arg);}public String getName() {return _name;}/*** 生成订单* return*/public String statement(){double totalAmount 0; // 总租金 int frequentRenterPoints 0; // 积分Enumeration rentals _rentals.elements();String result Rental Record for getName() \n;while( rentals.hasMoreElements()){double thisAmount 0; // 租金Rental each (Rental)rentals.nextElement();// 确定每种片子的租金switch(each.getMovie().getPriceCode()){case Movie.REGULAR:thisAmount 2;if(each.getDaysRented() 2 ){thisAmount (each.getDaysRented() - 2) * 1.5;}break;case Movie.NEW_RELEASE:thisAmount each.getDaysRented()*3;break;case Movie.CHILDRENS:thisAmount 1.5;if(each.getDaysRented() 3 ){thisAmount (each.getDaysRented() - 3) * 1.5;}break;}// 增加积分frequentRenterPoints ;// 新片租赁时间达2天 积分1 if(each.getMovie().getPriceCode() Movie.NEW_RELEASE each.getDaysRented() 1){frequentRenterPoints ;}// 本次租赁记录说明result \teach.getMovie().getTitle()\t String.valueOf(thisAmount)\n;totalAmount thislAmount;}// 页脚result Amount owed is String.valueOf(totalAmount)\n;result You eared String.valueOf(frequentRenterPoints)frequent renter points;return result;}}1.1 抽离switch 语句到独立方法 1.1.1 Customer类改为 package bean;import java.util.Enumeration; import java.util.Vector;/*** 顾客* author Administrator*/ public class Customer {private String _name; // 顾客名字private Vector _rentals new Vector(); // 租赁订单数组public Customer(String name) {super();this._name name;}public void addRental(Rental arg){_rentals.addElement(arg);}public String getName() {return _name;}/*** 生成订单* return*/public String statement(){double totalAmount 0; // 总租金 int frequentRenterPoints 0; // 积分Enumeration rentals _rentals.elements();String result Rental Record for getName() \n;while( rentals.hasMoreElements()){double thisAmount 0; // 租金Rental each (Rental)rentals.nextElement();thisAmount amountFor(each); // 计算租金// 增加积分frequentRenterPoints ; // 新片租赁时间达2天 积分1 if(each.getMovie().getPriceCode() Movie.NEW_RELEASE each.getDaysRented() 1){frequentRenterPoints ;}// 本次租赁记录说明result \teach.getMovie().getTitle()\t String.valueOf(thisAmount)\n;totalAmount thisAmount;}// 页脚result Amount owed is String.valueOf(totalAmount)\n;result You eared String.valueOf(frequentRenterPoints)frequent renter points;return result;}// 计算租金private int amountFor(Rental each){int thisAmount 0; // 租金// 确定每种片子的租金switch(each.getMovie().getPriceCode()){case Movie.REGULAR:thisAmount 2;if(each.getDaysRented() 2 ){thisAmount (each.getDaysRented() - 2) * 1.5;}break;case Movie.NEW_RELEASE:thisAmount each.getDaysRented()*3;break;case Movie.CHILDRENS:thisAmount 1.5;if(each.getDaysRented() 3 ){thisAmount (each.getDaysRented() - 3) * 1.5;}break;}return thisAmount;}}1.1.2 注意 amountFor 方法的返回类型应该是double类型 Customer类改为 package bean;import java.util.Enumeration; import java.util.Vector;/*** 顾客* author Administrator*/ public class Customer {private String _name; // 顾客名字private Vector _rentals new Vector(); // 租赁订单数组public Customer(String name) {super();this._name name;}public void addRental(Rental arg){_rentals.addElement(arg);}public String getName() {return _name;}/*** 生成订单* return*/public String statement(){double totalAmount 0; // 总租金 int frequentRenterPoints 0; // 积分Enumeration rentals _rentals.elements();String result Rental Record for getName() \n;while( rentals.hasMoreElements()){double thisAmount 0; // 租金Rental each (Rental)rentals.nextElement();thisAmount amountFor(each); // 计算租金// 增加积分frequentRenterPoints ; // 新片租赁时间达2天 积分1 if(each.getMovie().getPriceCode() Movie.NEW_RELEASE each.getDaysRented() 1){frequentRenterPoints ;}// 本次租赁记录说明result \teach.getMovie().getTitle()\t String.valueOf(thisAmount)\n;totalAmount thisAmount;}// 页脚result Amount owed is String.valueOf(totalAmount)\n;result You eared String.valueOf(frequentRenterPoints)frequent renter points;return result;}// 计算租金private double amountFor(Rental each){double thisAmount 0; // 租金// 确定每种片子的租金switch(each.getMovie().getPriceCode()){case Movie.REGULAR:thisAmount 2;if(each.getDaysRented() 2 ){thisAmount (each.getDaysRented() - 2) * 1.5;}break;case Movie.NEW_RELEASE:thisAmount each.getDaysRented()*3;break;case Movie.CHILDRENS:thisAmount 1.5;if(each.getDaysRented() 3 ){thisAmount (each.getDaysRented() - 3) * 1.5;}break;}return thisAmount;}}1.3  变量名称应该见名知意好的代码应该清楚的表达出自己的功能变量名称是代码清晰的一个关键。 amountFor方法中局部变量 thisAmount , 参数each 要改名。 改变量名 , Customer类改为 package bean;import java.util.Enumeration; import java.util.Vector;/*** 顾客* author Administrator*/ public class Customer {private String _name; // 顾客名字private Vector _rentals new Vector(); // 租赁订单数组public Customer(String name) {super();this._name name;}public void addRental(Rental arg){_rentals.addElement(arg);}public String getName() {return _name;}/*** 生成订单* return*/public String statement(){double totalAmount 0; // 总租金 int frequentRenterPoints 0; // 积分Enumeration rentals _rentals.elements();String result Rental Record for getName() \n;while( rentals.hasMoreElements()){double thisAmount 0; // 租金Rental each (Rental)rentals.nextElement();thisAmount amountFor(each); // 计算租金// 增加积分frequentRenterPoints ; // 新片租赁时间达2天 积分1 if(each.getMovie().getPriceCode() Movie.NEW_RELEASE each.getDaysRented() 1){frequentRenterPoints ;}// 本次租赁记录说明result \teach.getMovie().getTitle()\t String.valueOf(thisAmount)\n;totalAmount thisAmount;}// 页脚result Amount owed is String.valueOf(totalAmount)\n;result You eared String.valueOf(frequentRenterPoints)frequent renter points;return result;}// 计算租金private double amountFor(Rental aRental){double result 0; // 租金// 确定每种片子的租金switch(aRental.getMovie().getPriceCode()){case Movie.REGULAR:result 2;if(aRental.getDaysRented() 2 ){result (aRental.getDaysRented() - 2) * 1.5;}break;case Movie.NEW_RELEASE:result aRental.getDaysRented()*3;break;case Movie.CHILDRENS:result 1.5;if(aRental.getDaysRented() 3 ){result (aRental.getDaysRented() - 3) * 1.5;}break;}return result;}}1.4 函数应该放在它所使用的数据所属的对象中 顾客租金的计算应该移动到Rental类中去。 Rental 类改为 :  计算租金方法去掉参数并改名 package bean; /*** 租赁订单* author Administrator*/ public class Rental {private Movie _movie ; // 影片private int _daysRented; // 租赁天数public Rental(Movie _movie, int _daysRented) {this._movie _movie;this._daysRented _daysRented;}public Movie getMovie() {return _movie;}public int getDaysRented() {return _daysRented;}// 计算租金double getCharge(){double result 0; // 租金// 确定每种片子的租金switch(getMovie().getPriceCode()){case Movie.REGULAR:result 2;if(getDaysRented() 2 ){result (getDaysRented() - 2) * 1.5;}break;case Movie.NEW_RELEASE:result getDaysRented()*3;break;case Movie.CHILDRENS:result 1.5;if(getDaysRented() 3 ){result (getDaysRented() - 3) * 1.5;}break;}return result;}}原顾客类中amountFor方法直接调用计算租金方法即可Customer 类改为 package bean;import java.util.Enumeration; import java.util.Vector;/*** 顾客* author Administrator*/ public class Customer {private String _name; // 顾客名字private Vector _rentals new Vector(); // 租赁订单数组public Customer(String name) {super();this._name name;}public void addRental(Rental arg){_rentals.addElement(arg);}public String getName() {return _name;}/*** 生成订单* return*/public String statement(){double totalAmount 0; // 总租金 int frequentRenterPoints 0; // 积分Enumeration rentals _rentals.elements();String result Rental Record for getName() \n;while( rentals.hasMoreElements()){double thisAmount 0; // 租金Rental each (Rental)rentals.nextElement();thisAmount amountFor(each); // 计算租金// 增加积分frequentRenterPoints ; // 新片租赁时间达2天 积分1 if(each.getMovie().getPriceCode() Movie.NEW_RELEASE each.getDaysRented() 1){frequentRenterPoints ;}// 本次租赁记录说明result \teach.getMovie().getTitle()\t String.valueOf(thisAmount)\n;totalAmount thisAmount;}// 页脚result Amount owed is String.valueOf(totalAmount)\n;result You eared String.valueOf(frequentRenterPoints)frequent renter points;return result;}// 计算租金private double amountFor(Rental aRental){return aRental.getCharge();}}1.5  去掉旧函数amountFor直接调用新函数getCharge。Customer类改为 :  package bean;import java.util.Enumeration; import java.util.Vector;/*** 顾客* author Administrator*/ public class Customer {private String _name; // 顾客名字private Vector _rentals new Vector(); // 租赁订单数组public Customer(String name) {super();this._name name;}public void addRental(Rental arg){_rentals.addElement(arg);}public String getName() {return _name;}/*** 生成订单* return*/public String statement(){double totalAmount 0; // 总租金 int frequentRenterPoints 0; // 积分Enumeration rentals _rentals.elements();String result Rental Record for getName() \n;while( rentals.hasMoreElements()){double thisAmount 0; // 租金Rental each (Rental)rentals.nextElement();thisAmount each.getCharge(); // 计算租金// 增加积分frequentRenterPoints ; // 新片租赁时间达2天 积分1 if(each.getMovie().getPriceCode() Movie.NEW_RELEASE each.getDaysRented() 1){frequentRenterPoints ;}// 本次租赁记录说明result \teach.getMovie().getTitle()\t String.valueOf(thisAmount)\n;totalAmount thisAmount;}// 页脚result Amount owed is String.valueOf(totalAmount)\n;result You eared String.valueOf(frequentRenterPoints)frequent renter points;return result;}}1.6  尽量去掉临时变量临时变量会导致大量参数的传递没有必要。 thisAmount 是个多余的临时变量直接去掉。 Customer 改为 package bean;import java.util.Enumeration; import java.util.Vector;/*** 顾客* author Administrator*/ public class Customer {private String _name; // 顾客名字private Vector _rentals new Vector(); // 租赁订单数组public Customer(String name) {super();this._name name;}public void addRental(Rental arg){_rentals.addElement(arg);}public String getName() {return _name;}/*** 生成订单* return*/public String statement(){double totalAmount 0; // 总租金 int frequentRenterPoints 0; // 积分Enumeration rentals _rentals.elements();String result Rental Record for getName() \n;while( rentals.hasMoreElements()){Rental each (Rental)rentals.nextElement();// 增加积分frequentRenterPoints ; // 新片租赁时间达2天 积分1 if(each.getMovie().getPriceCode() Movie.NEW_RELEASE each.getDaysRented() 1){frequentRenterPoints ;}// 本次租赁记录说明result \teach.getMovie().getTitle()\t String.valueOf(each.getCharge())\n;totalAmount each.getCharge();}// 页脚result Amount owed is String.valueOf(totalAmount)\n;result You eared String.valueOf(frequentRenterPoints)frequent renter points;return result;}}1.7 把积分计算方法放到Rental类中写为常客积分计算方法getFrequentRenterPoints并改变Customer类中积分计算代码 。 Rental类改为 package bean; /*** 租赁订单* author Administrator*/ public class Rental {private Movie _movie ; // 影片private int _daysRented; // 租赁天数public Rental(Movie _movie, int _daysRented) {this._movie _movie;this._daysRented _daysRented;}public Movie getMovie() {return _movie;}public int getDaysRented() {return _daysRented;}// 计算租金double getCharge(){double result 0; // 租金// 确定每种片子的租金switch(getMovie().getPriceCode()){case Movie.REGULAR:result 2;if(getDaysRented() 2 ){result (getDaysRented() - 2) * 1.5;}break;case Movie.NEW_RELEASE:result getDaysRented()*3;break;case Movie.CHILDRENS:result 1.5;if(getDaysRented() 3 ){result (getDaysRented() - 3) * 1.5;}break;}return result;}// 常客积分计算int getFrequentRenterPoints(){// 增加积分int frequentRenterPoints 0;frequentRenterPoints; // 新片租赁时间达2天 积分1 if(getMovie().getPriceCode() Movie.NEW_RELEASE getDaysRented() 1){frequentRenterPoints ;}return frequentRenterPoints;}}Customer类中statement方法改为 /*** 生成订单* return*/public String statement(){double totalAmount 0; // 总租金 int frequentRenterPoints 0; // 积分Enumeration rentals _rentals.elements();String result Rental Record for getName() \n;while( rentals.hasMoreElements()){Rental each (Rental)rentals.nextElement();// 积分frequentRenterPoints each.getFrequentRenterPoints();// 本次租赁记录说明result \teach.getMovie().getTitle()\t String.valueOf(each.getCharge())\n;totalAmount each.getCharge();}// 页脚result Amount owed is String.valueOf(totalAmount)\n;result You eared String.valueOf(frequentRenterPoints)frequent renter points;return result;} 1.8 去掉statement方法中的2个临时变量totalAmount 和 frequentRenterPoints 。抽离出对应计算方法并调用。 Customer 类改为 package bean;import java.util.Enumeration; import java.util.Vector;/*** 顾客* author Administrator*/ public class Customer {private String _name; // 顾客名字private Vector _rentals new Vector(); // 租赁订单数组public Customer(String name) {super();this._name name;}public void addRental(Rental arg){_rentals.addElement(arg);}public String getName() {return _name;}/*** 生成订单* return*/public String statement(){Enumeration rentals _rentals.elements();String result Rental Record for getName() \n;while( rentals.hasMoreElements()){Rental each (Rental)rentals.nextElement();// 本次租赁记录说明result \teach.getMovie().getTitle()\t String.valueOf(each.getCharge())\n;}// 页脚result Amount owed is String.valueOf(getTotalCharge())\n;result You eared String.valueOf(getTotalFrequentRenterPoints())frequent renter points;return result;}// 计算总积分private int getTotalFrequentRenterPoints(){int result 0;Enumeration rentals _rentals.elements();while(rentals.hasMoreElements()){Rental each (Rental)rentals.nextElement();result each.getFrequentRenterPoints();}return result;}// 计算总租金private double getTotalCharge(){double result 0;Enumeration rentals _rentals.elements();while(rentals.hasMoreElements()){Rental each (Rental)rentals.nextElement();result each.getCharge();}return result;}}本步改写作用说明 这里虽然从1个循环变为3个但是多了2个查询函数。 1)  使得Customer 类中的任何代码都可以调用这些查询函数。 2)  若系统其它部分需要这些信息也可以轻松地将查询函数加入 Customer 类接口。而若没有这些查询波函数其它函数就必须了解  Rental 类并自行建立循环。 1.9 加功能打印凭条。 statement 方法改为 htmlStatement /*** 生成订单(打印凭条)* return*/public String htmlStatement(){Enumeration rentals _rentals.elements();String result PH1Rentals for EM getName() /EM/H1/P\n;while( rentals.hasMoreElements()){Rental each (Rental)rentals.nextElement();// 本次租赁记录说明result each.getMovie().getTitle() String.valueOf(each.getCharge())BR\n;}// 页脚result PYou owe EM String.valueOf(getTotalCharge())/EM/P\n;result P on this rental you earned EM String.valueOf(getTotalFrequentRenterPoints())/EM frequent renter points /P;return result;} 未完见   重构-改善既有代码的设计-第1例租赁影片2
http://www.zqtcl.cn/news/554142/

相关文章:

  • 网站模板上传工具网站报名照片怎么做
  • 做网站如何备案东城做企业网站多少钱
  • 建设手机网站的目的广告制作行业发展前景
  • 手工艺品网站建设目的长春有哪些网络设计公司
  • 重庆建设工程招标网站淮南58同城网
  • 有域名在本机上做网站psd素材
  • 做拍拍拍拍网站网站宣传的劣势
  • 建设银行官方网站诚聘英才亚马逊店铺出售网站
  • 佛山房地产网站建设万网域名查询接口
  • 新建的网站必须要备案吗优购物网
  • 陕西省住房和城乡建设厅官方网站智能网站建设制作
  • 英语故事网站建设镇江大港信息港
  • 接单做一个网站多少钱商河网站建设
  • 网站建设s南昌网站建设服务
  • 免费的素材网站有哪些重庆网页设计公司排名
  • 内网网站建设汇报即商通网站建设推广
  • 企业建站系统是什么学校的网站怎么做的
  • 哪个大学的网站做的最好看网页制作教材素材
  • 南里商濮阳网站建设福田附件网站建设公司
  • 监控性能网站模板网页设计公司找哪家
  • 校园网站建设教程安卓小程序开发入门
  • 找人做网站需要注意什么seo工作
  • 做外贸有哪些好的网站有哪些内容响应式网站wordpress摄影
  • iis 7.0 搭建网站做门户网站公司
  • 织梦网站模版官网霸屏seo服务
  • 人工智能的网站开发app流程
  • 国外做贸易网站淄川区建设局网站
  • 做网站第一步要干啥wordpress 金币插件
  • 合肥如何做百度的网站网络服务主要包括哪几项
  • 影视网站的设计与实现网站搭建培训