Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
例如,片段 A
String readSource(String file);
片段 B
String readSource(InputStream in);
所以如果我们将接口定义为A,那么我们只能创建一个文件,只是为了测试。但是一段时间后管理测试文件会变得相当困难。所以使用B接口,会使测试更容易。我只需要创建一个假的InputStream,然后检查该方法是否返回我们想要的结果。但是我们必须IOException在每次调用这个方法之前处理好。
InputStream
IOException
如果您遵循 TDD,那么我会说采用更可测试的方法,但这确实是个人喜好问题。快速思考……使用代码片段 B 时,代码是否易于使用/维护?如果是这样,那么就没有缺点,这绝对是要走的路。
如果readSource()做的不仅仅是返回文件的内容,我肯定会选择解决方案 B。
readSource()
除了更好的可测试性之外,引入一个新的抽象概念InputStream(从它(单一责任原则)。