class DataAccess
{
…
HogeHoge( DateTime.Today.Subtract( new TimeSpan( 1, 1, 1, 1 ) ) );
…
}
HogeHoge() は日付を指定して、何らかの処理を行う。
上記は日付に昨日を指定して HogeHoge() を使った。
class DataAccess
{
…
FugaFuga( DateTime.Today.Subtract( new TimeSpan( 1, 1, 1, 1 ) ) );
…
}
FugaFuga() も日付を指定して、何らかの処理を行う。
上記は日付に昨日を指定して FugaFuga() を使った。
よくよく考えたら、
DateTime.Today.Subtract( new TimeSpan( 1, 1, 1, 1 ) );
というのは、昨日というのが直感的ではないし、コードの重複だ!
class DataAccess
{
…
private DateTime YesterDay
{
get
{
return DateTime.Today.Subtract( new TimeSpan( 1, 1, 1, 1 ) );
}
}
…
HogeHoge( YeserDay );
FugaFuga( YeserDay );
}
最高だ…。自分に酔いそうだ…。
しかし、「YesterDay」って、このクラスのプロパティか?しかもインスタンスメンバか?
private static DateTime YesterDay()
{
return DateTime.Today.Subtract( new TimeSpan( 1, 1, 1, 1 ) );
}
まぁ、private だしどっちにしても些細な事だろう。
別のクラスにて…
class Book
{
…
FooFoo( DateTime.Today.Subtract( new TimeSpan( 1, 1, 1, 1 ) );
…
}
お?これはさっきのメソッドが使えるな。さっきのメソッドは public にしよう。
しかし、DataAccess クラスに YesterDay() というメソッドはおかしい。別のクラスへ移動だ!
class Util
{
public static DateTime YesterDay()
{
return DateTime.Today.Subtract( new TimeSpan( 1, 1, 1, 1 ) );
}
}
最高だ…。自分に酔いそうだ…。
一緒に開発している田中にも教えてやろう。
「田中。昨日機能を使いたかったら Util クラスを使いなよ」
しばらくして鈴木のコードを見ていると、
class Form1
{
…
YouYou( YesterDay() );
…
private static DateTime YesterDay()
{
return DateTime.Today.Subtract( new TimeSpan( 1, 1, 1, 1 ) );
}
}
全く同じじゃないか!何故 Util クラスを使わないんだ?
鈴木はこう言った。
「昨日が必要になったとき、昨日機能を提供しているクラスがないかなぁとは思わない。だから探さない」