【发布时间】:2010-10-27 09:16:02
【问题描述】:
我不明白为什么 Java 的 [String.substring() 方法](http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html#substring(int,%20int%29) 是这样指定的。我不能告诉它从编号位置开始并返回指定数量的字符;我必须自己计算结束位置。如果我指定超出字符串末尾的结束位置,而不是只为我返回字符串的其余部分,Java 会抛出异常。
我习惯于 substring()(或 substr())采用两个参数的语言:起始位置和长度。这在客观上是否比 Java 做的更好,如果是,你能证明吗?您所见过的 substring() 的最佳语言规范是什么?什么时候让一种语言以不同的方式做事是个好主意? Java 抛出的 IndexOutOfBoundsException 是不是一个好的设计理念?这一切都归结为个人喜好吗?
【问题讨论】:
-
这确实是个人喜好问题,这就是使这个“主观和争论”的原因。我在不同时间需要子字符串的“长度”和“结束位置”两种风格,所以对我来说,说一个比另一个“更好”是没有意义的。
-
没有必要仅仅因为它是主观的而争论。嘘。我们不能在没有圣战的情况下讨论语言决策的相对优点吗?如果 Jon Skeet 认为值得回复并且不仅仅是呼吁争论,那肯定意味着什么吗?
-
如果我编辑它以去掉“惊讶”和“不便”这两个词,它会显得不那么有争议,因为实际上没有人争论吗?语言设计问题(在大多数情况下本质上涉及一些主观权衡)是否不适合 Stack Overflow?
标签: language-agnostic language-design substring substr