gpt4 book ai didi

java - 我是否应该使用依赖注入(inject)以获得良好的设计和可测试的代码?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:22:25 25 4
gpt4 key购买 nike

我有一个表示图像的类:它称为 Photography

构造函数如下所示:

Photography::Photography(QString originalPath, QString appDirectory) {
this.originalPath = originalPath;
this.appDirectory = appDirectory;
}

该类包含许多方法,如 getTitle()getCaption()getSize()isHorizo​​ntal()

有一个名为 getThumbnailPath()public 方法,如下所示:

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() 方法是否属于 Photography 类,或者应该在它自己的 HashGenerator 中我应该注入(inject) Photography 类。

但是,我不想为了使类可测试而在 Photography 构造函数中注入(inject)大量参数。

在这种情况下,如果我无法控制生成哈希的方法,我将面临 getThumbnailPath() 方法的测试,我无法测试 getThumbnailPath( ) 方法。

最佳答案

“但是,我不想在 Photography 构造函数中注入(inject)大量参数,只是为了让类可测试。”

可测试 是任何代码段的良好品质。但更重要的是,您通过将散列与散列生成器相关联来分离责任并使代码更易于维护。

此外,这现在意味着您可以在没有摄影类的情况下独立测试散列。它现在单元可测试的散列给定路径例如不涉及摄影

关于java - 我是否应该使用依赖注入(inject)以获得良好的设计和可测试的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32261615/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com