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