JavaScript勉強会

JavaScriptの学習日記

設計の疑問が解消!?

今日本を読んでいて、「なるほど!そうすりゃ良かったんだ!」という小さな気付きを得ました。

 

プログラミングElixir

プログラミングElixir

 

 

  • プログラムはデータを変えるもの
  • UNIXシェルのパイプラインのように、単純な機能をつなげて複雑な処理を実現

 

当たり前といえば当たり前で、別に普通のことですが、改めて考えてみると、「自分に足りなかったパズルのピースだった!」とひらめきました。

 

迷宮になるコード

プログラムを設計して、コードを書いて実装すると、最初は調子が良いのですが、コード量が多くなってくると段々コーディングのスピードが落ちてきます。

最初の頃の半分以下のスピードになってくると「何でこんなに生産性が下がるんだろう?」と悩みます。

 

自分のコードを振り返ると、モノシリック(1枚岩)な大きいファイル、モジュール、クラス、関数を作る傾向がありました。

作れば作るほど、どんどんゴチャゴチャになっていき、見通しが悪くなっていたのです。

このゴチャゴチャ感を解消できれば、常にスッキリして、最初も途中も最後も同じペースでコーディングできるはずだと思いました。

 

改善方法

で、このゴチャゴチャをスッキリさせるのが(冒頭の)「気付き」でした。

 

  1. 大きくて複雑なモジュールは、小さくてシンプルなモジュールに分割する。
  2. 十分にテストされた信頼できる小さなモジュールを作る。
  3. UNIXシェルのパイプラインのように)単機能の小モジュールを組み合わせて、大きな処理を作る。
  4. 大量のモジュールを一覧できる機能が必要。把握しやすくする。
  5. 常に一覧が見られれば、ファイルやモジュールの置き場所は自由。(Amazonの倉庫のように、商品はどの棚にあっても、検索すればすぐ見つけられるかんじ)

 

物理設計の方針

具体的には、CodeIgniter(MVCフレームワーク)を使ったWebアプリの設計で、

  1. モデル:DBアクセスが発生する処理を置く。
  2. ライブラリー:DBアクセスが発生しない処理を置く。
  3. ヘルパー:その他の処理。すぐに呼び出せるように関数として用意する。

というかんじで分割してみる。

 

論理的な分割はドメインで分割すれば良いだろうけど、物理的な分割は見やすくすること(一覧性)を意識しようと思いました。

 

この一覧性を良くするにはどうすれば良いか?

他人のやり方を参考にして、自分がやりやすいやり方を編み出してみたいです。

 

プログラミングと整理整頓能力

こうして考えると、部屋の片付けとか、物事をスッキリさせる能力があれば、プログラミングもスッキリさせられるのではないか?と思います。

 

ゴチャゴチャした部屋を綺麗に片付けて、どこに何があるかハッキリさせる。

必要なものがどこにあるのかすぐに分かり、パッと取り出せたら便利ですよね?

 

部屋や倉庫を綺麗に整理整頓するイメージで、物理的な設計を改善していきたいと思います。

 

 

学校では教えてくれない大切なこと 1 整理整頓

学校では教えてくれない大切なこと 1 整理整頓