Javaプログラミング能力認定試験の問題がかなり改善されていました

以前、本ブログでJavaプログラミング能力認定試験の1級のサンプルプログラムがあまりにも旧態依然とした設計でひどいという指摘をさせていただきました。
SI業界(日本)のJavaプログラマーにはオブジェクト指向より忍耐力が求められている? - 達人プログラマーを目指して
実際、例題のプログラムがあまりにも理解しにくかったので、そこでは、

日本のSI業界でJava PGとして仕事をするためには、オブジェクト指向的にきれいなあるべき姿でコーディングできるスキルではなく、このようにオブジェクト指向をまったく理解していない上流のSEが作成した異常な設計書に忠実にしたがってコードを書き、また、その複雑なスパゲッティコードを長期にわたってメンテナンスする根性と忍耐が最重要のスキルとして試験で試されているということなのかと私は理解しました。

と書いたのですが、冗談は抜きにして、実際、この例題のようなひどいプログラムが大量に作成されて長いこと保守されているということは、少なくとも私の経験上本当にまぎれもない事実なのです。必ずしも常に最新の技術を知っていることが最重要ではないとは思いますが、最低限オブジェクト指向プログラミングのような基本的な技術は、SI開発の現場で活用し、品質や生産性の向上に役立てていかなくてはならないと思うのです。
プログラマーの成長を考えないSIerの仮説は間違っている - 達人プログラマーを目指して
それで、先日この試験の話題が再びTwitterで少し話題となったため、今どうなっているのかなと確認してみたのですが、素晴らしいことに、いつのまにか全面的にリファクタリングされて書き直されていました。
サンプル問題 - 試験を知る - 個人の方 - Java™プログラミング能力認定試験│資格検定のサーティファイ│あなたのスキルアップを応援します|

  • インターフェースの使い方
  • UIとロジックの分離(ConsoleStatusという表示状態を抽象化した型を継承して、各処理を実装しているところはよくない。表示とロジックの関心事が混在して、変更の発散コードスメルがあります。)
  • 総称型の使い方(RecordListは総称化した方がよい)
  • コピペの存在(DisplayPersonsByNameStatus と DisplayPersonsByTypeStatusなど。ちなみにPersonsの英語は誤りで正しくはPeopleとすべき?)

などにおいて、今後まだまだ、改善の余地はありますが、何よりもまず、わかりやすい英語のクラス名が与えられていますし、可読性の上でも以前とは比較にならないほど向上して、パッと見にはずっとJavaらしい設計になっていました。
以前のバージョンは、

という状態で、何人もの勇者がこの怪物に対して果敢にリファクタリングに挑戦しても、まったく手におえる状態ではなく、あっけなくやられてしまうという状態だったのですが、ここからなら、TDDでリファクタリングすることも容易であると思います。基本的には以前とほぼ同じユースケースを実装しているようですが、コード記述量は圧倒的に改善されています。以前のひどいコードをご覧になった方は比較してみると、プログラムの設計が保守性に与える影響の大きさを知ることができるのではないでしょうか。
私のブログの影響なのかわかりませんが、これほどの短期間で対応していただいた関係者の方々に感謝いたします。