私は個人的に、戻り値/Enum
型の周りをプログラムするのは好きではありません。戻り値の型が多いほど、テスト/操作する必要があるパスが多くなります。また、例外を使用してフローを制御することは、悪い習慣です (他のオプションが本当に見つからない場合を除きますが、通常はより良いオプションがあります)。
期限切れのパスワードは、私にとって特別なことではありません。結局のところ、それは有効な状態です(または、パスワードに対して何かをして、まったく期限切れになるでしょう)
私はそれを単純に保ち、呼び出し元が直接呼び出すことができるabool
または a のようなものを返すようにしています。Func<T>
おそらくそのようなもの:
public class User
{
private DateTime _lastChangeDate;
public Action Validate()
{
if (_lastChangeDate >= DateTime.Now.AddDays(-30))
{
return new Action(() => this.Login());
}
else
{
return new Action(() => this.ChangePassword());
}
}
private void Login()
{
Console.WriteLine("Login");
}
private void ChangePassword()
{
Console.WriteLine("Change Password");
}
}
呼び出し側:
user.Validate().Invoke();