簡體   English   中英

在數據類主構造函數中使用私有字段是一種好習慣嗎?

[英]Is it good practice to use private fields in data class primary constructor?

我想編寫代碼,使其對每個人都有意義並由專家跟隨,所以我想知道將數據類字段設為私有並僅通過執行某些操作讓它們通過公共字段訪問是否好 我在下面添加了一個示例來解釋我的問題。 我知道我可以將字段設為私有,編譯器會同意的。 我問這個問題是因為我見過只有公共字段的數據類,我的項目需要在我們訪問它們之前對字段執行一些操作,因此為了實現這一點,我已經將它們設為私有,如下例所示,但現在我在想這是一個好的做法,否則我可以做得最好。

data class BatteryDemo(
    private val _level: Int,
    private val _temperature: Int,
    private val _voltage: Int,
) {
    val level get() = _level.toString()
    val temperature get() = _temperature.toString()
    val voltage get() = _voltage.toString()

}

好吧,如果您願意或有一個引人注目的用例,您可以這樣做。 很多 Kotlin 的 Java 新特性沒有產生關於我們應該如何使用它們的問題,因為它們並沒有長期建立的行業模式。

就我個人而言,我從未使用過私有 val,也從未見過有人在數據類中使用過私有 val。 如果您關心,它確實會破壞課堂之外的解構,因此您將無法使用私有字段執行val (level, temperature, voltage) = batteryDemo

一些可能的替代方案:

// Secondary Constructor

data class BatteryDemo(
    val level: String,
    val temperature: String,
    val voltage: String,
) {
    constructor(level: Int, temperature: Int, voltage: Int) : this(level.toString(), temperature.toString(), voltage.toString())
}

// Creation function

data class BatteryDemo(
    val level: String,
    val temperature: String,
    val voltage: String,
) {
    companion object {
        fun newInstance(level: Int, temperature: Int, voltage: Int): BatteryDemo {
            return BatteryDemo(level.toString(), temperature.toString(), voltage.toString())
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM