2023年12月13日水曜日

C#のプロパティに関する記事

最近、Googleのアプリ開いてるとクソ記事が偉そうに出てきて
今回はC#のプロパティに関する説明記事だったのだけど
気になったのは、
「ならば全部Publicにすればいいじゃないのと思うかもしれないけど、
C#ではPublicにするのは非推奨です」で済ませてる点

何故、内部変数をpublicにしないのかと言うと
値のセットやゲットをするときに、
関連する値との整合性チェック機構を入れたり
変数のセットをしたり出来るようにするためです
Getter/Setterもカプセル化して機能を入れるのは悪いことではありません

Javaなんかだと、Lombokで@Getter,@Setterしてしまって、
なんの機能も実装しないので、
たしかに、あれだとpublicでいいじゃん?てなります
そして、わざわざLombok使わなくても
Javaでプロパティ構文入れればいいじゃん?てなりますが
現状見送られています
たしかJava7あたりでそういう話題があったはず

さらに言うと、Javaでは
@Lengthや@PatternなどでEntityの整合性をチェックし、Controller内でValidateのチェックをするので、
Entityはまぢ単なる入れ物のため、
Publicでいいじゃん?はい、そうですねってことになります
まぁ言語が違えばこんなもんです

Golangだと、そもそも脱オブジェクト指向言語ですので、
お前らオブジェクトだのクラスだの使ってて、それ再利用してますか?
してないよね?だから俺らモジュールにします!って言語なのです
こういう点からも、
DDD書いた人がこれからも偉ぶっていられるとは、
わたしは思っていません

言語によっても考え方が違うのですが、
元記事はC#について書いていて、
単に「C#ではpublicにするのは非推奨です」の一言で片付けるのは如何なものだろうか?
説明にはなってないですよね?


0 件のコメント: