【问题标题】:Moving on from Hello world style simple programs to big / real world projects : A guide to real world projects从 Hello world 风格的简单程序转向大型/真实世界项目:真实世界项目指南
【发布时间】:2011-02-19 00:06:29
【问题描述】:

有人请用适当的标签重新标记

你好,

这是我的故事,但我想它适用于所有程序员。

我们从一些简单的 Hello World 程序开始编程。我们练习并向程序添加功能/类。但他们仍然保持着 Hello World 风格。函数调用一些其他函数标准库。

但是当涉及到现实世界的项目时(我只是熟悉 OpenSource)。更多其他的事情浮出水面。然后就开始了这位新手程序员的艰辛。

项目流程:

  1. 程序未按预期运行。使用调试器
  2. 使用third party libraries。今天,我们有 每种流行语言的库 几乎我们需要的一切。
  3. 多人在同一个项目上工作。使用Version Control Systems
  4. 项目越来越大。 Build Automation
  5. 很多人开始使用您的应用程序。您需要将其移植到 不同的平台(操作 系统/架构)。需要 交叉编译
  6. 我不知道为什么,但我们需要单元测试框架和/或单元测试
  7. 还有什么???

这里的问题是这个新手程序员对这些东西的存在缺乏了解。

我的意思是当我开始研究一些现实世界的项目(开源)时。我不知道这是什么?为什么我们需要这样做?

$./configure
$make
$make install

最近我开始意识到关键字“构建自动化”。我需要一些可用于 linux 的库,但我需要在 windows 中使用它。我不知道它被称为“交叉编译”和诸如 MinGW/MSYS 之类的工具就是为此目的而存在的。我不得不以艰苦的方式学习这些东西。我希望有人告诉我这些东西的存在。那会节省我很多时间。

今天我遇到了性能问题,感觉需要一些东西。我想我正在寻找的东西是 Profiler。 感谢我参与开源项目。尽管我没有意识到/觉得有必要这样做,但我知道术语单元测试。

虽然这种(困难的)学习方式像现在这样有一些很大的优势,但我能够非常快速地找出解决方案或一些未知的东西,而且与我的其他朋友不同,我在任何时候都不会受到打击。但我讨厌浪费时间。你不相信我浪费了多少时间来弄清楚MakefilesGnu Build System

那么,我在这篇文章中寻找什么?

  1. 请填写Project Flow。我想看看所有的事情都涉及到什么。
  2. 对于Project Flow 列表中的每个任务。我想查看以下信息。
    • 提供最流行的解决方案/工具。
    • 维基百科列出所有备选方案。
    • [可选] 推荐一些好的书籍/教程/指南来学习这方面的知识。或链接到相关的 SO 帖子/标签。
    • 我知道有些东西是特定于语言和操作系统的。我想说我们只有少数主要平台 Linux/Unix、Windows、Java、.NET 和少数主要语言 C、C++、Java、.NET、Python。解决这些语言。绰绰有余。

示例:

  1. 使用库

注意:

请注意,我不是要建议有关如何学习这些内容的信息。我在问还涉及哪些此类事情以及每种事情的替代方案。

【问题讨论】:

  • 恕我直言,这个问题太笼统了——你基本上是在尝试在一个问题中重复 SO 的结构和功能。例如 - 如果您对使用库感兴趣,请询问有关使用库的问题。
  • @Neil Butterworth:我只想要一个流程索引。正如我所说,如果我知道我想要some thing,那么查找有关它的信息并不难。问题是弄清楚那是什么东西?我知道它的一般性和太大这就是我要求链接相关 SO 帖子的原因。
  • 问题是有许多不同的流程和方法,原则和实践,如果不谈论具体的事情,例如,就很难回答。 XP 及其实践和喜爱的工具
  • @Gabriel Ščerbák:我明白了。然后你能列出你知道/使用的方法和流程吗?总比不知道好?

标签: language-agnostic version-control build-process


【解决方案1】:

您的问题似乎过于宽泛,但在 cmets 中您要求提供不同方法的示例。这至少能让你找到一些其他的指针并做出你自己的决定。

  • Rational 统一流程 (RUP)/统一流程 (UP)
  • 极限编程 (XP)
  • Scrum
  • 测试驱动开发 (TDD)/行为驱动开发 (BDD)
  • 精益软件开发
  • 看板
  • 功能驱动开发 (FDD)

这些以及更多是软件开发方法,它们由不同的原则、过程和角色组成。它们中的大多数还带有一些用于不同目的的实践,例如您在问题中提到的那些。尽管许多公司使用不同的组合以及一些自己的流程和方法,但它们在现实世界中的应用非常广泛。形式化方法虽然不是被广泛使用的部分,但可能会给您一些关于开发的有趣观点,它们是精确的,但大多数时候太不切实际了。

【讨论】:

    猜你喜欢
    • 2013-03-07
    • 2015-11-24
    • 1970-01-01
    • 2011-07-03
    • 1970-01-01
    • 1970-01-01
    • 2010-11-28
    • 2016-09-21
    • 1970-01-01
    相关资源
    最近更新 更多