在方法层面尊重单一责任原则

时间:2017-03-26 16:42:48

标签: oop solid-principles single-responsibility-principle

在电子邮件发送的上下文中,如果查询方法内部的外部信息或者应该像第二个示例那样传递值,是否可以。

1

void sendEmail(int companyId) {  
    String companyName = this.selectCompanyName(companyId);
    String body = companyName;
    send(body);
}

2

void sendEmail(String companyName) {
    String body = companyName; 
    send(body);
}

1 个答案:

答案 0 :(得分:3)

,从方法查询仍然是单一责任(该方法仍然只做一件事:发送电子邮件)。这本身并不与原则相矛盾。

但是,该方法应直接传递给公司名称,而getCompanyName方法不应属于同一类型。

如果你想要关注SRP,你必须在类型上实际执行:如果类真的负责从(可能)数据库发送和提取东西吗?

  • 将邮件发送到公司名称
  • 从公司ID
  • 中查找公司名称

是两个独立的工作,每个工作都应该得到他们的类型。