技术开发 频道

J2ee 开发编程规范



    十五、 对象创建是要付出代价的
    重复的使用一个对象,而不是在每次需要的时候都去创建一个等价的新对象。对象创建是要付出内存消耗和时间代价。特别是当一个对象创建需要初始化外部环境时,比如数据库连接,ejb查找等。 
String s = new String("hello");//千万别要这样做比 String s = "hello";
    要付出更多的开销。如果第一种形式频繁的使用,那么会创建出成千上万个String变量.
    而第二种形式则不会,String s = "hello";只使用一个String实例。
    1. 应当重用一个已有的对象时,就不要试着去创建新的对象
    看看下面的方法: 
public CounterDAO getCounterDao() { CounterDAO counterDao = (CounterDAO)this.getDaoFactory()
.getDAOByRegionCode(COUNTER_DAO_BEAN_NAME,
"00");//读中心数据库 return counterDao; }
    这是要根据不同的机构代码去访问不同的数据库,再获得一个DAO对象,每次都会创建一个新的CounterDAO对象

    下面的方法会多次调用CounterDAO的方法
public void updateCounterRelation(CounterDTO counter) throws BusinessException { this.getCounterDao().removeCounterRelation(counter);//删除此柜面所有子柜面信息 List subCounterList = counter.getSubCounterList(); //本柜面的子柜面列表 for(int i = 0; subCounterList != null && i < subCounterList.size();i++) { CounterDTO subCounter = (CounterDTO)subCounterList.get(i); subCounter.setSuperCounterNo(counter.getCounterNo()); this.getCounterDao().updateCounterRelation(subCounter); } }
    特别是在this.getCounterDao().updateCounterRelation(subCounter)这个语句,需要去更新每一个柜员的关系,那么这样就会创建很多个CounterDao对象,而创建CounterDao对象又会每次都去连接数据库,花费大量的内存空间和连接时间。
重构后的代码
private CounterDAO counterDao; public CounterDAO getCounterDao() { if(counterDao == null) counterDao = (CounterDAO)this.getDaoFactory().
getDAOByRegionCode(COUNTER_DAO_BEAN_NAME,
"00");//读中心数据库 return counterDao; }
    这样不管以后调用这个方法多少次,而只去设置数据库一次,不管使用多少次都只有一个CounterDAO对象创建,更节省内存开销和时间。提升系统性能。
    2. 在真实需要的时候才去创建对象
List list = new ArrayList(); if (relationCounterNoString != null) { ……. List.add(); }
    上面的例子是从页面读取一个带逗号分隔符的字符串,然后把字符串分切为一个list.上面的例子不管要分隔的字符串是否为空,真是返回一个不为空的List,里面没有包括任何数据项的。白白的浪费空间
List list =null; if (relationCounterNoString != null) { list = new ArrayList(); ……….. list.add(); }
    这样的代码会更好一些,总之记住,对象创建是有代价的,只有在真正的需要它的时候才去创建它。

    十八、 使用日志系统
    日志系统提供帮助我们跟踪系统执行情况的功能。日志最重要的是能够帮助我们进行系统调试。在实际的项目中我们不得不考虑下面的问题:
    1. 调试是经常的,而且是可变的。调试会话是短暂的,没有任何系统能够记下我们的调试内容,今天的问题,在明天可能还是问题。
    2. 调试是十分烦琐和费时的,通常搜索一个日志记录要比去遍历代码来得容易。
    3. 记录日志可以让我们在一开始就要思考程序的运行情况,可以管控程序的一些隐患错误。 
    4. 没有任何调试工具可以帮我们良好的解决调试的问题,特别是在分布式系统中。
    下面是一些记录日志规范:
    1. 绝不要使用System.out.print()语句来记录日志,控制台的输出无法灵活配置。比如说我们想关闭某个类的日志输出。在一些应用程序器中,控制台大量的输出是严重影响性能的。
    2. 单元测试能够指出一个类出现了什么问题,但是不一定能详细的指出问题出在哪里。日志可以给我们提供更详细的信息,获得更有用的帮助。
    3. 代码生成的日志一定是要可以配置的,否则不能使用于生产环境。
    4. 为不同的日志消息选择不同的级别。
    5. 在输出日志时先进行级别判断
    例如:if(logger.isDebugable()){
logger.debug(“”); }


累了,先写这么多,接下来想写写,测试专题,异常处理专题,事务处理专题!

0
相关文章