22 March 2016

org.nutz.lang 包把许多 JDK 常见操作封装成较短的接口。理解工具类时,既要看它省掉了什么重复,也要看它是否改变了错误、空值和资源释放的语义。以下以 Nutz 1.b.53 为阅读基线。

按职责认识工具

工具 主要关注
Strings 字符串判断、转换和拆分
Nums、Maths 数值处理及计算辅助
Times 日期解析、格式化与时间范围
Streams 字节流、字符流和关闭策略
Files 路径、文件与目录操作
Mirror 类型、成员、注解和对象创建
Lang 上下文等通用入口

工具方法名越方便,越需要确认边界。例如 readAndClose 与 read 的资源责任不同,路径里的波浪号也不一定由 JDK 自动展开。对框架的约定不能直接推导为 Java 标准行为。

从调用者的问题出发

读取文件时,先看编码与异常;日期转换时,先看时区与线程安全;反射时,先看访问权限和目标类型。再沿一个方法跟到最终的 JDK 调用,判断封装增加了哪些默认值或容错。

拿固定输入比较预期与实际结果,比按工具类行数判断复杂度或价值更可靠。方法多不等于适合所有项目,已有标准 API 满足需求时也不必为了代码短就引入另一套语义。

本系列接下来分别讨论字符串、日期、IO 和反射,让这些基础封装与 JSON、Mapl 等上层模块连接起来。

参考:Nutz 1.b.53 源码。





blog comments powered by Disqus
Fork me on GitHub