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以类成员变量的形式都集中写在类的最前面。这样处理代码结构会更加清晰,便于查看的同时也便于集中修改,每个方法不也不会因为一些长的字符串sql而显得极其难看。
修改前: 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(); ..........
相关推荐
界面的色彩搭配、布局规划和交互逻辑都经过精心设计,使得复杂的人事管理操作变得简单直观。 关于系统的访问安全,开发者在“使用说明.txt”中加入了密码保护机制。用户在初次使用系统之前,必须通过验证,以防止未...
### JavaScript 代码也可以变得优美的实现方法 #### 一、简化代码 JavaScript 作为一种广泛使用的编程语言,在实际开发过程中可以通过一些技巧来使代码更加简洁、高效。这些技巧不仅能够提高代码的可读性和维护性...
重构的重要性在于,随着时间的推移,代码往往会变得复杂且难以理解,这将导致维护成本增加,bug难以定位,甚至可能导致项目停滞不前。通过重构,我们可以将复杂性分解,使代码模块化,降低耦合度,从而提高代码的可...
HTML5是一种先进的网页开发语言,它为网页开发者提供了丰富的功能和强大的工具,使得创建交互式、动态和响应式的网页变得更加容易。在这个主题中,我们关注的是"12个精美实用的html5消息提示框代码",这些代码可以...
虽然与软件本身的功能无关,但可能是在形容使用这款工具带来的轻松和愉快的体验,仿佛如置身于风景优美的环境中,让复杂的编程工作变得简单而愉快。 【动软代码生成器2.5】的核心功能包括: 1. **模板定制**:用户...
良好的代码结构和风格可以让未来的维护工作变得更加容易。 2. **节省时间和资源**:逻辑清晰、结构合理的代码能够帮助开发者更快地理解和定位问题,从而节省大量的调试时间。 3. **提升职业素养**:编写高质量的代码...
7. 代码重构:当代码变得冗余或难以理解时,重构可以帮助改进结构,而不改变其外在行为。重构是持续进行的过程,能保持代码的整洁和健康。 8. 代码审查:通过同行评审,可以发现潜在的问题,提高团队成员之间的知识...
这个组件使得在Vue应用中展示格式优美、易于阅读的代码片段变得简单易行。Highlight.js是一个强大的、多语言的代码高亮库,支持超过180种编程语言和标记语言的语法高亮。 Vue.js是目前非常流行的一前端JavaScript...
10. 持续集成与自动化:为了确保代码质量,持续集成和自动化测试工具的使用变得越来越重要。书中可能涵盖了这些工具的使用和最佳实践。 《代码之美》这本书通过实例和经验分享,帮助读者理解并实践编写优美代码的...
我们有许多源代码公开的操作系统,可供随时下载和阅读,看上去好像让实现一个供自己把玩的微型操作系统变得容易很多,但事实往往不尽人意,因为这些代码动辄上万甚至几十几百万行,而且细节之间经常互相关联,要...
我们有许多源代码公开的操作系统,可供随时下载和阅读,看上去好像让实现一个供自己把玩的微型操作系统变得容易很多,但事实往往不尽人意,因为这些代码动辄上万甚至几十几百万行,而且细节之间经常互相关联,要...
Mach3是一款广泛应用于CNC(计算机数字控制)雕刻机的运动控制软件,以其稳定性、灵活性和可定制性而受到用户的喜爱。...通过定制皮肤,用户可以打造出既美观又实用的工作环境,使得繁琐的CNC操作变得更加愉快。
5. **美丽的并发**:Simon Peyton Jones使用Haskell语言来解释如何通过软件事务内存(Software Transactional Memory, STM)来简化并发编程中的复杂性,从而使并发程序变得更加优雅和可靠。 6. **以REST方式集成...
这使得数据分析和报告变得更加直观和吸引人。无论是在学术研究、商业分析还是个人项目中,PyGal 都是一个值得推荐的工具。其易于理解和使用的特性,使得即便是初学者也能快速上手,从而提升数据分析的效率和质量。
1. **提取方法**:当一个方法变得过长或者承担太多职责时,可以将其分解为多个小方法,每个小方法只负责单一任务。 2. **移动函数/变量**:如果一个函数或变量在不同类之间被频繁调用,可能需要考虑将其移到更合适...
JavaScript本身具有一些内置的功能,如`map`、`reduce`等,这些都使得函数式编程风格在JavaScript中变得越来越流行。通过使用这些功能,开发者可以更容易地处理数据结构,编写出更加简洁、优雅的代码。 #### 重要...
3. **复杂的条件表达式 (Complex Conditional)** - 当if-else结构变得难以理解时,考虑使用策略模式、状态机或者重构为更简单的逻辑结构。 4. **开关语句 (Switch Statements)** - 过多的case语句可能表示类的功能...