从Hello世界风格的简单程序转向大/现实世界项目:现实世界项目指南

时间:2010-05-13 08:46:00

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

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

您好,

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

我们开始使用一些简单的Hello World程序进行编程。我们练习&将函数/类添加到程序中。但他们仍然保持着Hello World风格。函数调用其他函数标准库。

但是当谈到现实世界的项目时(我只熟悉OpenSource)。更多其他事情进入了画面。然后开始这个新手程序员的艰辛。

项目流程:

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

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

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

$./configure
$make
$make install

最近我意识到关键字“Build Automation”。我需要一些可用于linux的库,但我需要在windows中使用它。我不知道它的名为“交叉编译”和MinGW / MSYS等工具是否存在。我必须以艰难的方式学习这些东西。我希望有人告诉我这些事情的存在。这样可以节省我很多时间。

今天我遇到了性能问题,感觉需要什么。我想我正在寻找的是 Profiler。感谢我参与开源项目。虽然我没有意识到/觉得有必要,但我知道术语单元测试。

虽然这种(硬)学习方式有一些像现在这样的大优点,但我能够很快找到解决方案或一些未知的东西。与其他朋友不同,我不会在任何时候受到打击。但我讨厌浪费时间。你不相信我浪费了多少时间来弄清Makefiles& Gnu Build System

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

  1. 请填写Project Flow。我想知道所有事情都涉及到了什么。
  2. 对于Project Flow列表中的每个任务。我想看到以下信息。
    • 最受欢迎的解决方案/工具。
    • 维基百科列出所有替代品。
    • [可选]建议一些好的书籍/教程/指南,以便了解这一点。或者链接到相关的SO帖子/标签。
    • 我知道有些东西是语言& OS特定。我想说我们只有少数主要平台Linux / Unix,Windows,Java,.NET和一些主要语言C,C ++,Java,.NET,Python。解决这些语言。它绰绰有余。
  3. 示例:

    1. 利用图书馆

    2. 注意:

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

1 个答案:

答案 0 :(得分:0)

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

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

这些以及更多是软件开发方法,包括不同的原则,过程和角色。其中大多数还带有一些用于不同目的的实践,例如:你在问题中提到的那些。这些在现实世界中被广泛使用,尽管许多公司使用不同的组合以及一些自己的过程和方法。什么不是广泛使用的东西的一部分,但可能会给你一些有趣的发展观是正式的方法,这是精确的,但大多数时候太不实用。