DoctrineのEntityのgetter、setterをやめて半年近くたった。

DoctrineのEntityのgetter、setterをやめて半年近くたった。

May 3, 2017,
tags: symfony doctrine2


このエントリーをはてなブックマークに追加

DoctrineのEntityのgetter、setterをやめてみたお話。から半年たったのと雑なツイートしたらリプライが来てしまったためになんとなくブログ更新してみます。

てか、別にgetter/setterやめて辛くなったわけじゃないので雑にツイートしてしまってごめんなさいという気持ちしかないです・・・。

Getter/Setterをやめて辛いと思ってしまった原因

何かしたらのプロパティに値が入ったタイミングで、何かしらの処理を実行したい場合。 実際のコード晒せないんで、雑なサンプルコードはこんな感じ。

class Hoge {

    public $firstName;

}

$hoge = new Hoge();
$hoge->firstName = 'polidog'

こんなコードに突然ucfirstをする仕様変更が入った場合・・・。
プロパティ直接触ってしまっているので、__setのマジックメソッドも使えない。
そんなコードをすべて修正しなきゃいけない。

(うーんサンプルコードがよくないかも。。。)

今回の場合は修正箇所が大量にあったために辛かっただけで、しかも別に解決策あったので 「Getter/Setterがなくなったから辛くなったわけではない」 です。

他に何か辛い所とかある?

getter/setterがなくなると、doctrine:generate:entitiesでEntity生成してしまった時にGetter/Setterが生成されてしまって悲しい気持ちになるとかはありますが・・・別に辛いってわけじゃないので。。。
getterをよく使うのってtwigだと思うけど、省略できるから特に辛くない。

実はgetter/setter使ってるプロジェクトも並行して開発しているけど、別にあってもなくても変わらないなぁーとしか・・・。
ない方が若干コードが読みやすい程度かなぁ。

あーsetterでタイプヒント使いたいとかはあるかも。

本当に欲しいのは新潟アクセス修飾子なのかも

最近はPHP7で開発しているし、スカラータイプヒンティングは使いたい。
ということでやっぱsetterは欲しい。

でもGetterって別にいらないよねって気持ち強いかも。
読めるけど、書けない的なものが欲しいって考えてたらniigata新潟アクセス修飾子のご提案がサポートされたらいいのになぁーって思ってきた。

まあ同じようなことは@varで型を書いて、__setが実行されるタイミングで型チェックすればいいのかもと思う気持ちある。
しかしそんな面倒くさい事するなら、setter用意すればいいじゃないって気持ちある。

最後に

結局半年たってgetter/setterあってもなくてもどちらでもいいなぁーとしか思いません。
そこまで重要なことではない気がします。

だからこそ、Doctrineに限らずgetter/setterに関する話を誰かに聞いてみたい気持ち強いです。
だれか教えてください・・・。

comments powered by Disqus