2

我的老板认为自己是 OOP 大师,而我认为他是业余程序员。他负责我们的 Sage 开发,为我们的客户 Sage 安装添加自定义要求。他最近对反思感到非常兴奋,他在代码中反思 Sage 的程序集并更改私有成员和事件处理程序。我认为这不是一个好主意,但他击落了我,说 Sage 认为他能做到这一点真是太棒了。我认为这是不好的做法,因为它效率低下,而且如果他们在任何时候更改实现,我们的代码都可能崩溃。我的意思是通常开发人员出于某种原因将某些东西设为私有,对吗?

这方面的一般规则是什么?

如果这似乎是一个愚蠢的问题,非常感谢和道歉。

保罗

4

3 回答 3

4

你说的对。如果您依赖于 3rd 方库的实现细节,那么您最好准备好在 3rd 方库更新时重写所有内容,以及在使用某些“无辜”值更改某些私有变量时出现意外的副作用。

答案是只有当你 100% 确定自己在做什么并且准备好面对后果时才去做。

于 2010-09-01T10:34:49.393 回答
2

您不应该修改现有的程序集 - 结果可能是未知的,并且程序集供应商肯定不支持。此外,此类更改将丢失保证程序集是供应商提供的版本的程序集签名。

基本上,任何事情都可能发生,所以除非您愿意进行非常严格的测试,并且没有供应商支持可以依靠,否则请远离!

于 2010-09-01T10:36:13.727 回答
1

程序集的每个新版本都可以有完全不同的实现。Sage 的软件更新可能会使您的 Boss 的代码完全失效,并且需要完全重新开发才能重新建立相同的功能。

举一个真实的例子:StringBuilder在 .NET 3.5 中使用 a 在string内部,在 .NET 4 中它使用 achar[]请参阅这个最近的问题。)

于 2010-09-01T10:53:31.497 回答