前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >2022-10-16-整洁代码的对象和错误处理

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

作者头像
三流编程
发布2022-10-25 18:37:04
3020
发布2022-10-25 18:37:04
举报

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

对象和数据结构

不要轻易的就写 getter 方法获取类内的属性值,是思考目的是什么,有时用有意义的函数返回这个值,可以隐藏自己内部的细节

“著名的得墨忒耳律(The Law of Demeter)认为,模块不应了解它所操作对象的内部情形……方法不应调用由任何函数返回的对象的方法。”

代码语言:javascript
复制
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-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 对象和数据结构
  • 错误处理
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档