【问题标题】:Should I return null or -1 when searching for the id of a translation?搜索翻译的 id 时应该返回 null 还是 -1?
【发布时间】:2018-06-14 09:17:01
【问题描述】:

我们正在将 kotlin 添加到我们的大项目中,并且出现了许多有趣的讨论。在 kotlin 制作的 Utils 类中获取枚举元素的翻译时,我们遇到了困难。

由于一些枚举没有翻译,我决定返回 null。 我的两个同事说我不应该这样做。 参数是按照约定(提到 List.indexOf),当数字元素是返回类型时,我们返回 -1。

我认为客户必须检查退货是否有效,所以这不是更清楚(而且我认为有点糟糕)。 有人告诉我,直到我找到一个在 JDK 或 Android SDK 中找不到某些 Int 时代码返回 null 的示例,我的拉取请求才会被接受。

我已经阅读了 SO 中的许多问题,尽管许多人同意空容器和 null 是在未找到某些内容时最推荐的返回值,但我很难让授权方声明 null 在这里是正确的。

请告诉我是否需要代码才能更好地理解。

【问题讨论】:

  • 方法返回原语还是对象?如果原始 - 你不能返回 null,如果 Object 你应该返回 null。
  • @user1055395 Kotlin 强制对可空类型进行空检查。我认为 return null 是最好的解决方案。
  • Map<Integer, Integer> 是理想的例子吗?
  • @deathangel908 我让它返回 Int?他们希望我返回 int (或在客户端中读取它)
  • @AlexeyRomanov 是我所拥有的最好的,但对我的同事来说可能不太好。谢谢。

标签: java android kotlin


【解决方案1】:

Kotlin 作为一门语言尽量避免 null(与 Java 相比)

在这种情况下,我会坚持使用 -1 而不是像您给出的示例那样使用 null :

list.IndexOf

【讨论】:

  • Kotlin 并没有试图避免 null,它只是试图通过在可空类型上添加编译时检查来限制 NPE
  • 这是我不确定的部分,但在我看来并没有试图完全避免使用它。我试图反驳 null 总是不好的论点,kotlin 似乎有时认为是一个有效值
  • 除了 null 是不好的,-1 在很多情况下都可能被误解,这可能导致难以找到的错误。 list.IndexOf 返回 int 原语,这就是为什么它是 -1
猜你喜欢
  • 2018-05-11
  • 1970-01-01
  • 2011-04-27
  • 2010-12-10
  • 1970-01-01
  • 1970-01-01
  • 2016-02-13
  • 2016-07-09
  • 1970-01-01
相关资源
最近更新 更多