美文网首页
重构读书笔记-9_8-Introduce_Assertion

重构读书笔记-9_8-Introduce_Assertion

作者: MR_Model | 来源:发表于2019-07-15 09:39 被阅读0次

    重构第九章

    8.Introduce Assertion(引入断言)

    某一段代码需要对程序状态做出某种判断,以assertion(断言)明确表现这种假设。

    Example:

    class Employee...
        private static final double NULL_EXPENSE = -1.0
        private double _expenseLimit = NULL_EXPENSE;
        private Project _primaryProject;
        double getExpenseLimit() {
            return (_cxpenseLimit != NULL_EXPENSE) ? _expenseLimit : _primaryProject.getMemberExpenseLimit();
        }
        boolean withinLimit(double expenseAmount) {
            return (expenseAmount <= getExpenseLimit());
        }
    

    End:

    double getExpenseLimit() {
        if(Assert.ON) 
            Assert.isTure(_expenseLimit != NULL_EXPENSE || _primaryProject != null);
        return (_expenseLimit != NULL_EXPENSE) ? _expenseLimit : _orimaryProject.getMenberExpenseLimit();
    }
    

    Conclusion:

    Assert.ON是一个常量,编译器在编译期会对它进行检查,如果它等于false,就不再指向条件式后半段代码。

    Assertions可以作为交流与调试的辅助,在交流的角度上,assertions可以帮助阅读者理解代码的假设;在调试的角度上,assertions可以在距离bug最近的地方抓住它。

    如果程序在不满足某些约束条件,程序也可以正常运行。assertions就不会带来任何的方便,并且可能妨碍以后的修改。

    注意

    重构必须在有单元测试的情况下,保证之前的功能修改后不收影响。切记!!!

    相关文章

      网友评论

          本文标题:重构读书笔记-9_8-Introduce_Assertion

          本文链接:https://www.haomeiwen.com/subject/yijgkctx.html