質問: swiftのインスタンスメソッドでオプションの 'self'参照をスタイルの問題として使用する swiftでは、selfを使用して、現在のオブジェクトインスタンスへのメソッド呼び出しおよびプロパティ参照のオプションのプレフィックスを付けることができます。これらのプレフィックスを削除すると、コードが整理されますが、メソッドの長さ、パラメーターとローカル変数の数によっては、変数のスコープが曖昧になる場合もあります。おそらく答えは、より小さなクラスとメソッドにリファクタリングすることですが、それが常に実用的であるとは限りません。一般的な例は、uiviewcontrollerサブクラスやカスタムviewdidload()実装、uigesturerecognizerサブクラスの複雑なアクションハンドラーなどです。 swiftでiosアプリの開発に飛び込んで以来、これについて少し考えてきましたが、まだフェンスの中にいます。私の理想的な答えは次のとおりです。 selfを参照しない場合、実用的な欠点があります。 selfへの暗黙的参照と明示的参照を混在させる方が、どちらか一方に固執するよりも悪いかどうか(私はyesに傾いています)。 読みやすさに重点を置いた全体的なスタイルの懸念。 あいまいさを軽減するためのインスタンス変数の命名スタイルとローカル変数の命名スタイル。 他の言語での同様の問題への参照。
回答: 特にswiftの場合、コンパイラーから明示的に要求されない限り、selfを省略することにはいくつかの利点があると思います。 selfを必要な場所のみ(つまり、自己がキャプチャされるクロージャ内)で使用すると、自己への参照が不適切に保持される可能性がある状況を簡単に特定できます。 私は興味深い問題に遭遇し、警告メッセージが表示されないようにselfを使用しているように見えます。 class myobject { var myrange: range‹int›? { willset { // this line has a warning that you are operating on a property that is about to change myrange?.startindex = 2 // this line does not show any warning self.myrange?.endindex = 3 } } } これはバグだと主張するかもしれませんが、警告の場合のみ、selfが一部の式の処理方法を変更することが重要だと思います。