Language agnostic 从哪里开始编程?

Language agnostic 从哪里开始编程?,language-agnostic,coding-style,methodology,Language Agnostic,Coding Style,Methodology,一旦您完成了第一组需求和设计,您从哪里开始编程?(假设测试将以相同的顺序编写,但在编写代码之前) 入口点 框架/支持类 实体类 先做最简单的事 最难的事先做 你有什么建议?我从依赖链的最低层工作到最高层。这样,我就可以尽早编译和测试一些东西,然后我就可以在它的基础上继续构建。我从我的数据结构(DB表、XTD、数据字典等)开始 然后,数据将如何进出所述结构(数据访问层) 然后是业务对象及其关联逻辑 最后,我倾向于首先编写和测试支持框架类的用户界面和将这些编程挂钩附加到我的业务逻辑。我发现,如果

一旦您完成了第一组需求和设计,您从哪里开始编程?(假设测试将以相同的顺序编写,但在编写代码之前)

  • 入口点
  • 框架/支持类
  • 实体类
  • 先做最简单的事
  • 最难的事先做

你有什么建议?

我从依赖链的最低层工作到最高层。这样,我就可以尽早编译和测试一些东西,然后我就可以在它的基础上继续构建。

我从我的数据结构(DB表、XTD、数据字典等)开始 然后,数据将如何进出所述结构(数据访问层) 然后是业务对象及其关联逻辑
最后,我倾向于首先编写和测试支持框架类的用户界面和将这些编程挂钩附加到我的业务逻辑。我发现,如果不这样做,我最终会在编译和测试之前编写太多代码。而且,首先编写它们意味着您将更倾向于使它们成为完整的抽象,而不是与使用它们的代码过于混乱地耦合在一起的半生不熟的抽象。如果在编写支持类时没有编写更高级别的代码,则可以避免意外引入循环依赖关系


也就是说,在编写支持类时,我至少已经编写了一些代码片段,这些代码片段展示了如何在更高级别的代码中使用它们。

这必须取决于您所创建的内容。我正在开发一个windows mobile应用程序,从下到上开始,处理类和各种数据抽象,然后用gui将它们连接在一起,这真是一场噩梦。你不能向人们(非开发人员)展示代码并说服他们你已经完成了40%,他们需要看到某种GUI。如果我可以回去,我会先模拟GUI

但是当涉及到数据驱动的网站时,我从数据开始,纯粹是因为允许你操作它们的网页依赖于知道数据是什么样子以及你可能如何与之交互


顺便说一句,我对“最简单”和“最难”的事情很感兴趣,因为我认为人类的自然倾向是认为简单的事情会比实际容易,困难的事情会比实际困难

我喜欢从粗略设计UI开始

这样就可以更快地讨论设计和需求是如何全部错误的(即使每个人都签了字),并节省了大量浪费的精力


然而,这有点危险,因为大多数人认为UI是工作的主体,他们不理解为什么屏幕看起来几乎是最终的,却要花这么长时间才能完成。

我几乎总是从用户界面开始。一旦我确切地知道了什么是进来的,什么是出去的,我发现组织其他的事情就更容易了。

似乎每个发布了这个问题答案的人都指定了一个不同的起点。起点的巨大差异完美地说明了你应该从哪里开始:无论你的理想起点在哪里

不同的人处理问题的方式不同。一个项目的成功往往与一个人采取的最初方法无关。花点时间思考并尝试首先关注的不同领域,找出适合自己的领域


编辑:在更抽象的层面上,提供了关于Lisp风格、自下而上编程方法的良好见解。

使用桌面/命令行程序时,我通常按照Ted的建议,从依赖链(树)的顶部(根)开始,以便尽早测试和编译。然后,我在链(树)上一步一步地添加类和复杂性

使用web应用程序时,我通常会采取一些不同的方法:

  • 我倾向于从构建一个粗略的html外壳开始,给出一个站点应该是什么样子的想法
  • 然后,我从最简单的功能开始(在许多情况下,它是一个留言簿或类似博客的输入/显示数据类型),首先在数据库中设置一个表,将其映射到我的数据提供者(如果我在.Net中,则为Entity Framework),然后让站点访问数据(还没有输入功能!)
  • 当页面正确获取数据时(我通过手动将随机内容放入数据库进行测试),我开始处理站点这一部分的输入部分
  • 一旦网站的一部分(例如留言簿)完成并完全按照我所希望的那样工作,我将继续下一部分,并再次从1开始

  • 我同意到目前为止的普遍共识,即从应用程序的最低级别(数据层)开始构建。对我来说,这非常有意义,因为业务逻辑构建在数据层之上,前端构建在业务逻辑之上等等

    然而,再考虑一件事——你的客户。不幸的是,客户需要看到可见的更改才能知道您正在做什么。你会惊讶地发现,即使是技术经理也会陷入这种心态


    因此,我试图确保在每次迭代中,UI也会做一些事情,因此在某种意义上,应用程序是垂直构建的。也就是说,一些数据、一些业务逻辑、一些UI向客户显示。重复。

    我个人认为你应该从域模型开始。在很大程度上,这将直接从您的需求中提取,并将帮助您确定需要创建哪些部分。您的域模型将驱动您的数据模型,需求将告诉您必须对域对象执行哪些操作

    只要有可能,我会从整个应用程序的路径开始。慷慨地处理存根。这有助于澄清项目的总体架构

    完成后,我强烈建议w