我有一个服务/经理类,我从数据源获取用户。这些方法在流程中是模拟的,但具有不同的检索方法。
public User GetByUserName(string userName)
{
user = dependencyResolver.UserRepository.GetByUserName(userName);
if (user == null) return null;
AddStuffToUser();
return user;
}
public User GetById(int id)
{
user = dependencyResolver.UserRepository.GetById(id);
if (user == null) return null;
AddStuffToUser();
return user;
}
public User GetByUserName(string userName, string encryptedPassword)
{
user = dependencyResolver.UserRepository.GetByUsernameAndPassword(userName, encryptedPassword);
if (user == null) return null;
AddStuffToUser();
return user;
}
我想删除流逻辑的重复,但我找不到令人满意的设计。我可以通过使用OOP来实现,但我认为这为这么简单的任务增加了很多复杂性。我也尝试将fetch方法作为Func<>
参数传递,但由于fetch方法具有不同的参数,我没有把它弄好。
我的选择在哪里?
答案 0 :(得分:0)
替换:
if (user == null) return null;
AddStuffToUser();
return user;
使用:
return doXYZ(user);
并添加:
private User doXYZ(User user){
if (user != null){
AddStuffToUser();
return user;}
return null;
此时你已经放置了9行9和更好的代码风格(OOP标准在任何任务中都很有用)