gpt4 book ai didi

Java:如果只有一个类将使用新类,重构/解耦是否有用?

转载 作者:搜寻专家 更新时间:2023-11-01 02:59:10 26 4
gpt4 key购买 nike

代码:

public class Name {

private String[] name;
private String first;
private String middle;
private String last;
private String suffix;


public Name (String fullName) {
//Name is parsed in constructor
parse1();
parse2();
parse3();
//invoking more parse methods...
}

private void parse1() {}
private void parse2() {}
private void parse3() {}
//more parse methods...

构造函数下面的那些方法有助于解析fullName。我想将这些 parse#() 方法移动到另一个类,比如 NameHelper.class 并使所有内容都在那里 public static 但我内心的东西说像这样重构是没有用的,因为不是其他类而是 Name 会使用它。

我确实想重构,因为稍后,这将很难进行单元测试。但我不想牺牲轻松测试而不是糟糕的代码重构,因为我总是可以使用 PowerMockito 来测试私有(private)代码。

最佳答案

总是有帮助的一件事是调查责任。名字首先是……名字。

在我看来,解析字符串以创建名称似乎是一种责任,不一定属于该名称。它实际上更像是一个关联的“助手”或“服务”功能。

从这个意义上讲,只需创建该包 protected 附加类并将解析代码移入其中。

但郑重声明:我不会将事情设为私有(private),然后求助于 Powermock 锤子以对其进行测试。尤其是真正基于输入/输出的代码;为什么首先需要模拟?

我的意思是:这听起来像是您正在输入 strings,因此,您会收到一些 Name 对象。因此:您的单元测试有一些测试输入数据,实例化 NameParserService;然后检查输出是否正确。不需要任何类型的模拟/ stub !

关于Java:如果只有一个类将使用新类,重构/解耦是否有用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41191658/

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