【发布时间】:2016-04-11 15:13:24
【问题描述】:
我正在尝试了解单一职责原则并确定我的系统中可能存在的类。
现在我知道鲍勃叔叔所说的原则,即
避免使用 狡猾的词,例如经理、数据、超级或处理器。
我们应该能够在不使用“if”、“and”、“or”和“but”之类的词的情况下用少于25个词来编写类描述。
但是,当我尝试确定我是否真的遵循 SRP 正确时,就会出现问题。
例如:我有一个场景 1. 我需要向用户发送电子邮件。 2. 用户点击链接时验证邮箱
所以,我的课是这样的:
场景 1:
class EmailVerifier
{
function sendEmail();
function verifyEmail();
}
或
场景 2:
class EmailVerifier
{
function verifyEmail();
}
class MailSender
{
function verifyEmail();
}
如果我说场景 1 是正确的,我试着写 class 的描述,就像,
EmailVerifier 类向客户发送电子邮件并验证电子邮件。
如果我说场景 2 是正确的,那么对于我遇到的每个 verb 或每个函数,例如: verifyEmail(),sendEmail(),addEmail() ,我需要创建新类。
请告诉我什么是正确的方法。
还有,
我有一个场景,我必须,
添加客户、删除客户、编辑客户、保存客户 搜索客户、选择所有客户、按 id 查找客户
对于这样的类,我可以将它们命名为 CustomerService 类或任何其他命名策略会更好。
注意:我已经看到过类似的其他问题
Naming Classes - How to avoid calling everything a "<WhatEver>Manager"?
【问题讨论】:
标签: solid-principles design-principles