lishunli / nutz

Automatically exported from code.google.com/p/nutz
0 stars 0 forks source link

在Dao中减少匿名内部类的使用 #146

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
在现在的代码中,存在大量匿名内部类,如NutDao,使用了超过17个
匿名内部类,且在一
个匿名内部类里面,还包含着一个匿名内部类 :

public int updateRelation(Class<?> classOfT,String regex,final Chain chain,
final Condition condition) {
    final Links lns = new Links(null, getEntity(classOfT), regex);
    final int[] re = {0};
    Trans.exec(new Atom() {
    public void run() {
        lns.walkManyManys(new LinkWalker() {
            void walk(Link link) {
            Sql sql = sqlMaker.updateBatch(link.getRelation(), chain,
null).setCondition(condition);
            execute(sql);
            re[0] += sql.getUpdateCount();
                    }
                });
            }
        });
        return re[0];
    }

从逻辑上看,这些类是需要的,但是,是否考虑改为顶层类,或者�
��态内部类,以改善代码
质量/执行效率.

Original issue reported on code.google.com by wendal1985@gmail.com on 27 Mar 2010 at 2:41

GoogleCodeExporter commented 9 years ago
不同意这个观点:
1. 
内部类同顶层类的执行效率是没有差别的,他们的差别只是��
�字以及构造函数(多传入一个 this)
2. 比如上例,如果要把 new Atom() 和 new LinkWalker() 
变成顶层类,那么必须要设法传入 lns 和 re
   你的代码一定会多一点点,而不是少一点点
     从阅读上来看,要想读完一个逻辑,你必须跨越 3 个类去看,而现在起码可以一目了然

当然,这方面,是其他函数式编程语言语法上比 java 
优越的地方 :(

Original comment by zozoh...@gmail.com on 29 Mar 2010 at 2:21

GoogleCodeExporter commented 9 years ago
看来这个issue可以设为无效了.

Original comment by wendal1985@gmail.com on 15 Apr 2010 at 12:44

GoogleCodeExporter commented 9 years ago

Original comment by wendal1985@gmail.com on 13 May 2010 at 11:03