gpt4 book ai didi

c# - 内部并在私有(private) api 中受到保护

转载 作者:太空宇宙 更新时间:2023-11-03 19:31:48 26 4
gpt4 key购买 nike

我在大约 12 人的开发团队中工作,我们构建了一套合理的 API,我们严格仅在内部使用。通常所有类和接口(interface)都是公共(public)的,因为这就是它们完成的方式。我经常考虑将一些构造函数设为内部的值(value),以便 API 的使用者(尽管是内部的)必须使用工厂或其他一些我现在想不到的原因。

这是您和您的团队在实践的事情吗?

这对您的单元测试有何影响?您是否发现可以通过工厂对类进行单元测试,还是可以通过 PrivateObject 之类的方式访问构造函数?

最佳答案

答案是肯定的;我当前的项目只有一个开发人员在工作——我——但我仍然使用可见性和其他访问修饰符,以及必要时更复杂的设计模式。原因如下:

  • 编译器,如果您允许的话,可以成为您实现良好设计模式的最佳工具之一。将所有内容公开可能会在以后引起很多麻烦,当您必须维护一个对象时,该对象在程序执行期间的正常状态是面向对象的,相当于一个人在手术台上生活,他的胸口裂开了,每个人都从他的 child 到他的电力公司,他都了解他,他们在他的重要器官中四处游荡,让他做他们想让他做的事。添加另一只手或移开一只手可能会导致患者心脏骤停。

  • 代码应该是自文档化的。标记为内部的类或类成员意味着它可能应该是;如果一切都是公开的,你不知道在与对象交互时是否有什么东西是你不应该接触的。再一次,你让你的病人坐在手术台上,突然一个新人进来,捕获肝脏然后说“嘿,这是做什么的?”。对象应该握手,被告知做某事然后放手去做,除了他们之外,其他人都不关心他们的肝脏功能。

  • 您的后代应该可以维护代码。这与前两条规则有关,但基本上,有人应该能够打开您的代码库,找到入口点并跟踪基本执行流程,同时查看沿途使用的对象并确定它们的一般形式和功能.回到我们手术台上的病人,假设五年后有人走进这个场景;一个人在一张 table 上裂开,里面有 50 个家伙。这看起来不像他见过的任何礼貌的社会习俗;它可能看起来最像是一种仪式性的活人祭祀,大多数人遇到这种情况时的第一 react 就是逃跑。

然而,硬币的另一面是,为自身利益而实现的设计模式通常是一件非常糟糕的事情。一旦你大学毕业并找到第一份工作,没有人会真正关心你是否知道如何实现策略模式,你不应该一有机会就这样做,只是说你做到了。每个模式都有一组适用的环境。如果您是一名医生,您会为下一位走进来只是说您可以做到的患者进行血管成形术吗?

关于c# - 内部并在私有(private) api 中受到保护,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4433481/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com