<分区>
我们最近讨论了为方便开发人员在接口(interface)中定义方法。给定以下最小示例:
public interface aInterface{
public void setUri(Uri uri);
public void setUri(String uri);
}
public class aClass implements aInterface{
@Override
public void setUri(Uri uri){
//do something with uri
}
@Override
public void setUri(String uri){
set Uri(new Uri(uri));
}
}
实现途径 1: 我们中的一位建议前瞻性地定义这两种方法,以免开发人员在想要使用接口(interface)的实现时编写样板代码。这将前瞻性地完成,不知道最终经常使用这两种方法中的哪一种。带有 String 类型参数的方法明确旨在方便开发人员。
实现路径 2: 另一个人指出,只应创建 setUri(Uri uri),因为您要求接口(interface)的实现者实现这两种方法,这会导致接口(interface)用户付出更多的努力(测试等),这会带来更好的类型安全性。
我看到了以下几个方面:
- 根据 YAGNI 原则,只应创建两种方法中的一种 - 更适合预期特征的一种
- 仅实现
setUri(Uri)
方法可能会导致更多的样板代码,如果通常只有一个字符串可用的话。特别是如果Uri
-Type 的构造更加复杂。最后,这违反了 DRY 原则,因为Uri
-Type 的构造在方法的不同用法中重复。
哪个代码约定可以应用于此问题设置? 这对两种实现途径的影响是什么?