【问题标题】:Which is better to do first, design the interface or write code?先设计界面还是写代码哪个更好?
【发布时间】:2011-06-07 01:03:46
【问题描述】:

在你既是设计者又是开发者的单人项目(网页或桌面应用程序)中,首先做什么更好,设计还是编写代码?

【问题讨论】:

  • “当我们建好房子搬进来,并举行了乔迁派对后,我们终于聘请了一位建筑师,他做了一个很棒的设计”。你能感觉到吗;)?
  • 虽然我认为您应该从 UI 开始,但我假设程序逻辑相当简单,就像许多 Web 应用程序一样。如果我有困难、复杂的算法,我会从另一端开始,因为该代码的设计会影响我的整个项目,而 UI 通常可以包含在内。重要的是要简单明了地陈述逻辑,以便维护它。例如,当你在制作一门编程语言时,从核心演算开始,而不是语法。

标签: web-applications process desktop-application


【解决方案1】:

我猜你指的是用户界面,而不是 API。我总是先设计界面。当我编码时,我很懒惰——我会做任何能以最少的努力完成工作的事情。这导致接口没有任何意义,仅仅因为这是在代码中实现它的最简单(或最干净)的方式。但在编写代码之前,您不会有任何偏见,并且会更好地决定什么是好的界面。

但是——它们仍然是错误的决定。你可能认为你知道什么感觉很自然,但你不知道。对人进行测试!观察他们做了什么,他们如何尝试使用您的软件,向他们提问并做出相应调整。如果您经常这样做,那么您先设计还是先编码都没关系。这是制造一流产品的方法。

【讨论】:

    【解决方案2】:

    我认为“设计界面”是指图形界面。 正如 PNL 所教导的,您将处理已经看到的更好的事情,因此可视化对新项目的设计有很大帮助。
    这就是为什么我按照我的第一个视觉想法开始项目,用笔和纸绘制我确切知道如何运作的页面的模型(我很高兴看到许多受人尊敬的同事也这样做)。

    这使我能够概念化应用程序实体(可能是类)和功能(可以直接转换为方法)。
    在这一点上,我编写了编程接口,对我来说,无论是从头开始还是将来返工时,它都是应用程序中最重要的部分。
    通常这不是一种全新的编程风格,因为许多程序员都有自己喜欢的模式、语法和代码可以重用,或者被他们必须工作的框架/环境驱动到某些解决方案,但无论如何我认为这是一项关键任务。

    在编写代码之前,我还设计了 DB,它的使用也委托给我已经编写的接口方法使用的较低级别的方法(我从事的 90% 的项目都是 DB-dased),放下每一个想法我认为属性或边表可以更好地完成应用程序处理的信息或改进功能。

    当我有时间时,我还会使用 Excel 制作一些表格和图表,为每个表格定义整个 CRUD 任务(显然不是每个表格都需要所有 CRUD 任务)。
    这让我也可以用一些时间编写一般的 SQL 查询,这也减少了编写代码的工作,避免将注意力转移到其他 SQL 方言上。

    我开始编写代码作为最后的任务,此时工作已经完成。
    编写应用程序的逻辑并解释背景允许我只用选择实现项目的主要语言进行思考和编写,通常是用于服务器端处理的 PHP 和用于客户端 GUI 的 JavaScript。

    我试验了一位大师常说的一句话:好的作品是90%的计划,10%的执行。
    我非常同意:当一个好的计划完成后,剩下的就是打包所有的部分。

    编码快乐,新年快乐! :)

    【讨论】:

      【解决方案3】:

      从常识的角度来看,我认为模型设计(想想笔和纸)是最好的开始。定义您希望程序/站点执行的操作以及它的外观,而无需详细说明。如果您从一开始就有一个关于功能和设计的明确目标,在较小的项目实施顺序上应该不是什么大问题。

      但我必须说,我总是在设计之前编写代码,而且我很少创建模型草稿。而且我从不听从自己的建议。

      【讨论】:

      • 如果您没有设计,您究竟会编写什么代码?我同意在头脑中或在纸上写一个有时就足够了,但我不明白没有一个你如何开始编写代码。
      • 也许“在设计之前做代码”并不是正确的表达方式。相反,我通常首先开始编写主干代码和更多技术实现,然后创建一个基本 UI 来测试这些功能。在设计之前完成所有代码显然是一种相当愚蠢的方法。但就像我说的那样,我认为我没有按照我应该的方式做这件事(根据我自己的建议)。
      【解决方案4】:

      这是我认为常见的一步一步的做法:

      • 找出要求是什么。
      • 制作应用程序模型并将其展示给客户或同事。
      • 创建全球技术设计。列出要使用的技术以及要制作的组件的高级概述。
      • 然后开始编码或进行更详细的设计。

      【讨论】:

        【解决方案5】:

        第一个设计 UI,它将让您清楚地了解您的系统将做什么、它显示什么类型的数据以及用户将如何与之交互。

        【讨论】:

          【解决方案6】:

          我通常在纸上(或使用图表工具)设计项目,然后编写核心部分,最后编写用户界面。 GUI是最后一个。 所以你可以先用程序的逻辑部分做测试,然后再用表现部分做测试。

          假设发展方向好像是从洋葱的中心到外面。

          【讨论】:

            【解决方案7】:

            我建议您制作用户界面的蓝图,然后同时进行编码和界面。它会更好,因为您可以根据需要立即获得输出并且也可以更改它。

            这有点像 HTML 页面测试。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2012-11-21
              • 2012-08-25
              • 2020-01-29
              • 1970-01-01
              相关资源
              最近更新 更多