blogこの広告は、90日以上更新していないブログに表示しています。@takkyuuplayer1行まとめ足し算ではなく掛け算で実装する。昔は足し算的に実装していた。最近は掛け算を意識した実装になったと思う。ユーザーの新規登録を考えるときにPOSTされたフォームデータをバリデーションしてバリデーションが通れば、それをデータベースに保存するという流れを思いついく。若かりし頃、流石にコントローラにべた書きすることは無いものの、その流れをそのまま実装していた。});}といったところだ。Modelの「独立した」2つの機能を組み合わせれば、後は順番通りに呼び出せば実現できる、と考えるようになった。「独立した」機能ということで、モデルはこう書き換わる。2つ大きなメリットがある。連携してアカウント作成をしたくなったとする。限定されていないことから容易に分かる。他にも重要なメリットがある。それは集中すべき範囲を限定できる事だ。内に全て記載されていて、変なデータを渡すとバリデーションエラーで弾かれる。ユーザーから何の情報を受け取るべきか?」に集中できる。増えれば増えるほど、掛け算で効果が現れてくるだろう。いえ、初回でいきなり独立した機能として実装するのは時間のムダではないのか?断言しよう。独立した機能として実装する方が短時間で実装できる。すればいいか、などと考える必要はない。DBやビジネスの制約上「ユーザー登録にはこのデータは必須で、オプションでこういうデータも受け付ける事が可能」ということだけに注力すればよい。逆にフォームを作るときは、ただ「モデルが受け付け可能と言っているデータ」を受け取ることだけに注力すればいい。これが足し算的実装方針だと、実装中にモデルやフォームを行ったり来たりするハメになる。後で「やっぱりこのデータも必要だ」とフォームを変更したり、逆に「フォームからこんなデータも渡ってくるらしいぞ」とモデルを変更したりしたくなるからだ。集中すべき範囲を限定できる分、独立した機能として実装するほうが短時間で終わる。その素晴らしさがあまり実感できない場合は、受験で考えると分かりやすいかもしれない。国数英理社それぞれ1時間ずつのテストと、まとめて5時間のテストどちらが良いだろうか?ある教科がものすごく得意で30分で終わらせられる分他の苦手科目に時間多く割ける!という人は別として、どれもやはり1時間くらいかかるのだとしたら分かれている方がやりやすいという人が多いだろう。まとめて5時間のテストだと英語を解いている最中に突然さっきもう少しで解けそうだった数学の問題が気になってそっちに戻ったり、理科は時間がかかりそうだから先に社会を解こうとしたらそれも結構な論述が必要で、一体どっちから先にやっつけるべきか?と混乱しかねない。足し算的実装とはなんだったのか?全てをコントローラにべた書きしている状態に比べ「データのインサートをテストしやすい」という利点はあるものの、本質的にはコントローラにべた書きしているようなものだったと思う。それは再利用性に乏しく、また実装中は複数の気にすべきことが同時に頭の中に存在しており集中力も半減する。まとめ足し算ではなく掛け算で実装する。Macになったりしている。どんな環境でもさくっと同じ環境を作れるようにしておきたい。makeで一通り揃うようにしてある。追うようにしており、下位互換性は気にしていない。vagrantで一通り揃う。方は壊れたのでやめてしまった。管理できるよう再構築しようと思う。brew_dumpで一通りバックアップが取れるようになっている。