我的老板认为自己是OOP Guru,我认为他是一个业余爱好者程序员。他处理我们的Sage开发,为我们的客户Sage安装添加定制要求。他最近对反思感到非常兴奋,他正在反思Sage的代码汇编和更改私人成员和事件处理程序。我认为这不是一个好主意,但他让我失望,说Sage认为他能做到这一点真是太神奇了。我认为这是不好的做法,因为它效率低下,因为如果他们在任何时候改变他们的实现,我们的代码就会崩溃。我的意思是,通常开发人员出于某种原因私有化了吗?
关于此的一般规则是什么?
如果这看起来像一个愚蠢的问题,非常感谢和道歉。
保
答案 0 :(得分:4)
你是对的。如果你依赖于第三方库的实现细节,你最好准备好在更新第三方库时重写所有内容,以及当你用一些“无辜”值更改某些私有变量时出现意外的副作用。
答案是只有当你100%确定自己在做什么并准备好面对后果时才能做到。
答案 1 :(得分:2)
您不应该修改现有的程序集 - 结果可能是未知的,并且组件供应商肯定不支持。此外,此类更改将失去程序集签名,保证程序集是供应商提供的版本。
基本上,任何事情都可能发生,因此,除非您愿意进行非常严格的测试,并且没有供应商的支持,否则请保持良好状态!
答案 2 :(得分:1)
程序集的每个新版本都可以具有完全不同的实现。 Sage的软件更新可能会使您的Boss代码完全无效,并且需要完全重新开发才能重新建立相同的功能。
对于一个真实的例子:.NET 3.5中的StringBuilder
在内部使用了string
,在.NET 4中它使用了char[]
,请参阅此recent question。)