它是不好的做法,编写定义依赖于另一个库?

的接口的库

我知道紧耦合不好,但使用.NET类时,这是否仍然适用?

例如,在.NET中,如果我有一个返回Color对象库,它会迫使对使用我的图书馆对任何一个System.Drawing中扶养。我会从我的图书馆里创造我自己的颜色类型的类更好?

有帮助吗?

解决方案

我之间的 挥发性 <区分/强>和稳定依赖

在一般情况下,颜色看起来像一个稳定的依赖,因为它已经在BCL,这是确定的性质,不涉及任何资源密集型的进程间通信外的,而且也不依赖于特定的建立其运行时环境。

这里唯一要考虑的是,当涉及到颜色,有在BCL不止一个这样的类,所以一定要确保你真正的意思是只针对Windows窗体应用程序与你的API,因为WPF都有自己的定义颜色。

如果你只需要颜色漆UI的部分中某一种颜色,然后内置Color类可能是好的,但如果颜色是你的域模型的主要概念,你需要针对不同的用户界面(WPF,Windows窗体,网络),你很可能会更好定义自己的抽象。

在这种更先进的情况下,可以随后创建适配器和映射器在你的抽象弥合抽象和具体的颜色类别之间的差距。

其他提示

如果这是一个标准的.NET库,我就不会担心。没有理由映射从一个类到另一个...如果System.Color在未来的.NET版本改变了什么?你必须得改变你的映射代码,并可能需要识别的版本,并相应地映射。这是一个真正的痛苦。

使用我所有的图书馆,我回仅仅取决于在图书馆的事情的对象。

我会问自己,为什么我写这将取决于另一个命名空间,这不是隐含库。这似乎违背了整个“封装”的概念。

所以才转到了我自己的推理和面向对象的知识,我会说你是正确的轨道上返回自己非依赖的对象。

您提出一个非常好的问题。答案是:这取决于。在标准库,将永远是可用的情况下,那么它的罚款;核心库引用不同的.DLL所有的时间。

在第三方库的情况下,你遇到的问题。这并不总是推出自己的,如果别的东西你想要做什么是一个好主意,但你必须在其他库,这对于用户来讲是后勤问题的依赖。

这里没有正确的答案,你就必须去用什么让你的项目最有意义。尝试尽可能多的去耦越好,是的,但有时你只是爱拥抱起来,把工作做好。

这要看你的这个类的用法。

如果你需要从你的颜色类的实例获得系统Color类的一个实例(例如,如果你画到Windows窗体),那么这将是更好地使用系统类 - 它可以节省你的努力有两个类型之间的转换,让您的能够使用Color类的所有的“功能”免费(比如内置的常量“红色”,“黑色”,“绿色”等方面的优势..

如果在另一方面,你只是用任意的RGB值(也许对科学计算)的工作和的从不的需要转换为System.Color的实例,那么它可能是有意义的创建自己的类。

在所有的可能性,你最好使用System.Color类 - 是封装和所有的是一个好主意,但不是在节省您的时间大量的费用

您不必担心在.NET核心库使用任何东西。在写一个DLL没有它,你就不会走得很远。唯一的地方可能要小心周围是System.Web命名空间,因为我相信.NET 4的客户端文件安装,如果你使用此安装程序只会安装的东西预计将在客户端上使用这基本上意味着。我个人认为这是微软的部分是一个坏主意,因为它只是增加了非必要的并发症为节省下载时间量小。

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