ソースコードを書いていく手順について、意外と情報がない。
自分が経験則でやってることを改めて検討してみる。
まず最初にやるのは、実行される最小のコードを作ること。
C言語のmain関数のようにエントリーポイントの場合もあるし、
GUIアプリのようなイベントドリブンの場合は、何かしらのフック関数だったり。
やることはprintで充分。
自分の書いたコードが絶対に通る場所を手に入れることが重要。
これから作りたいものを、コードではなくコメントで書いておく。
// 名前を表示する
コメントを見ながら、コードにしていって、新たに必要になるものをコメントしていく。
// TODO: 名前を変更可能にする
console.log("taro")
// TODO: 引数で渡せるようにする
var name = "taro"
console.log(name)
引数や関数呼び出しが登場してくると、if文などの制御構文が登場するはず。
function hello(name) {
// TODO: name が空の時は代わりの文字を出す
console.log(name)
}
function hello(name) {
if (name) {
console.log(name)
} else {
console.log("nanashi")
}
}
いろんな手法で構造をシンプルにする。
関数の入出力にコメントを書く。
どういった入力を期待しているか、どういった出力になるかを明示するため。
契約プログラミングのやり方。
処理の中で、意図が構文に現れないモノをコメントにする。
例えば、if文に対して条件式の説明を書くのではなく、その条件にした狙いを書く。
「何とかを更新」のような構文見たらわかることは書かない。
フォーカスを広い範囲に移して考える。
簡単なレベルだと、重複してる関数を消すなど(DRY原則)。
進んだレベルとして、拡張可能性の検討(SOLID原則)。
処理を高階関数で差し込めるようにしたり、if文のべた書きをポリモフィズムに変更したり。
あくまで自分の進め方です。
TDDだと、「最初の足場組立」と「コメントから書く」のが、「ユニットテスト環境設定」と「ユニットテストを書く」に置き換わる。
そう考えると、悪くない進め方なのではないか。