Java String 里的 substring 操作,这个相信很多 Java 开发者都有感受。
public String substring(int beginIndex, int endIndex)
如果传入的参数越界,或者 beginIndex 大于 endIndex ,它都会抛异常,使用者不得不在传入之前检查一下。
个人觉得更好的方式是:substring 返回该字符串和参数指定范围的交集就好了,如果越界或者 beginIndex 大于 endIndex ,就返回空字符串。Apache Common 的 StringUtils 就是这么设计的。
你可能会说调用方可能会误用,开发者应该想办法避免被误用。其实很难避免调用方误用,而我们有时会为了避免误用,反而会引入很多不必要的复杂性,不管是对调用方还是对实现方,这是得不偿失的。。。