『コードの美しさ』第三章読後感(二)

1836 ワード

この章では、テストの主な目的は、コードに対する信頼を絶えず強化し、再確認することです.すなわち、コードが正しく、効率的に機能していることです.文章は、最もきれいなテストは私たちの自信を最大化できるテストだと考えています.この自信は、コードが要求された機能を実現し、それを維持していることです.コードの異なる側面のプロパティを検証するには、異なるタイプのテストが必要であるため、「きれい」に対する評価基準も固定されていません.本の中でテストをきれいにできる3つの方法を調べた.
1テストは簡単できれいです
2テストは、コードをより優雅に、よりメンテナンス可能で、よりテストしやすい方法を明らかにしたため、きれいです.
3深さと広さできれいなテスト
二分法の有名なbugのJava実現について
public static int buggyBinarySearch(int[] a, int target) {
    int low = 0;
    int high = a.length - 1;
    while (low <= high) 
    {
        int mid = (low + high) / 2;
        int midVal = a[mid];
        if (midVal < target)
            low = mid + 1;
        else if (midVal > target)
            high = mid - 1;
        else
            return mid;
    }
    return -1;
}

これを読んで恥ずかしくて、今日やっと以前書いた二分法が間違っていることを知った.
lowとhighの和がIntegerより大きい場合.MAX_VALUE,(int mid = (low + high)/2;計算はオーバーフローし、負の数になり、2で除算された場合も負の数になります.本の中で解決の方法に言及して、int mid=low+((high-low)/2);またはint mid=(low+high)>>1;コードは確かに私たちが細かく彫る価値があります.プログラムコードの数値に関する境界問題はもっと頭に浮かぶべきです.本の中でタバコのテスト、境界テスト、ランダムテストについて、一定の説明をしました.テストをさらに理解するのに役立ちました.その重要な意義を意識して、本当にきれいなコードと来るのは容易ではありません.
「もしあなたのテストがすべて合格したら、それはいつもあなたのテストが足りないことを示しています.」今の私にとってこの言叶は深く同感で、ふだん书いたコードはほとんどテストしないので、何度も成功すれば终わりますが、私たちは时には别の角度から、文句を言う目で问题を発见して、このようにしてこそもっと大きな进歩を得ることができます.