プログラミング

プログラミングを上達する方法〜とにかく小さくする〜【脱初心者を目指して】

プロゲートやドットインストールをざっと把握して、

実際にホームページや簡単なWebシステムなどをつくって、

PHPフレームワーク『Laravel』などを使ってWebシステム構築したりして、

WebスクレイピングでAmazonの商品リストなどを取得できるようになって、

オブジェクト指向の仕組みがぼんやりとわかり、(カプセル化、継承、ポリモーフィズム(多様性))

なんとなしに、プログラミングができるようになった感があるにはあるんですが、

#入江開発室で活動している現役プログラマー、フリーランスの方々や、メンターのアドバイスなど聞くうちに、

もっともっと高いところへ登りたいという欲が強くなってきて。

アオキ
彼らのような高い頂へ登るためには何が足りないのだろう・・

と考えるうちに、

いくつかの答えというか、超えるべき壁がなんとなく見えてきた感があります。

Sponsored link
  • システム設計
  • データベース構造
  • デザインパターン
  • 保守性・再利用性の高いコード
  • SOLIDの法則
  • UIUX

などなど。

それぞれがどっぷりと深い内容だし、

知識として知っているのと、実際に使えるようになるのとでは大きな差があると考えて、

ではなにからやっていこうかとググるうちに、ちょうどいいプレゼン資料を発見しました。

プログラミングを上達する方法 とにかく小さくする

オブジェクト指向の設計と実装の学び方のコツ

『現場で役立つシステム設計の原則』

という本を書かれた、増田さんの2012年のプレゼン資料です。

アオキ
この本めっさおすすめです!

プレゼン資料の中で、

オブジェクトの設計と実装の基本は、

とにかく小さくすることだと書かれています。

具体的には、

  • クラスは50行以内
  • メソッドは3行以内

というルールをつくって、

できるだけ一つのコードが長くならないようにすべきだと。

小さくする分役割分担をはっきりとわけて、

できるだけ同じような場所は共通化させて。

それが脱初心者、中級者への一歩だということです。

長ったらしいコードが何故にダメかというと、

単純に、上から全部読まないと中身がわからないからなんですね。

アオキ
そういえば、とある依頼で1ファイルに3,000行書かれてて萎えた事がありましたね・・

自分が書いたコードならまだしも、

他の誰かが書いたコードを上から3,000行読むのはとにかくしんどい。

みんながみんな長ったらしいコードを書いていたら、読むだけで日が暮れちゃう。

  • 3000行のコードを上から読むか
  • 50行くらいのコードを、必要な箇所だけ読むか

を比べれば、

アオキ
そりゃあ50行の方が楽でしょ〜

と。

ではどうやって小さく書いていくかということで、

プレゼン資料の中で、小さくするための9つのコツが書かれています。

Sponsored link

プログラミングを上達する方法 とにかく小さくする9つのコツ

小さくするための9つのコツ
 
1. ひとつのメソッドのインデントは1段階まで
2. else句を使わない
3. すべてのプリミティブ、文字型をラッピング
4. ファーストクラスコレクションを使う
5. 1行につき、ドットはひとつ
6. 名前は省略しない
7. クラス50行、パッケージ10ファイルまで
8. インスタンス変数は2つまで
9. getter/setterを使わない

いきなり全部は難易度が高いので、

まずは、

2. else句を使わない

というお題から取り組んでみました。

もうね、初心者向けの本なら必ずと言っていいほど紹介されている if 〜 else 文。

ですが実際には、

書けば書くほどややこしくなるので、できるだけ else は使わない方がいいようです。

確かに else を書かないようにしてみると、

プログラム自体がすっきりスリムに感じてきます。

アオキ
さようなら else くん、またどこかで・・

次に、

6. 名前は省略しない

メソッド名などできるだけ、名詞動詞+名詞 で書くようにして。

この辺りまでは身についてきたので、次は

8. インスタンス変数は2つまで
7. クラス50行、パッケージ10ファイルまで

というルールを身体に徹底させようかと。

プログラミングを上達する方法 小さくする事を意識してコード書きまくる

とにかく小さく、という事を意識してコードを書くうちに、

関数、クラス、継承、インターフェースあたりの知識が身についてくるだろうと。

パーツごとに役割をしっかり分けて、

同じような書き方があればメソッドとして分離させて。

会社もプログラミングも同じで、

営業がいれば総務がいれば、マーケティング部に人事部などなど、役割が別れているのと同じように、

プログラミングを役割を分けた方が後々効率がよく、整理もしやすくなると。

それが『ドメイン駆動設計』の意図だと思われます。

とはいえいきなり設計するのはなかなかハードル高く、何度もやりなおし!ってなりそうなので、

とにかく小さく作ることを意識してコードを書きまくるしかないかなと思っています。

アオキ
とにかく数稽古ですな、もりもり書くべし書くべし。

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

CAPTCHA


関連記事

  1. プログラミング

    プログラミングの目的は3つ〜激動の21世紀を強く生き抜くために〜

    先日ヤフーニュースを見ていたら、たまたまこの記事を見つけまして、思わず…

  2. プログラミング

    小学生プログラミング決勝の舞台を視聴して思うこと〜これが創造的思考力なんだろうなぁ〜

    たまたまツイッターで流れてきた情報を見て、思わず口があんぐりと…

  3. プログラミング

    『プログラミング教育』より大事な事を考えてみる~AI時代を見据えて~

    子どもが生まれた事をきっかけに、子どものためにできることはないかと…

  4. プログラミング

    【無料】パソコンのキーボード練習の4つのステップ【これだけでOK】

    子ども向け無料プログラミング寺子屋『CoderDojo熊本』でも相…

  5. プログラミング

    MENTA体験記〜MENTAを卒業しました【圧倒的感謝しかない】

    2019年4月17日のこの投稿から早1ヶ月半。黙々とLarave…

  6. プログラミング

    『ライフロングキンダーガーデン』を読んで創造的思考力に思いを巡らせてみた

    ツイッターでたまたま見つけた『ライフロングキンダーガーデン』という本。…

Sponsored link

最近の記事

  1. IoT

    【Arduino】ラジコンをつくってみた 〜今ドキのプログラミングの覚え方
  2. 数学

    【微分】わかりやすくプログラミング目線で整理してみる【初心者向け】
  3. 検索システム

    【検索システム】をつくってみた【実際にログインしてさわれます】
  4. リベラルアーツ

    『ニュータイプの時代』〜リベラルアーツとテクノロジーの融合〜
  5. Laravel

    【Laravel(PHP)】でできる事をわかりやすく(ざっくりと)まとめてみた【…
PAGE TOP