gpt4 book ai didi

project-planning - 你如何从抽象的项目描述到实际的代码?

转载 作者:行者123 更新时间:2023-12-04 02:06:27 27 4
gpt4 key购买 nike

也许是因为我现在已经编写了大约两个学期的代码,但我目前遇到的主要障碍是将教授的项目描述和要求转换为实际代码。由于我目前在 Algorithms 101 中,我基本上是自下而上的过程,从空白白板开始,画出对象和方法的交互,然后将其转换为类和代码。

但是现在教授已经将接口(interface)和抽象类混合在一起了。在理智上,我可以识别它们是如何工作的,但是我正在努力弄清楚如何在当前项目(模拟 Web 服务器)中使用这些新工具。

用我的教授自己的话来说,将抽象描述映射到 Java 代码是真正的诀窍。那么从英语(或任何您的语言)到计算机代码的最佳步骤是什么?您如何决定在何时何地创建接口(interface)或使用抽象类?

最佳答案

So what steps are best used to go from English (or whatever your language is) to computer code?



经验是教你如何做到这一点的。如果它还没有自然而然地出现(如果没有也不要难过,因为这需要很长时间!),你可以问自己一些问题:
  • 系统的主要概念是什么?它们是如何相互关联的?如果我向其他人描述这个,我会使用什么词和短语?这些想法将帮助你决定哪些类是有用的。
  • 这些东西有什么样的行为?它们之间是否存在自然依赖关系? (例如,没有 LineItem 的上下文,Order 就没有相关性或意义,没有 EngineCar 也没有多大用处。)这些行为如何影响其他对象的状态?他们是否相互交流,如果是,以什么方式?这些想法将帮助您开发类的公共(public)接口(interface)。

  • 当然,这只是冰山一角。有关此思维过程的更多信息,请参阅 Eric Evans 的优秀著作 Domain-Driven Design .

    How do you decide where and when to create an interface, or use an abstract class?



    没有硬性规定;再次,经验是这里最好的指南。也就是说,您当然可以遵循一些经验法则:
  • 如果几个不相关或显着不同的对象类型都提供相同的功能,请使用接口(interface)。例如,如果 Steerable接口(interface)有 Steer(Vector bearing)方法,可能有很多不同的东西可以转向:Boat年代,Airplane年代,CargoShip年代,Car s 等等。这些是完全不相关的事情。但是它们都共享能够被操纵的通用界面。
  • 通常,尝试使用接口(interface)而不是抽象基类。这样,您可以定义一个实现 N 个接口(interface)的单个​​实现。在 Java 的情况下,您只能有一个抽象基类,因此一旦您说一个类继承自另一个类,您就会被锁定在一个特定的继承层次结构中。
  • 每当您不需要基类的实现时,绝对要优先使用接口(interface)而不是抽象基类。如果您使用不适用继承的语言进行操作,这也会很方便。例如,在 C# 中,不能有 struct从基类继承。
  • 关于project-planning - 你如何从抽象的项目描述到实际的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2520407/

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