gpt4 book ai didi

c# - list 上应该包含哪些内容可以帮助开发优秀的 OO 软件?

转载 作者:IT王子 更新时间:2023-10-29 04:19:55 25 4
gpt4 key购买 nike

我几年前使用过 OO 编程语言和技术(主要是在 C++ 上),但在此期间并没有对 OO 做太多。

我开始用 C# 制作一个小实用程序。我可以在不使用良好的 OO 实践的情况下简单地对所有内容进行编程,但这对我来说应用 OO 技术是一个很好的复习。

就像数据库规范化级别一样,我正在寻找一个 list ,它会提醒我“好的”面向对象程序的各种经验法则 - 一个简明的是/否列表,我可以在设计和实现期间偶尔阅读以防止我按程序思考和工作。如果它包含适当的 OO 术语和概念,那么任何检查项目都可以轻松搜索以获取更多信息,将会更有用。

list 上应该包含哪些内容可以帮助开发优秀的 OO 软件?

相反,可以应用哪些“测试”来表明软件不是面向对象的?

最佳答案

  • 对象事情。 (整个 OOP 中最重要的一点!) 不要将他们视为“数据持有者”- 向他们发送消息以做某事。我的课应该有哪些动词? “责任驱动设计”的思想流派在这方面非常出色。 (请参阅对象设计:角色、职责和协作,Rebecca Wirfs-Brock 和 Alan McKean,Addison-Wesley 2003,ISBN 0201379430。)
  • 对于系统必须做的每一件事,提出一系列具体场景来描述对象如何相互交谈以完成工作。这意味着根据交互图进行思考并执行方法调用。 - 不要从类图开始 - 那是 SQL 思维而不是 OO 思维。
  • 学习测试驱动开发。没有人预先得到他们的对象模型,但如果你使用 TDD,你就在做基础工作以确保你的对象模型能够它需要什么,并确保在以后发生变化时可以安全地进行重构。
  • 只为满足您现在的需求而构建 - 不要执着于“重用”或“以后有用”的东西。如果您只构建您现在需要的东西,您就可以为您以后可以做的事情留出更多的设计空间。
  • 在建模对象时忘记继承。它只是实现通用代码的一种方式。当您为对象建模时,只需假装您正在通过一个描述可以要求它做什么的界面来查看每个对象。
  • 如果一个方法需要大量参数,或者如果您需要重复调​​用一堆对象来获取大量数据,则该方法可能位于错误的类中。方法最好的位置是就在它在同一个类(或父类(super class)......)中使用的大多数字段旁边
  • 阅读适用于您的语言的设计模式书籍。如果是 C#,请尝试 Steve Metsker 撰写的“C# 中的设计模式”。这将教给您一系列可用于在对象之间分配工作的技巧。
  • 不要测试一个对象来查看它是什么类型,然后根据该类型采取行动 - 这是一种代码味道,该对象可能应该完成工作。它暗示您应该调用该对象并要求它完成工作。 (如果只有某些类型的对象完成工作,您可以简单地在某些对象中实现“什么都不做”……这是合法的 OOP。)
  • 将方法和数据放在正确的类中可以使 OO 代码运行得更快(并为虚拟机提供更好优化的机会)——这不仅仅是美学或理论方面的问题。Shamble 和 Cohen 的研究指出了这一点出 - 见 http://portal.acm.org/citation.cfm?doid=159420.155839 (参见“每个场景执行的指令数”的指标图)

关于c# - list 上应该包含哪些内容可以帮助开发优秀的 OO 软件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/915649/

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