プログラミング(プログラムの
    書き方)基礎
    by おいちゃん
コメント
• コメントがなくてもわかるような美しい
  コードを書いた上で
• それでもなおコメントはきちんと丁寧か
  つ適切に書け
• 書くべきは「やりたいこと」
 – 「やること」はプログラム言語で書いてるで
   しょ?
コメントの例外
• 誰がソースを読んでも"何をやっているの
  か"だけではなくて"なにをしたがっている
  のか"までわかるようなコードが書けるな
  ら、不要
 – 「誰でも」。つまり「スキルの低いエンジニ
   ア」でも「入りたてのほぼ初心者」でも。
プログラムの組み方
• 何をしたいか何を作らなきゃいけないの
  かを妄想する
• それがクラスだったりAPIだったりする場
  合、まず自分が「作成者」じゃなくて
  「利用者」として、そのクラスを使った
  と仮定した「妄想コード」を書いてみる
• ワンブレイク
プログラムの組み方
• 「妄想コード」を見直してみる。「なん
  かうざくない?」とか思ったら作り直
  し。でなければ次へ進む
• とりあえずクラスの外枠だけ書いて、中
  身空っぽのメソッドだけ書いておく。メ
  ソッドには「こんなことしたい」ってコ
  メントをあわせて書く。書式をJavaDocと
  かにあわせると、場所にもよるけど、喜
  ばれることも多い
プログラムの組み方
• 各メソッドで何をしたいかさせたいかに
  ついて、妄想をたくましくしてみる
• ワンブレイク
プログラムの組み方
• 各メソッドで具体的な処理内容を「使い
  慣れた母国語で」書く。より具体的には
  「こんなことして~」「あんなことをし
  て」「ここでこうやって」「最後こ~な
  る!!」という妄想を殴り書く。妄想な
  ので、間違っても「ここで変数iをインク
  リメント」とかいう現実を書いちゃいけ
  ない
• ワンブレイク
プログラムの組み方
• 妄想に満ち溢れたコメントを読み返す。
  意味不明なら2つ前に戻る。「いいんで
  ない?」って思ったら次へ
• 実際にソースを書く。このタイミングで
  「やっべこれ忘れそうだわ」っていう
  諸々があったら、コメントを追加しても
  よい
• ワンブレイク
プログラムの組み方
• テストをしてみる
• テストで合格が出たら次のタスクに進
  む。テストでこけたら、それが「ソース
  を書くタイミングでミスった」のか「そ
  もそも妄想した(1メソッド内の)処理の流
  れ自体に問題があった」のか「さらにそ
  もそもとして、クラス切りとかメソッド
  切りでしくじりやがった」のかを分析/相
  談してみる。で、必要な工程に戻る
共通化のタイミング
• 共通化は2回目
• 「コピー & ペースト」のかわりに「カッ
  ト & ペースト」
• 必要になってから「親クラス」に処理を
  持ち上げて継承構造を作成する
• YAGNI
 – You ain't gonna need it
バグの見つけ方
• 今度細かく、実例付けてやるよ!
• 基本は「正面から馬力で素直にシンプル
  に」
 – 考えるのと平行して手も動かそう
• 「出来てる"はず"」ダメ! ゼッタイ!
 – 出来てる「はず」? んじゃバグらない「は
   ず」だよね?
データ構造とアルゴリズム
• これも今度細かくやる
• 古典は一通り知っとけ!
 – 今でも結構役に立つから

プログラミング(プログラムの書き方)基礎