
DoctrineのEntityのgetter、setterをやめてみたお話。
こんばんはポリドックです。
今日も元気にSymfonyにを書いています。
さて、今日はTwitterでこんなツッコミをされてしまったので、軽くまとめてみようと思います。
何がどう変わったのか詳しく。 https://t.co/q7vo2KOF9O
— Hidenori Goto (@hidenorigoto) November 18, 2016
そもそもなぜGetter/Setterをやめたかったのか?
「必要なくね?」って激しく思った。ただそれだけです。
privateでプロパティを定義してgetter/setterを用意するなんて、ほとんど意味がないことだと僕は思うんですが、違うんですかね?
Getter/Setterをやめたメリット
コードを書く量が減る
|
|
ってのは
|
|
ってなるのは書きやすさ全然違いますよね。
そんなSyntaxの話はどうでもいいとか、本質的じゃないって話はよくわかっています。
でも・・・ちょっとでも書く量が減ると嬉しいんですよね。
今現在、書くコード量が多い僕としては十分なメリットです。
可読性が上がる
Entityが本当に見やすくなります。
定義するメソッドが少なくなり、すっきりするんですよね。
getter/setterがなくなると、本当に必要なメソッドがパッとみでわかるようになります。(IDE使ってたらそんなにメリットでもない気がしますが・・・。)
Getter/Setterをやめたデメリット
プロパティにどんな型でも代入できてしまう。
こんな感じに、ManyToOneとかしていて、本当はEntity渡さなきゃいけないようなところでも、intとか平気で渡せちゃいますよね。
|
|
普通にsetterを定義していれば、タイプヒント使って防げますよね。
|
|
PHPの型のゆるさが辛いところですね・・・。
最後に
こうやって書いてみると、getter/setterをやめたところで、本質的には何も変わらないような気もします。
でも、本質的にかわらないなら、よりシンプルになるのほうが良いのかなとも思います。
結論としては「どっちでもいい」と。
チームとかで話し合って好きな方を採用すればいいと思います。
最後の最後に
「Getter/Setterをやめてたら心が豊かになりました。」とか調子にのったツイートしてごめんなさい。