技術資料:C#コードのリファクタリング ~ユーザーフレンドリーな設計~
目次
はじめに
本資料では、C#の簡単なプログラムを例に、コードのリファクタリング手法について解説します。リファクタリングとは、コードの動作を変更せずに、その構造や可読性、保守性を改善する作業のことです。
今回の例では、範囲内の数値入力を求めるプログラムを題材とし、ユーザー体験を向上させるための改善を行います。初学者にも理解しやすい記述を目指して、具体的なエラーメッセージの追加や、条件表現の簡潔化を実施しています。
元のコード
var num = 0;
while (num <= 0 || 5 <= num)
{
Console.WriteLine("1,2,3,4,のいずれかを入力してください");
var line = Console.ReadLine();
num = int.Parse(line);
}
Console.WriteLine($"{num}が入力されました");
解説
- 初期値
var num = 0;
を設定し、範囲外の数値に対してループを制御。 - 無効な入力がある場合、再度メッセージを表示する構造になっています。
- エラーメッセージとして「1,2,3,4,のいずれかを入力してください」を繰り返し表示しますが、無効な理由までは具体的に説明されていません。
リファクタリング後のコード
Console.WriteLine("1,2,3,4,のいずれかを入力してください");
while (true)
{
var line = Console.ReadLine();
var num = int.Parse(line);
if (1 <= num && num <= 4)
{
Console.WriteLine($"{num}が入力されました");
break;
}
Console.WriteLine("無効な入力です。1,2,3,4のいずれかを入力してください");
}
改善点
- 具体的なエラーメッセージ:
- 無効な入力に対して「無効な入力です」と明示し、理由を伝えることでユーザーフレンドリーに。
- ループ条件の簡略化:
while (true)
を使用し、break
による制御を採用。条件が簡潔で意図が明確。
- メッセージの一元化:
- 最初のメッセージをループ外に移動し、冗長な表示を排除。
- 条件記述の可読性向上:
- 条件を
1 <= num && num <= 4
と記述し、数学的で自然な順序に変更。
- 条件を
比較表
項目 | 元のコード | リファクタリング後のコード |
---|---|---|
ループ構造 | 条件付き while を記述 | while (true) を採用し、break で制御 |
読みやすさ | 条件の可読性がやや低い | 条件が自然な順序で記述され、理解しやすい |
実行例
元のコードの出力
1,2,3,4,のいずれかを入力してください
0
1,2,3,4,のいずれかを入力してください
5
1,2,3,4,のいずれかを入力してください
3
3が入力されました
リファクタリング後の出力
1,2,3,4,のいずれかを入力してください
0
無効な入力です。1,2,3,4のいずれかを入力してください
5
無効な入力です。1,2,3,4のいずれかを入力してください
3
3が入力されました
修正ポイントの意義
- 無効な入力に対して具体的なメッセージを追加し、ユーザーの理解を助ける。
- コード構造を簡潔化し、意図を明確に。
- 条件記述の順序を見直し、より読みやすく。
この資料を参考に、ユーザー体験を向上させるコードリファクタリングを心掛けてください。
ディスカッション
コメント一覧
まだ、コメントがありません