WEB开发网
开发学院软件开发Java 追求代码质量: 谨防紧密耦合! 阅读

追求代码质量: 谨防紧密耦合!

 2009-11-19 00:00:00 来源:WEB开发网   
核心提示: 清单 1 展示了这种糟糕的耦合,GUI 的一个特定的按钮定义了一个 ActionListener,追求代码质量: 谨防紧密耦合!(3),它通过 getOrderStatus 调用直接与底层数据库通信,清单 1. 把 ActionListener 定义为 GUI 中的一个按钮findWidgetB

清单 1 展示了这种糟糕的耦合。GUI 的一个特定的按钮定义了一个 ActionListener,它通过 getOrderStatus 调用直接与底层数据库通信。


清单 1. 把 ActionListener 定义为 GUI 中的一个按钮
findWidgetButton.addActionListener(new ActionListener() { 
 public void actionPerformed(ActionEvent e) { 
 try { 
  String value = widgetValue.getText(); 
   if (value == null || value.equals("")) { 
    dLabel.setText("Please enter a valid widgetID"); 
   } else {    
    dLabel.setText(getOrderStatus(value)); 
   } 
 } catch (Exception ex) { 
  dLabel.setText("Widget doesn't exist in system"); 
 } 
} 
//more code 
}); 

单击 GUI 的按钮组件后,直接从数据库中检索某个特定命令的状态,如清单 2 所示:


清单 2. GUI 通过 getOrderStatus 方法直接与数据库通信
private String getOrderStatus(String value) { 
 String retValue = "Widget doesn't exist in system"; 
 Connection con = null; 
 Statement stmt = null; 
 ResultSet rs = null; 
 try {    
 con = DriverManager.getConnection("jdbc:hsqldb:hsql://127.0.0.1", "sa", ""); 
 stmt = con.createStatement(); 
 rs = stmt.executeQuery("select order.status " 
   + "from order, widget where widget.name = " 
   + "'" + value + "' " 
   + "and widget.id = order.widget_id;"); 
 StringBuffer buff = new StringBuffer(); 
 int x = 0; 
 while (rs.next()) { 
 buff.append(++x + ": "); 
 buff.append(rs.getString(1)); 
 buff.append("\n"); 
 } 
 if(buff.length() > 0){ 
  retValue = buff.toString(); 
 }else{ 
  retValue = "Widget doesn't exist in system"; 
 } 
 } catch (SQLException e1) { 
  e1.printStackTrace();    
 } finally { 
 try {rs.close();} catch (Exception e3) {} 
 try {stmt.close();} catch (Exception e4) {} 
 try {con.close();} catch (Exception e5) {} 
 } 
 return retValue; 
} 

上一页  1 2 3 4 5  下一页

Tags:追求 代码 质量

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