博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
容错性
阅读量:5980 次
发布时间:2019-06-20

本文共 1589 字,大约阅读时间需要 5 分钟。

程序的容错性很重要.

容错性越好,兼容性就越好.比如浏览器解析css时就有很灵活的容错性.当遇到错误的css样式时就直接忽略,而不会报错.忽略错误的样式,就是容错.有什么好处呢?体现在浏览器的兼容性上.比如border-radius是HTML5的属性,IE9支持,但是IE8支持.可是我们再IE8中运行时依然正常,而不会因为报错导致不解析网页样式.

 

中也有容错性.比如我之前写了一个方法

Java代码  
  1. @Deprecated  
  2.     public static String getFullContent(File file) {  
  3.         BufferedReader reader = null;  
  4.         if (!file.exists()) {  
  5.             System.out.println("getFullContent: file(" + file.getAbsolutePath()  
  6.                     + ") does not exist.");  
  7.             return null;  
  8.         }  
  9.           
  10.         try {  
  11.             reader = getBufferReaderFromFile(file);  
  12.             return getFullContent(reader);  
  13.         } catch (FileNotFoundException e1) {  
  14.             e1.printStackTrace();  
  15.         } finally {  
  16.             if (null != reader) {  
  17.                 try {  
  18.                     reader.close();  
  19.                 } catch (IOException e) {  
  20.                     e.printStackTrace();  
  21.                 }  
  22.             }  
  23.         }  
  24.         return null;  
  25.     }  

 该方法只有一个参数,但是后来我发现应该增加一个参数编码,于是修改上述方法为:

Java代码  
  1. public static String getFullContent(File file, String charset) {  
  2.         BufferedReader reader = null;  
  3.         if (!file.exists()) {  
  4.             System.out.println("getFullContent: file(" + file.getAbsolutePath()  
  5.                     + ") does not exist.");  
  6.             return null;  
  7.         }  
  8.         if (charset == null) {  
  9.             charset = SystemHWUtil.CHARSET_ISO88591;  
  10.         }  
  11.         try {  
  12.             reader = getBufferReaderFromFile(file, charset);  
  13.             return getFullContent(reader);  
  14.         } catch (FileNotFoundException e1) {  
  15.             e1.printStackTrace();  
  16.         } finally {  
  17.             if (null != reader) {  
  18.                 try {  
  19.                     reader.close();  
  20.                 } catch (IOException e) {  
  21.                     e.printStackTrace();  
  22.                 }  
  23.             }  
  24.         }  
  25.         return null;  
  26.     }  

 修改完了就OK 了吗?

 

因为这是一个通用的工具类,所以只要用到这个方法的地方都报错了.为什么?因为方法签名改变了!!!

虽然我方法的功能增强了,可是我破坏了兼容性.

后来我增加一个方法:

Java代码  
  1. public static String getFullContent(File file) {  
  2.         return getFullContent(file, null);  
  3.     }  

 就好了.

 

所以我就给自己定了一个规矩:以后增加一个方法的参数时,一定要保留原来的签名.

比如之前写了方法A(x,y)

后来扩充了功能,变为:A(x,y,z),那么我同时肯定会增加一个方法

A(x,y)

{

   A(x,y,null)

}

 

 

转载地址:http://hhlox.baihongyu.com/

你可能感兴趣的文章
javascript 操作DOM元素样式
查看>>
HBase 笔记3
查看>>
【Linux】Linux 在线安装yum
查看>>
Atom 编辑器系列视频课程
查看>>
[原][osgearth]osgearthviewer读取earth文件,代码解析(earth文件读取的一帧)
查看>>
mybatis update返回值的意义
查看>>
expdp 详解及实例
查看>>
通过IP判断登录地址
查看>>
深入浅出JavaScript (五) 详解Document.write()方法
查看>>
Beta冲刺——day6
查看>>
在一个程序中调用另一个程序并且传输数据到选择屏幕执行这个程序
查看>>
代码生成工具Database2Sharp中增加视图的代码生成以及主从表界面生成功能
查看>>
关于在VS2005中编写DLL遇到 C4251 警告的解决办法
查看>>
提高信息安全意识对网络勒索病毒说不
查看>>
我的友情链接
查看>>
IDE---Python IDE之Eric5在window下的安装
查看>>
基本安装lnmp环境
查看>>
logstash消费阿里云kafka消息
查看>>
Oracle——条件控制语句
查看>>
day-6 and day-7:面向对象
查看>>