加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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()方法.

解决方法

“但是,我不想在摄影构造函数中注入很多参数,只是为了让类可以测试.”

可测试性是任何代码的高质量.但更重要的是,通过将散列与散列生成器相关联,您可以解除责任并使代码更易于维护.

此外,现在这意味着你可以在没有摄影类的情况下独立测试散列.它现在是单元可测试的散列,给出了一条路径,例如不涉及摄影

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读