OO の観点からは、プロパティには 2 つのタイプがあると思います。(注: これはクラス内からのみ適用されます。クラスのユーザーはこの違いを認識しないでください。)
一部のプロパティは、メイン クラスに含まれる、実際には独立したクラスです。(「メイン」クラスは考慮中のクラスであり、必ずしもプログラムを開始するクラスではありません。) これらは、メイン クラスのコードであっても、プロパティを介してのみ参照する必要があります。その get メソッドと set メソッドを見ると、プロパティの全体像がわかります。それらはメイン オブジェクトの不可欠な部分ではなく、パブリック フィールドのような関連情報ですが、より安全です。
もう 1 つの種類は、メイン オブジェクトの不可欠な部分です。極端な場合、関連付けられたフィールドがないこともあります。呼び出されると、getter は多くのフィールドを含む計算で値を組み立てる場合があります。フィールドが 1 つしかない場合、そのフィールドを読み書きする内部コードは、getter と setter がフィールドに多くの変更を加える傾向があります。(オブジェクトは、5 から始まる値を追跡する場合があります。時間の経過とともに、10 が減算され、12 が加算される可能性があります。その時点で、値は 7 になるはずです。しかし、ゲッターは、値が小さいことを外部の世界に決して認めたくない場合があります。したがって、値が -5 の場合は 0 を返します。)
それぞれがどのタイプのプロパティであるかを判断し、いずれかの方法で進みます。違いを分割しないでください。すべての参照をプロパティ自体にするか、すべての参照をその背後にあるフィールドにする必要があります。(ただし、getter と setter でコードを複製するよりも、プロパティを直接参照する方がよい場合があります。ただし、これにはあまり慣れていません。)
「外部から呼び出す」ことで、フィールドの値を返す通常のメソッドがあることがわかりました。これは理にかなっているかもしれません。直感的にするために、プロパティは、通常のメソッドが変更を加えることができる、可能な限り public フィールドのように動作する必要があります。(プロパティ DistanceInFeet とメソッド GetDistanceInMeters() を検討してください)。また、コードを複製するのではなく、Get メソッドを呼び出す方が理にかなっています。これは、プロパティ全体がオブジェクトの不可欠な部分である 2 番目のタイプであることを意味します。
したがって、クリーンアップしているコードは、オブジェクト指向に関しては正しいかもしれませんが、そうではないと思います。