• 优秀代码赏读之第一篇


    多阅读开源的优秀代码,保持优秀代码习惯。

    不写死换行符

    private static final String LINE_SEPARATOR = System.getProperty("line.separator","\n");
    
    • 1

    不写死操作系统的换行符,保持java的系统无关性

    给定默认值

    //NumberUtils.toDouble(result, 0);字符转数字,空值不会报错
    public static double toDouble(String str, double defaultValue) {
         if(str == null) {
             return defaultValue;
         } else {
             try {
                 return Double.parseDouble(str);
             } catch (NumberFormatException var4) {
                 return defaultValue;
             }
         }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    这部分的逻辑我们如果不想处理异常,希望得到默认值,这样的设计就能让使用者代码简介。

    返回只读的list,增加安全性

    public List<Interceptor> getInterceptors() {
        return Collections.unmodifiableList(list);
    }
    
    • 1
    • 2
    • 3

    明确list是只读的,这样封装有些场景是必要的,防止误操作。

    没实现的方法,应该在调用的时候抛出异常

    public ParameterMap getParameterMap(StatementScope statementScope, Object parameterObject) { 
        throw new RuntimeException ("Method not implemented on RawSql."); 
    } 
    
    • 1
    • 2
    • 3

    个人觉得蛮好的,有些方法暂时想保留,通常做法我们是写一个空方法,但是里面加入一个RuntimeException能保证不引起误导。

    异常统一转换成对应的异常

    catch (Exception e) { 
          if (e instanceof SqlMapException) { 
            throw (SqlMapException) e; 
          } else { 
            throw new SqlMapException("Error initializing TransactionManager. Cause: " + e, e); 
          } 
        } 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    异常统一封装为SqlMapException。

    异常的抛出

    public void runBare() throws Throwable { 
        Throwable exception= null; 
        setUp(); 
        try { 
            runTest(); 
        } catch (Throwable running) { 
            exception= running; 
        } 
        finally { 
            try { 
              tearDown(); 
            } catch (Throwable tearingDown) { 
              if (exception == null) exception= tearingDown; 
            } 
        } 
        if (exception != null) throw exception; 
    } 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    是一种思路,但不是都适用,有时候反而让看代码的人看复杂了。

    set默认值

    public void setDevMode(String mode) {
        devMode = "true".equals(mode);
    }
    
    • 1
    • 2
    • 3

    如果mode为空,则devMode可以设置默认值为false

  • 相关阅读:
    为什么现在连Date类都不建议使用了?
    【数据结构初阶】一. 复杂度讲解
    WinServer 2019 AD 组策略 禁止U盘访问
    windows上安装MySQL Server.
    基于51单片机的孵化环境温湿度监控系统设计
    【最详细】最新最全Redis面试大全(42道)
    Java入门,运行Java源码之前需要做些什么,命令行Hello World
    你用 Excel 做的最酷的事情是什么?
    leetcode_17电话号码的组合
    css中的单位
  • 原文地址:https://blog.csdn.net/yuoveyu/article/details/127664503