C#でドメイン駆動開発パートを受講して

 

BADコードの作成

本コースでは、まずBADコード(保守性が低いコード)を作成し、どのコードがなぜBADコードなのかの解説します。

BADコードであることを理解した上でより保守性が高いコードの実装方法をハンズオン形式で学びます。

 

なぜ共通関数クラス(Commonクラス)はBADコードなのか

ここでは、単位や接続文字列などの定数をまとめたCommonConstクラスと温度を引数で指定された桁でまとめて文字列へ返す関数があるCommonFuncクラスを実装し、業務ロジック「温度を小数点2桁に丸めて単位℃をつける」RoundStringメソッドを実装しました。

 

CommonFuncクラス

 

さまざまなクラスから呼び出される共通関数(Common)は潜在的なBADコードです。(実際にこれまで携わった現場でCommonと名の付く共通関数クラスは見てきました。)

 

理由としては、温度を2桁で丸めて単位℃をつける際はCommonFuncクラスのRoundStringメソッドを使わなければならないことを覚えておかなければならないからです。

関数の存在を知らないメンバーが同じようなコードを書き出したり、画面実装コードに直接℃を書き込む人も現れたりと同じような業務ロジックが散在しがちになります。

 

テストコードとは何か

 

テスト駆動開発

テスト駆動開発では、先に失敗するテストコードを実装し、後からテストコードが問題なく成功するように実装していきます。テストエクスプローラーから分かるようにテストを実行し、失敗すると該当メソッドが赤くなります。

 

サンプルテストコード


実例として、WeatherLatestViewModel.csのテストコードWeatherLatestViewModelTest.csを先に書きます。この時点では、WeatherLatestViewModelは実装せずに、先にテストコードのみを実装しテストを実施します。

 

WeatherLatestViewModelTestのテストコード

 

テストコードがエラーとなるため、WeatherLatestViewModelを実装します。この段階でもテストコードはエラーとなります。

 

WeatherLatestViewModelのコード


string.Emptyで初期化する実装を加えて、テストコードを成功させます。

WeatherLatestViewModelのコード02