如何避免重复代码(设计模式)



我有几种具有相同逻辑的方法,但我看不到如何避免重复?每种方法内部调用另一个服务,否则内部服务调用之前和之后的逻辑是相同的,请参见下面的代码段。

任何帮助!

非常感谢,

代码

public List<Customer> GetCustomerDetail(int id)
{
  _log.debug("xxx");
  if(something)
  {
    _log.debug("yyy");
  }
  var results = _internalService.GetCustomer(id);
  if(results == null) 
  {
    _log.debug("no results");
  }
  return results;
}
public List<Customer> GetCompanyDetail(int id)
{
  _log.debug("xxx");
  if(something)
  {
    _log.debug("yyy");
  }
  var results = _internalService.GetCompany(id);
  if(results == null) 
  {
    _log.debug("no results");
  }
  return results;
}
...

使用委托:

public List<Customer> GetCustomerDetail(int id)
{
    return DoIt( () => _internalService.GetCustomer(id) );
}
public List<Customer> GetCompanyDetail(int id)
{
    return DoIt( () => _internalService.GetCompany(id) );
}
private T DoIt<T>( Func<T> func )
{
  _log.debug("xxx");
  if(something)
  {
    _log.debug("yyy");
  }
  var results = func();
  if(results == null) 
  {
    _log.debug("no results");
  }
  return results;
}

几个选项,具体取决于重复密度:

  1. 什么也不做。二三个dup可能不值得花时间花费时间
  2. 如果需要,制作一些字符串常数/可读字段。这将从代码中删除一些魔术字符串,并允许您整齐地更改它们。
  3. 将记录方法添加到(2),如果您重复执行重复。

相关内容

  • 没有找到相关文章

最新更新