java – 我是否应该使用依赖注入以获得良好的设计和可测试代码?
发布时间:2020-12-15 02:09:14 所属栏目:Java 来源:网络整理
导读:我有一个代表图像的类:它叫做摄影. 构造函数如下所示: Photography::Photography(QString originalPath,QString appDirectory) { this.originalPath = originalPath; this.appDirectory = appDirectory;} 该类包含许多方法,如getTitle(),getCaption(),getS
我有一个代表图像的类:它叫做摄影.
构造函数如下所示: Photography::Photography(QString originalPath,QString appDirectory) { this.originalPath = originalPath; this.appDirectory = appDirectory; } 该类包含许多方法,如getTitle(),getCaption(),getSize(),isHorizo??ntal()等. 有一个名为getThumbnailPath()的公共方法如下所示: QString Photography::getThumbnailPath() { if (previewPath == "") { previewPath = appDirectory + "//cache//"+ getHash() +"-thumb.jpg"; } return previewPath; } 这个方法在内部调用getHash()方法: QString Photography::getHash() { if (myHash == "") { QCryptographicHash hash(QCryptographicHash::Md5); QByteArray result = hash.hash(originalPath.toUtf8(),QCryptographicHash::Md5); QString hashResult(result.toHex()); myHash = hashResult; } return myHash; } 我想知道的是,如果getHash()方法属于Photographyclass,或者应该在我自己的HashGenerator中,我应该注入到Photography类中. 但是,我不想在摄影构造函数中注入大量参数,只是为了使类可测试. 在这种情况下,如果我无法控制生成哈希的方法,我将面临getThumbnailPath()方法的测试我无法测试getThumbnailPath()方法. 解决方法
“但是,我不想在摄影构造函数中注入很多参数,只是为了让类可以测试.”
可测试性是任何代码的高质量.但更重要的是,通过将散列与散列生成器相关联,您可以解除责任并使代码更易于维护. 此外,现在这意味着你可以在没有摄影类的情况下独立测试散列.它现在是单元可测试的散列,给出了一条路径,例如不涉及摄影 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |