WEB开发网
开发学院软件开发Java 追求代码质量: 用 AOP 进行防御性编程 阅读

追求代码质量: 用 AOP 进行防御性编程

 2009-11-19 00:00:00 来源:WEB开发网   
核心提示: 为 OVal 铺好了路、为 AOP 过程做了引导之后,就可以开始使用 Java 5 标注来为代码指定简单的约束条件了,追求代码质量: 用 AOP 进行防御性编程(7),OVal 的可重用约束条件用 OVal 为方法指定前置条件必须对方法参数进行标注,相应地,该标注在方法所需的所有参数前指定,也要

为 OVal 铺好了路、为 AOP 过程做了引导之后,就可以开始使用 Java 5 标注来为代码指定简单的约束条件了。

OVal 的可重用约束条件

用 OVal 为方法指定前置条件必须对方法参数进行标注。相应地,当调用一个用 OVal 约束条件标注过的方法时,OVal 会在该方法真正执行前 验证该约束条件。

在我的例子中,我想要指定当 Class 参数的值为 null 时,buildHierarchy 方法不能被调用。OVal 通过 @NotNull 标注支持此约束条件,该标注在方法所需的所有参数前指定。也要注意,任何想要使用 OVal 约束条件的类也必须在类层次上指定 @Guarded 标注,就像我在清单 7 中所做的那样:


清单 7. OVal 约束条件
import net.sf.oval.annotations.Guarded; 
import net.sf.oval.constraints.NotNull; 
 
@Guarded 
public class HierarchyBuilder {  
 
 public static Hierarchy buildHierarchy(@NotNull Class clzz){ 
 
 Hierarchy hier = new Hierarchy(); 
 hier.setBaseClass(clzz); 
 
 Class superclass = clzz.getSuperclass(); 
 
 if(superclass != null && superclass.getName().equals("java.lang.Object")){ 
  return hier; 
 }else{    
  while((clzz.getSuperclass() != null) && 
   (!clzz.getSuperclass().getName().equals("java.lang.Object"))){ 
    clzz = clzz.getSuperclass(); 
    hier.addClass(clzz); 
  }     
  return hier; 
 } 
 }    
} 

上一页  2 3 4 5 6 7 8 9 10  下一页

Tags:追求 代码 质量

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接