gpt4 book ai didi

oop - 如何着手设计一个模块?

转载 作者:行者123 更新时间:2023-12-01 11:04:05 25 4
gpt4 key购买 nike

当你需要设计一个模块时,你通常是如何着手的?到目前为止,我已经关注了它的易用性、API 的直观性、可扩展性、性能等等。

但对我来说似乎相当简单和直接的东西可能对其他用户来说似乎过于复杂。虽然它不会经常发生,但它有时确实会发生在我们所有人身上(我希望)。

除了我已经提到的问题之外,在设计类层次结构/API/其他任何内容之前,您是否应该问自己任何问题?

如果您认为该问题更适合 SO 的不同部分,请随时迁移它,但我仍然想要一个答案。

干杯。

最佳答案

你的问题很好,也有答案,但是太复杂了,基本上就是编程经验。

制作软件有一般原则,但我想在这里,在这个简短的回答中,我可以给你一个你可以应用的概念。软件是一个领域的表示(比如银行软件是为金融系统量身定制的,或者雷达软件是为雷达检测的思想和原理量身定制的)。因此,软件就像一种理论:它完全适合您所在领域的当前知识,允许推论和扩展。如果有更多知识可用,则应扩展、完善理论或使其更通用以适应新知识,同时仍然对以前的知识有效。

因此,所有关于理论的概念都适用:

  • 在听起来同质且集成良好的统一框架中满足您的知识强加的要求。
  • 要简单,但要寻找可以使之更通用的模式,并突出这些模式以实现更好的集成。
  • 不要太简单。如果您的软件不符合要求,那么您的理论就太有限了,必须加以扩展。
  • 允许您的软件适应新的需求,软件不是一成不变的。它会发生变异和发展,以适应新的需求,或失去不再需要的功能。

所以,软件应该简约而不过度,美观但实用。

在实践这些指导时,我建议您留出时间来学习您的领域。你不能为你不理解的东西建模。学习基础知识,从简单的事情开始,然后逐步完善它们。你偶尔会看到有些东西“感觉”在了错误的地方。问自己一些问题,例如

  • “谁负责做这个手术?”
  • “这种依赖关系是否合乎逻辑并且是该对象工作所必需的,还是由于糟糕的代码组织而导致的虚假依赖关系?”
  • “这是高级功能还是低级功能?”
  • “我在重复这个吗?”
  • “我可以在内部更改这个对象/层/子系统而不让外部代码知道吗?”
  • “我可以在不破坏过去或使过去无效的情况下在未来扩展它吗?”
  • “我可以轻松地测试和探查此功能的正确行为吗?”
  • “理解和使用起来简单直观吗?”
  • “我可以轻松地重新组合我已经拥有的东西,而无需触及以实现新的行为吗?”
  • “这个功能是否是独立的,这样我就可以向外界展示它,而无需我操作其他大量代码?”

关于oop - 如何着手设计一个模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7820443/

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