提高代码质量的技巧:第31部分同锅的属性

你好。我的名字是 Ishikawa,我正在为通讯应用“LINE”开发移动客户端。 本文是我们每周四发布的“周报”系列的第 31 篇。 周报请见第一篇文章。 相同锅属性 假设您正在实现一项使用“纬度/经度”或“位置 ID”注册位置信息的服务。该位置信息的数据模型是 GeoLocationPinModel 假设它被表示为一个类。在这种情况下,通过使用直接求和类型,您可以安全地保证“位置信息始终表示为纬度/经度或位置 ID”。 在 Kotlin 和 Java 中,直接求和类型是 sealed class 或者 sealed interface 这可以通过以下方式实现 (sealed 为了获得 的子类的属性,需要进行向下转型,但这种向下转型通常是没问题的。另一方面 sealed 最好尽可能避免贬低除此之外的任何事情。 ) 以下 GeoLocationPinModel 牙齿 sealed interface ,但属性的结构不合适。 sealed interface GeoLocationPinModel { data class LatLon( val userId: ULong, val timestampInMillis: Long, val comment: String, val latitudeE6: Long, val […]