总结:
SRP好处:
消除耦合,减小因需求变化引起代码僵化性臭味
注意点:
1.一个合理的类,应该仅有一个引起它变化的原因,即单一职责;
2.在没有变化征兆的情况下应用SRP或其他原则是不明智的;
3.在需求实际发生变化时就应该应用SRP等原则来重构代码;
4.使用测试驱动开发会迫使我们在设计出现臭味之前分离不合理代码;
4.如果测试不能迫使职责分离,僵化性和脆弱性的臭味会变得很强烈,那就应该用Facade或Proxy模式对代码重构;
实例:
违反SRP原则代码:
modem接口明显具有两个职责:连接管理和数据通讯;
interface Modem
{
public void dial(string pno);
public void hangup();
public void send(char c);
public void recv();
}
如果应用程序变化影响连接函数,那么就需要重构:
interface DataChannel
{
public void send(char c);
public void recv();
}
interface Connection
{
public void dial(string pno);
public void hangup();
}
SRP好处:
消除耦合,减小因需求变化引起代码僵化性臭味
注意点:
1.一个合理的类,应该仅有一个引起它变化的原因,即单一职责;
2.在没有变化征兆的情况下应用SRP或其他原则是不明智的;
3.在需求实际发生变化时就应该应用SRP等原则来重构代码;
4.使用测试驱动开发会迫使我们在设计出现臭味之前分离不合理代码;
4.如果测试不能迫使职责分离,僵化性和脆弱性的臭味会变得很强烈,那就应该用Facade或Proxy模式对代码重构;
实例:
违反SRP原则代码:
modem接口明显具有两个职责:连接管理和数据通讯;
interface Modem
{
public void dial(string pno);
public void hangup();
public void send(char c);
public void recv();
}
如果应用程序变化影响连接函数,那么就需要重构:
interface DataChannel
{
public void send(char c);
public void recv();
}
interface Connection
{
public void dial(string pno);
public void hangup();
}
浙公网安备 33010602011771号