【问题标题】:From where to start coding a software?从哪里开始编写软件?
【发布时间】:2010-02-20 00:05:30
【问题描述】:

我要开始的项目是我的第一个项目,它非常大。虽然这对我来说是一个很好的机会,但我不希望自己最终陷入混乱的代码中,所以我对软件(软件架构)进行了整体设计,将其分为三层:

  1. Presentation Tier ----(将通过 Java Swing 实现)
  2. BusinessLogic 层 --(将通过 EJB 技术实现)
  3. DatabaseLayer -------(将在 Hibernate 的帮助下实现)

第一季度。我应该从哪个层开始?

我没有任何标准产品开发环境的经验,但我确信有一些特定的顺序比其他的更好。

第二季度。我认为这些东西属于良好的设计原则和最佳实践。我已经在互联网上搜索了这些类型的资源,也找到了一些很好的资源,但如果您向我推荐一些您知道内容简短、中肯和高质量的资源,我将不胜感激?

【问题讨论】:

    标签: java architecture coding-style


    【解决方案1】:

    “我的第一个项目,非常大”

    请不要那样做。

    请先做一个小项目。

    1. 先写“模型”(业务逻辑)。这将非常困难,因为这是您的第一个项目。保持小规模,只专注于您可以测试并证明其有效的业务逻辑。

    2. 把它扔掉。

    现在做另一个项目。

    1. 先写“模型”(业务逻辑)。根据在第一个项目中吸取的经验教训,这会好得多。这将很难,因为这是您的第二个项目。保持小规模,只专注于您可以测试并证明其有效的业务逻辑。

    2. 第二个写持久化和对象关系映射。添加数据库持久性将非常困难,因为它只是您的第一个数据库项目,而且只是您的第二个项目。

    3. 把它扔掉。

    现在,您知道自己在做什么了。开始第三个项目。

    1. 先写“模型”(业务逻辑)。根据前两个项目的经验教训,这会好得多。到现在为止,这仍然是很多工作,因为你终于明白你在做什么了。然而,这项工作将不再涉及技术问题,它现在将涉及围绕用例以及应用程序实际执行的真正问题。

    2. 第二个写持久化和对象关系映射。根据在第一个项目中吸取的经验教训,这会好得多。这仍然很难。没有什么能让这变得容易。这只是你的第二次,所以你还是会犯错;错误会更少。

    3. 最后写演示文稿。总是。

    当您还不了解技术时,这实际上是完成大型项目的最快方法。

    【讨论】:

    • 我同意。当您的第一个项目非常大时,您将失败。这不是冒犯,这是事实。
    • +1 表示“不要去那里”的建议。或者与非初学者组成一个团队。
    • 感谢您用文字表达得这么好。读到他的帖子,我的第一个念头是“呃,哦,一个从未有过大项目的人正在架构......这会爆炸”
    • +1 如果您的雇主允许,请尝试让某人(程序员)在您完成后检查您的代码。并尝试确保您有至少一个人在您第一次尝试之后尝试并打破一切可能。
    • +1 很好地解释了。一个人应该先获得经验,然后再跳到更大的事情上……此外,项目的水平也随着经验的提高而提高。增加...
    【解决方案2】:

    竖条纹中进行实现:从三层实现项目的一项能力,以便可以端到端验证设计。 p>

    可以先跳过数据库层,数据可以是硬编码、不持久化,也可以先存储在测试文件中。

    【讨论】:

    • 这是个好主意。它允许持续改进,您的客户将看到每个版本都添加了越来越多的功能。这正是您所需要的——让客户看到每个版本的进展。
    【解决方案3】:

    对此有两种方法,各有优缺点:

    • 自上而下
      首先开发 UI 并在 UI 需要的地方实现数据访问和业务逻辑。

    • 自下而上
      先开发数据库层,然后再添加 UI 功能。

    第一个优点是您拥有(至少部分)快速运行的 UI,这是客户喜欢的,因此它是事实上的行业标准。后者提供了一个稳定而完整的数据库和业务逻辑层,但它们通常会有一些开销,因为不清楚以后如何需要/访问数据。

    【讨论】:

      【解决方案4】:

      我认为您应该从业务逻辑层开始,因为这一层应该决定其他层应该具有哪些功能。如果您从数据访问层开始,您可能会得到大量 YAGNI 代码,而且任何应用程序都应该以业务逻辑为中心,而不是持久性或表示逻辑。

      您应该研究诸如DDDTDD 之类的最佳实践,并且您也可以从有关MVVM 或类似模式的知识中受益。

      【讨论】:

        【解决方案5】:

        我会添加到现有的答案:

        不要使用很多你不熟悉的技术或只有基本的隐蔽技术; EJB、Hibernate 等。它们让您无法了解幕后发生的事情,并增加了学习曲线,从而延长了您的最后期限。取而代之的是更简单的东西;例如使用 JDBC 或 Spring/JDBC 实现持久性的 RMI 客户端-服务器应用程序。您总是可以稍后再修改元素,但增量交付总比完全不交付要好。

        【讨论】:

          【解决方案6】:

          第一季度。拿一支笔和很多纸开始设计。这样你就可以在编写代码之前制定“计划”。

          第二季度。首先使用纸张有助于质量设计;定期改进、重构和审查有助于保持质量。

          【讨论】:

            【解决方案7】:

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多