繁体   English   中英

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

[英]Java: Is there use to refactoring/decoupling if only one class will use the new class?

码:

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来测试私有代码。

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

解析字符串创建一个名称给我看起来像不一定属于名称责任。 实际上,它实际上是一个关联的“帮助程序”或“服务”功能。

从这个意义上讲,只需创建该包保护的其他类,然后将解析代码移入其中即可。

但请注意:我不会将事情变得私密,然后转向Powermock锤进行测试。 特别是真正基于输入/输出的代码; 为什么首先需要嘲笑?

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

如果您认为这会使您的代码更好,请进行重构。 我没有理由不把他们放在另一个班级。 它也可能使其更具可读性。 如果您不尝试获取实例变量,则无需在其中放置这些方法。 您可能希望对其进行保护,并将它们放入相同的软件包或默认(packet-private)访问权限。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM