1. ホーム
  2. swift

[解決済み] 計算された読み取り専用プロパティとSwiftの関数との比較

2023-01-01 17:54:39

質問

SwiftのWWDCセッション「Introduction to Swift」では、読み取り専用のプロパティである description がデモされています。

class Vehicle {
    var numberOfWheels = 0
    var description: String {
        return "\(numberOfWheels) wheels"
    }
}

let vehicle = Vehicle()
println(vehicle.description)

メソッドを使用する代わりに上記の方法を選択することに何か意味はあるのでしょうか。

class Vehicle {
    var numberOfWheels = 0
    func description() -> String {
        return "\(numberOfWheels) wheels"
    }
}

let vehicle = Vehicle()
println(vehicle.description())

読み取り専用の計算されたプロパティを選択する最も明白な理由は、次のようなものだと思われます。

  • セマンティクス - この例では description が実行されるアクションではなく、クラスのプロパティであることは理にかなっています。
  • 簡潔さ/明確さ - は、値を取得する際に空の括弧を使用する必要性を防ぎます。

上記の例は明らかに単純すぎますが、他にどちらかを選択する正当な理由はあるでしょうか。たとえば、関数やプロパティに、どちらを使用するかを決める指針となるような機能がありますか?


注:一見すると、これは非常に一般的な OOP の質問のように見えますが、この言語を使用する際のベストプラクティスを導くような Swift 固有の機能を知りたいと思っています。

どのように解決するのですか?

それは、ほとんどスタイルの問題だと思います。私は プロパティ を使うことを強く希望します。プロパティとは、取得や設定ができる単純な値のことです。私は 関数 (またはメソッド)を使います。例えば、何かを計算したり、ディスクやデータベースから読み込んだりしなければならないかもしれません。この場合、単純な値しか返されない場合でも、私は関数を使用します。そうすることで、呼び出しが安い(プロパティ)か高い(関数)かを簡単に確認することができるのです。

AppleがいくつかのSwiftコーディング規約を公開するとき、おそらく私たちはより明確になるでしょう。