このページについて
ソースコードって実際のところどういうふうに書いていますか?という記事を読んで、自分自身はどうやってコード書いているんだっけ?と棚卸ししてみたくなったので書いてみます。
ふだんJavaで書いているのでそのつもりで読んでください。(他の言語になってもあまり変わることはないと思いますが。)
基本情報
業態:SI
プログラミング歴:9年
共通的にやること
何かの区切り(コード実装終わった、これから難易度高いところやる・終わった、帰宅するタイミングなど)でコミットしておく。
新しく何かを1から作る場合
1. やりたいことの整理
とりあえず作る機能が何を満たせば良いのか腹に落とすところから始めます。
要求が曖昧な場合もあるので、そういうものは一旦曖昧だなと割り切ってしまいます。
(コード書いた時に、もやもやしている部分が結構コードに出てきて、そこからアイデアが出たりもするので。)
1.5. 脳内プログラミング
1をやっている時に技術的に課題が出てきそうな箇所について、可能そうかどうか、何を使って実装すれば良さそうかを頭の中で模索します。
成功するイメージが沸かない場合は、難易度的にヤバい機能なので、一旦周りに「この機能はヤバい気がする」と匂わせておきます。
2. 実装
細かいこと(エラーチェックとか)はほっておいて、エイヤーでアウトラインを書いてしまいます。
この時はテストコード動かしながらとかはやってないです。(どかっと書く派です)
3. テストの実装
テストデータの作成とテストコードを書いていき、想定通りの動きになるまでデバッグします。
4. プログラム構造の整理
テスト結果が思った通りオールグリーンになったところでエイヤーで作ったコードの構造が綺麗にしていきます。
(最初からある程度構造を考えながら書いているけど、もっと綺麗にできるところないかなと、自分の書いたコードに向き合う時間を作ってます)
エラーチェックなんかもここで全て実装します。
(5.) 書いたコードを捨てる勢いで綺麗にする
括弧づけで偶にみたいな感じにしましたが、新しいものを作る時は結構起こしていることですw
構造を整理しているうちに、あ〜これもっとこう書けばよかった!と思ってしまったり気づいてしまったり。。。
そんな時は、時間があれば書いたコードをぶっ壊す勢いで修正をかけます。
そんなに大胆に変更してもテストコードとテストデータがあるので、あまり時間はかからないです。
と、こんなことをやっているうちにソースが洗練されていくという自分的方程式です。(他人が見て洗練されているかどうかは判らないですけども。。。)
作り直す勢いで書き直すのは、多い時だと2〜3回繰り返してるかもしれないです。(それだけ手を動かすのだけは速いっていうことで許して。。)
ソースの改変を行う場合
- とりあえずテストを走らせる
どのメソッドがどういう想定で動くように作られているのかを頭に入れてます。
また、一応全部グリーンだよね、ってことも確認しておきます。 - ソースの修正
改変の場合は、結構慎重に直してます。1メソッド直したらテストも直して走らせるってことをして変なことになっていないよね、ということを確認しながら進めてます。
コードが何かの原因でぶっ壊れたら
「あ〜なんかぶっ壊した、ワカンネ!」と周りに聞こえるように言ってから、潔く最後のコミットに戻します。
コードを書いている途中で仕様が変わったり、追加された場合
軽微なものは盛り込んで、そうでないものは後回しにしています。
後回しにする理由は、書いているプログラムに何か問題が発生した場合に、原因がどこにあったのかを解りやすくするためです。
また、一旦仕様に手が入る前の状態で作りきった後で対応するという風にした方が、進捗が遅れないように感じます。
※作りきっていない物に処理を追加したりしてプログラムの構造も変えようとすると変更の難易度が高くなるような気がする
終わりに
ソースコードをぶっ壊して作り直す下りはあまり共感されないに違いない。