学びがありすぎて追いつかない

振り返り

印象的なのは

  • ファクトリメソッドの命名について

  • Propsをパブリックにするか否かについて

  • コンポーネント設計について

ここら辺かなあ。

たまには学んだことだけを振り返るとかにしてみるか

ファクトリメソッドの命名について

今日はBEのお話の議論で、

「ofメソッドの命名極力やめない?」の話になった。

何をしているかがわかりにくいと。ドメインの生成であればcreateやgenerateがいいよね、空になるのであればempty, 単一のオブジェクトからの変換ならfromみたいなのがいいよねになった。

でもじゃあ、「そもそもofってなんだったの?」「ofとcreateにどんな意味の違いがあるの?」って思ったのでそれを上長と会話した。

結論、「ofは既にある値を元にインスタンスを生成する」「一方create等は、副作用がありで新しく生成・構築する」みたいなイメージで着地した。つまり、ofの中で内部的に新しいメソッドやidが生成されていたら、それはofではない。みたいなこと。例えば

AAADomain.of(hoge, fuga, piyo) // ← 中で UUID.new() を呼んでいる

この場合、引数にはidがないが、内部的にはuuidが生成されている。これは単にofが既にある値を元にインスタンスを生成しているわけではないということだ。この場合、createの方が適切で、もしofを使うなら、uuidもこのofの引数に入れるという感じだろう。

と考えてみると、おそらくofを使う機会はほとんどない。ofの実態はドメインを忠実に生成することなので、それならofを書かないでドメインオブジェクトでマッピングすればいいだけなのでね

Propsをパブリックにするか否かについて

今まで自分は外で使わないpropsをパブリックにはしない派だった。しかし、今日の会話で、「propsは全てexportせよ」という話になった。

まずコンポーネントが露出している時点で、Propsも外に出していいのでは、という点。もう一つは、Props名を適切に命名しているなら、その理由は外で区別するためだからパブリックにしてあげていいじゃん、ってのがある方の意見だった。

個人的には使わないものをわざわざexportする意図がわからなかったので未だ違和感。ツイートしておいたので誰かコメントしてくれないかなああって思っている。

コンポーネント設計について

めちゃくちゃ大事だなあとひたすらに思った日。弊社はフルスタックエンジニアなのもあって、いろんなフロントエンドの書き方をそれぞれ持っている。なので、コーディングスタイルが酷く乖離していたり、コンポーネント分割の思想がバラバラな状態で実装に入り、結果カオスなフロントエンドが出来上がってしまうケースを防ぎたい。事前にどこでコンポーネントを分割して、どこでstateを持って、どこでデータフェッチをして、くらいまで決めれると良い。

特に、どこでデータフェッチをするかどうか、このファイルには何を書いてあげるべきか、みたいなのはまじで大事だなと思った。微妙に想像と違ったり、そっちの方がいいか、となるケースがある。

BEはゴリゴリに設計をするのがソフトウェアエンジニアのイメージ。ただ、フロントエンドこそコンポーネントをどこで書いてどこで分割してこのコンポーネントはどんな振る舞いを持つかを明確にしておかないと、本当に酷いことになる。良くも悪くも、どんな書き方でも動いてしまうし困らないのがReactなので、気をつけたい。「書くときじゃなく、読むとき」を考えたときに、コンポーネント設計こそmustでやることではなかろうか


yusei53の画像
yusei53

yusei53 has shared 184 reflections. Discover new insights this platform.