美文网首页
2022-10-16-整洁代码的对象和错误处理

2022-10-16-整洁代码的对象和错误处理

作者: 三流之路 | 来源:发表于2022-10-17 15:41 被阅读0次

    继续读《代码整洁之道》。

    对象和数据结构

    • 不要轻易的就写 getter 方法获取类内的属性值,是思考目的是什么,有时用有意义的函数返回这个值,可以隐藏自己内部的细节
    • “著名的得墨忒耳律(The Law of Demeter)认为,模块不应了解它所操作对象的内部情形……方法不应调用由任何函数返回的对象的方法。”
      final String outputDir = ctxt.getOptions().getScratchDir().getAbsolutePath();
      
      上面的代码,违反了规则,一连串的调用,通常被认为是肮脏的风格。是吗?项目中这么使用并不少见。
      说是 getOptions 返回的对象,不应该再去知道它的内部细节,想想这原则不可能实现啊。
      如果 Options 和 ScratchDir 中间插了一层,但是如果是数据结构(没有方法,只有属性的类),用 getOptions().getScratchDir() 就不行了。
      ctxt.options.scratchDir.absolutePath 就没关系,说提供一个方法,比如在 ctxt 中加一个 getOptionScratchPath() 返回,这样隐藏了细节,可以理解,但按这理论这方法内部调用还应该继续这样,去 options 内部再定义方法。

    错误处理

    有时 catch 异常需要对好多异常匹配判断,但是若明白自己想要的是什么,可能根本不关注到底是哪个异常,一般直接匹配一个 Exception 了,其实不太好,通用的 Exception 无法定位是这里抛出的。

    可以将调用,异常处理单独封装到一个类,然后所有异常都抛出自定义的异常。还有一个好处,如果是第三方的 API 定义的异常类型,不需要在外部调用时出现这 API 里特有的异常,而是出现自己的异常。

    方法不要返回 null 值,这是个好建议。可以返回特例对象,甚至可以抛出异常,如果是第三方的,可以自己这样封装,将 null 值处理了,不要返回去。

    别将 null 值作为参数传递,和上面一条一样,都是减少检查 null 的代码逻辑,减少漏减少发生异常的概率。

    相关文章

      网友评论

          本文标题:2022-10-16-整洁代码的对象和错误处理

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