Code Complete 2をまだ読んでいない人にとって、擬似コードプログラミングプロセスは、基本的に、最初に平易な英語でルーチンを記述し、次にそれをより詳細な擬似コードに、そして最後にコードに改訂することによってルーチンを設計する方法です。これの主な利点は、システムをボトムアップではなくトップダウンで構築し、それによって別個のレイヤーでクリーンなAPIを進化させることにより、適切なレベルの抽象化を維持できるようにすることです。TDDは、テストに合格するために最低限のことを行うことに重点を置きすぎており、事前の設計をほとんど奨励していないため、これでは効果が低いことがわかります。また、不安定なコード(常にリファクタリングされているコード)の一連の単体テストを維持することは非常に難しいこともわかりました。これは、通常、1回または2回だけ必要なルーチンの単体テストが12個ある場合だからです。リファクタリングを行う場合(たとえば、メソッドのシグネチャを変更する場合)、行う作業のほとんどは、製品コードではなくテストの更新です。コンポーネントのコードが少し安定した後で、単体テストを追加することを好みます。
私の質問は、両方のアプローチを試した人のうち、どちらが好きですか?