Java 单一责任和方法
我想我可以在这里回答我自己的问题,但假设我理解SRP在方法层面上的意思是一个方法只起一个作用。如果我有一些方法,每个方法分别覆盖类中的一个特定角色,但是一个方法使用了大量这些方法来完成一个角色,比如save(),那么所有的方法都会遵守SRP吗 以下是一个例子:Java 单一责任和方法,java,software-design,solid-principles,code-cleanup,clean-architecture,Java,Software Design,Solid Principles,Code Cleanup,Clean Architecture,我想我可以在这里回答我自己的问题,但假设我理解SRP在方法层面上的意思是一个方法只起一个作用。如果我有一些方法,每个方法分别覆盖类中的一个特定角色,但是一个方法使用了大量这些方法来完成一个角色,比如save(),那么所有的方法都会遵守SRP吗 以下是一个例子: public void saveCertificationToDB(Cert cert){ if(certificateIsNotExpired(cert){ setCertProperties(cert);
public void saveCertificationToDB(Cert cert){
if(certificateIsNotExpired(cert){
setCertProperties(cert);
openConnectionToDB();
overwriteCertificateInDB(cert);
closeConnectionToDB();
notifyUserSaveSuccessful();
}
}
单一责任原则: 没有具体的规则,只是SRP是一个指南。但是如果你想为SRP思考,那么你应该始终牢记在心 更改类、函数等代码块的唯一原因 但是,根据给定的函数,有很多理由更改函数代码块 例如: 如果属性设置函数因任何原因修改,则必须更改您的saveCertificationToDB() 同样,如果其他调用函数因任何其他原因发生任何更改,则您的saveCertificationToDB()也需要更改
因此,一般来说,有很多缺陷主要是基于观点的;没有硬性规定。但是,其中包含“DB”的3个方法调用似乎应该位于方法名称
saveCertificationToDB
似乎适用的方法中。上面显示的方法可以称为validateAndSaveCertificationAndNotifyUser()
——尽管通常情况下,用户通知通常位于应用程序的一个完全不同的层中(但您可以在这个级别上有一个更通用的回调)——这取决于具体情况。