我正在设计一个新系统,我有很多接口,它们会随着系统的时间而增长。命名此接口的最佳实践是什么

ISomethingV01
ISomethingV02
etc

我这样做

public interface ISomething{
      void method();
}

那么我必须添加方法 2 那么现在我该怎么办?

public interface ISomethingV2:ISomething{
      void method2();
}

或者同样的其他方式?

有帮助吗?

解决方案

理想情况下,您不应该经常更改界面(如果有的话)。如果您确实需要更改接口,您应该重新考虑其用途并查看原始名称是否仍然适用。

如果您仍然觉得界面会发生变化,并且界面变化很小(添加项目)并且您可以控制整个代码库,那么您应该只修改界面并修复所有编译错误。

如果您的更改是接口使用方式的更改,那么您需要创建一个单独的接口(很可能使用不同的名称)来支持该替代使用模式。

即使您最终创建了 ISomething、ISomething2 和 ISomething3,界面的使用者也将很难弄清楚这些界面之间的差异。他们什么时候应该使用 ISomething2,什么时候应该使用 ISomething3?然后你必须着手废弃 ISomething 和 ISomething2 的过程。

其他提示

我认为你过度滥用接口。

迈耶和马丁告诉我们:“开放扩展,关闭修改!”

然后 Cwalina(等人)重申:

从框架设计指南...

通常,课程是揭示抽象的首选构造。接口的主要缺点是,在允许API的演变方面,它们的灵活性要比类要少得多。一旦您运送界面,其成员的集合将永远固定。接口的任何添加都会破坏实现接口的现有类型。

类提供了更大的灵活性。您可以将成员添加到已经发货的课程中。只要该方法不是抽象的(即,只要您提供该方法的默认实现),任何现有的派生类都将继续保持不变。

alt text

我同意 加罗·耶里亚扎里安, ,改变界面是一个严肃的决定。另外,如果您想推广新版本界面的使用,您应该将旧版本标记为已过时。在.NET中你可以添加 过时属性.

接口的目的是定义类型必须实现的抽象模式。

最好实施为:

public interface ISomething

public class Something1 : ISomething
public class Something2 : ISomething

通过创建同一接口的多个版本,您不会获得任何代码可重用性或可扩展设计的形式。

我不知道为什么人们对你的帖子投反对票。我认为好的命名准则是 非常 重要的。

如果您需要保持与上一个版本的兼容性。同一接口的版本考虑使用继承。如果您需要引入新版本的界面,请考虑以下规则:

尝试在接口中添加有意义的后缀。如果无法创建简洁的名称,请考虑添加版本号。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top