코드를 좀 더 아름답게 만들어주세요.

1. 변수 집중:
우리는 클래스를 쓸 때 일반적으로 변수를 클래스의 맨 앞에 쓰고 뒤에 방법을 쓴다. 이렇게 쓰면 코드 읽기에 편리하다.같은 이치의 문법도 마찬가지다. 우리는 방법을 쓸 때 방법에 사용된 변수를 모두 방법의 맨 앞에 집중적으로 설명하거나 값을 부여해야 한다.
구조화된 프로그래밍 사고방식으로 어디에 변수를 쓰고 어디에 쓰느냐가 아니라
   :
               StockChange change=new StockChange();
		DataBaseConnection h2Conn=null;
		Logger.info("         ");
		try {
			String priceSumsql="select sum(t.n_price)priceSum from FACT_FUND_HLDDETAIL t where t.s_type='E' and t.f_code='"+fundCode+"'";
			String priceUpdatesql="update FACT_FUND_HLDDETAIL a set a.n_price=(select t.n_amount*f.f_newest_price n_price from FACT_FUND_HLDDETAIL t, fu_stock_market f where t.s_symbol=f.vc_symbol and a.s_symbol=t.s_symbol) where a.f_code='"+fundCode+"'";
			 h2Conn = new DataBaseConnection(DataBaseConnection.getH2Connection());
			//     
		    h2Conn.setResultSet(h2Conn.getStmt().executeQuery(priceSumsql));
		    String pricePreSum="";
		    String priceLastSum="";
   :
DataBaseConnection h2Conn = null;
        String pricePreSum = "";
        String costPreSum = "";
        String priceLastSum = "";
        String costLastSum = "";
        ......

 
2. 상수 집중:
때때로 프로그램에서 우리는 유사한 문자열이나 다른 유형이 여러 가지 방법에 흩어져 있다. 특히 sql문장, sql문장은 사실 우리는 기본적으로 변하지 않는'상량'이라고 볼 수 있기 때문에 우리는 이러한 흩어진 sql를 클래스 구성원 변수의 형식으로 클래스의 맨 앞에 집중적으로 쓸 수 있다.이렇게 처리하면 코드 구조가 더욱 뚜렷하고 보기 편리할 뿐만 아니라 집중적으로 수정하기도 편리하며 모든 방법은 긴 문자열의 ql로 인해 매우 보기 흉하지 않을 것이다.
   :
public class ValuationBo {
	private ErrorsDeal errors;
	
	/**
	 *          
	 * @param fundCode
	 * @return
	 */
	public StockChange updateStockPrice(String fundCode){
		StockChange change=new StockChange();
		DataBaseConnection h2Conn=null;
		try {
			String priceSumsql="select sum(t.n_price)priceSum from FACT_FUND_HLDDETAIL t where t.s_type='E' and t.f_code='"+fundCode+"'";
			String priceUpdatesql="update FACT_FUND_HLDDETAIL a set a.n_price=(select t.n_amount*f.f_newest_price n_price from FACT_FUND_HLDDETAIL t, fu_stock_market f where t.s_symbol=f.vc_symbol and a.s_symbol=t.s_symbol) where a.f_code='"+fundCode+"'";
			 h2Conn = new DataBaseConnection(DataBaseConnection.getH2Connection());
			//     
		    h2Conn.setResultSet(h2Conn.getStmt().executeQuery(priceSumsql));
		    String pricePreSum="";
		    String priceLastSum="";
		    while(h2Conn.getResultSet().next()){
		    	pricePreSum=h2Conn.getResultSet().getString(1);
		    }
			
			//    
			h2Conn.getStmt().executeUpdate(priceUpdatesql);
			//     
			h2Conn.setResultSet(h2Conn.getStmt().executeQuery(priceSumsql));
			while(h2Conn.getResultSet().next()){
				priceLastSum=h2Conn.getResultSet().getString(1);
			}
			if(pricePreSum!=null&&!"".equals(pricePreSum)){
				change.setPrePrice(Double.parseDouble(pricePreSum));
			}
			if(priceLastSum!=null&&!"".equals(priceLastSum)){
				change.setLastPrice(Double.parseDouble(priceLastSum));
			}
		} catch (Exception e) {
			Logger.error("           :"+e.getMessage());
			errors.insertFutursErrors("1","           ",e.getMessage(),new Date());
		}finally{
			 DataBaseConnection.closeConnection(h2Conn.getConn(), h2Conn.getStmt(), null, h2Conn.getResultSet());
		}
		return change;
	}
	
	/**
	 *        
	 * @param fundCode
	 * @return
	 */
	public StockChange updateFutures(String fundCode){
		StockChange change=new StockChange();
		DataBaseConnection h2Conn=null;
		String pricePreSum="";
		String costPreSum="";
		String priceLastSum="";
		String costLastSum="";
		try {
			String priceSumsql="select sum(t.n_price)priceSum,sum(t.n_cost)costSum from FACT_FUND_HLDDETAIL t where t.s_type='E' and t.f_code='"+fundCode+"'";
			String deletesql="delete FACT_FUND_HLDDETAIL t where  t.s_type='E' and t.f_code='"+fundCode+"'";
			String futruesInsertsql="insert into FACT_FUND_HLDDETAIL (t_date,f_code, s_symbol,s_subcode,s_type, s_type_assist,  n_price, n_cost,n_amount,s_exchange,VC_ISRB201,N_INTEREST,N_YDISCOUNT) select sysdate,t.vc_futures_code,t.vc_exchange_code,'','FU',decode (t.vc_bs_flag,'1' ,'B','2','S'),t.f_newest_price*decode (t.vc_bs_flag,'1', t.f_buy_position,'2',t.f_sale_position),'-1','-1','-1','-1','-1','-1' From Fu_hold_detail t where  t.vc_exchange_code!=''";
			 h2Conn = new DataBaseConnection(DataBaseConnection.getH2Connection());
			//     
		    h2Conn.setResultSet(h2Conn.getStmt().executeQuery(priceSumsql));
		    while(h2Conn.getResultSet().next()){
		    	 pricePreSum=h2Conn.getResultSet().getString(1);
				 costPreSum=h2Conn.getResultSet().getString(2);
		    }
			
			//    
			h2Conn.getStmt().executeUpdate(deletesql);
			//      
			h2Conn.getStmt().executeUpdate(futruesInsertsql);
			//     
			h2Conn.setResultSet(h2Conn.getStmt().executeQuery(priceSumsql));
			while(h2Conn.getResultSet().next()){
				 priceLastSum=h2Conn.getResultSet().getString(1);
			     costLastSum=h2Conn.getResultSet().getString(2);
			}
			if(pricePreSum!=null&&!"".equals(pricePreSum)){
				change.setPrePrice(Double.parseDouble(pricePreSum));
			}
			if(costPreSum!=null&&!"".equals(costPreSum)){
				change.setPreCost(Double.parseDouble(costPreSum));
			}
			if(priceLastSum!=null&&!"".equals(priceLastSum)){
				change.setLastPrice(Double.parseDouble(priceLastSum));
			}
			if(costLastSum!=null&&!"".equals(costLastSum)){
				change.setLastCost(Double.parseDouble(costLastSum));
			}
		} catch (Exception e) {
			Logger.error("         :"+e.getMessage());
			errors.insertFutursErrors("1","         ",e.getMessage(),new Date());
		}finally{
			 DataBaseConnection.closeConnection(h2Conn.getConn(), h2Conn.getStmt(), null, h2Conn.getResultSet());
		}
		return change;
	}

	public ErrorsDeal getErrors() {
		return errors;
	}

	public void setErrors(ErrorsDeal errors) {
		this.errors = errors;
	}
       .......
}
  :
    private static final String deleteContractSql = "delete  from fu_futures_contract";
    private static final String insertContractSql = new StringBuilder().append("insert into  fu_futures_contract(Vc_exchange_code,").append("Vc_exchange_name,Vc_futures_code, Vc_futures_name,").append("F_hand_number,F_speculate,F_maintain,").append("D_last_day,F_max_hand,F_max_position,Vc_kind_code,").append("Vc_kind_name,F_min_unit)").append("values(?,?,?,?,?,?,?,?,?,?,?,?,?)").toString();
    private static final String deleteMarginRatioSql = "delete from fu_marginrate_ratio";
    private static final String insertMarginRatioSql = new StringBuilder().append("insert into  fu_marginrate_ratio(Vc_fund_code,").append("Vc_futures_code,Vc_user_name,Vc_buy_marginrate_money,").append("Vc_sale_marginrate_money,Vc_buy_marginrate_hands,").append("Vc_sale_marginrate_hands,Vc_buy_maintain_money,").append("Vc_sale_maintain_money,Vc_buy_maintain_hands,Vc_sale_maintain_hands)").append("values(?,?,?,?,?,?,?,?,?,?,?)").toString();
  ..........

좋은 웹페이지 즐겨찾기