◆ {get; set;} だけ書く程度なら必要になってから getter, setter 化でいいと思う
◆ 外部からのアクセス方法も変わらないし最初からつけておく必要がわからない 

前にも書いたような書かなかったようなネタです
私はこれまでメインに使ってきたのが C, PHP, JavaScript とオブジェクト指向が重視されてるような言語じゃなく オブジェクト指向じゃない言語やオブジェクト指向「」できるよ な言語なので オブジェクト指向の歴史とかそれがマナーだとか言われても知らないです


コードは C# です
C# みてるとよくあるコードです
public class tes
{
    public string str {get; set;}
}

この {get; set;} で getter と setter を自動で生成しています

でもこれこう書けばいいと思いません?
public class tes
{
    public string str;
}

どっちだって
var t = new tes();
t.str = "abc";

と書けます
外部から見た違いはありません

もし setter に何か処理を入れたくなったとします
文字列の最初の 5 文字までしか保存しないようにします
private string _str;
public string str {
    get {
        return this._str;
    }
    set {
        this._str = value.Substring(0, 5);
    }
}

こうなるわけですが 最初から {get; set;} があってもなくてもほぼ変わらない量書き換えてます
自動で private 変数を生成して getter, setter を作ってくれてるわけですから ほとんど何も書いてないのと変わりません

そうなるとわざわざ {get; set;} を書く必要ってなに?と思います


書いてもたった数文字なのでこれといって困るわけではないですが 初期値を書いてみると
public class tes
{
    public string str {get; set;} = "abc";
}

です
気持ち悪い

シンプルな文字列なのでまだマシですが 複雑な型になると {get; set;} が邪魔です
こいつのせいで見づらさが増してます


自分で private 変数や getter, setter 関数も書いているとか 外部からのアクセス方法が変わるとかなら 書き換えが必要になった時に楽というのはまぁわかるのですが C# の自動プロパティ使ってまで 書いてる人ってなんなのでしょうか

癖?書かないと落ち着かない病気?