Yabu.log

ITなどの雑記

レガシー

PhantomJSではlet文が使えない

用語 ES6:大きな変更が入った最近のjavascriptの仕様。モダンなブラウザは大体対応している Jasmine : javascriptのテスト環境 Karma:テストランナー。Jasmineを動かす PhantomJS:CUI用のブラウザー。テストランナーが利用している テストを書いたのでリフア…

テストのためだけのコード変更は許されるのか?

レガシーコード改善ガイドに以下のような一節がありました。 私はテストが簡単に書けるなら、変数をpublicにすることでカプセル化が壊れても通常は気にしません。 私はEffective Javaに強く影響を受けているのでメンバを書くときは極力公開性を最小にコーデ…

わけわからんコードにはとりあえず影響スケッチ。

影響スケッチとは? レガシーコード改善ガイドに掲載されている、影響を把握するための方法です。 影響はどのように伝搬するか 影響は 呼び出し側によって使われる戻り値 パラメータとして渡されるオブジェクトの変更 グローバルスコープのデータの変更 によ…

仕様化テストについて

仕様化テストとは何か コードから起こした仕様を検証するテストのこと。 大事なのは理想的な仕様を追い求めるのではなく、「現在のコードはこのように動いている」点を明らかにすること。 何のために行うか 機能追加の際に、理想的なテストを書いてしまうと…

時間がないときの機能追加(スプラウト/ラップ)

時間がないときは既存のソースにリファクタリングを行わずに機能追加をする。 その時に以下の二点を気をつける 既存ソースにテストを書けなくても新しいコードにはテストを書く 既存のソースの変更は最小限にとどめる 後述の方法で実現する スプラウトメソッ…

接合部と許容点

接合部 接合部(seam)とは、その場所を直接編集しなくても、プログラムの振る舞いを買えることのできる場所である。 許容点 どの接合部も許容点(enabling point)を持つ。許容店では、どの振る舞いを使うかを決定できる プリプロセッサ接合部 プロプロセッサ指…