我有一个想法,我想把它做成一个应用程序(我有 C/C++、C# 和 Java 编程背景,所以为了交叉编译,我将在 QT Creator 中进行开发)。所以现在我问你们高级开发人员,接下来我应该怎么做?我知道所有好的程序都来自一个想法。那我该怎么办?UI原型?然后开发代码?有没有像一个应用程序开发的圈子?
我并不是说这个问题是主观的或争论的
3 回答
好吧,从经验丰富的开发人员的角度来看,我工作过的大多数公司至少都遵循某种流程驱动的方法。我见过的开源项目可以有很大的不同,从临时到极度流程驱动。不过总的来说,至少在企业界,即使是在小型项目中,以下方法对我和我合作过的团队来说效果很好。当然,有很多变体,使用不同的范例,但总的来说,这些是我在大多数范例中看到的步骤类型(我确信我已经留下了一些细节步骤):
- 首先,要很好地处理您的要求。如果您的用户不确定自己到底想要什么,那么@Michael Herold 从 UI 原型开始的方法绝对是一个很好的建议。您可能还想采用某种类型的迭代方法,例如Agile/Scrum。
- 接下来,定义某种类型的高级架构,该架构应该足够灵活以实现您的目标。你的应用程序会是客户端-服务器吗?它需要一个数据库吗?多线程?多个进程?如果其中任何一个是“是”,那么这些线程/进程将如何通信。回答上述问题后画出框图。
- 如果您的项目是中等大小或更大的,您可能还想绘制一些类或 UML 类型的图表。想想你需要什么样的课程以及它们之间的关系。
- 如果您想尝试测试驱动开发方法,现在可能是将您的需求转化为单元测试的好时机。
- 一旦您对要解决的问题以及将如何解决它有了很好的了解,您最终就可以开始编写解决方案了。
一些方法是迭代的,例如增量开发或敏捷/Scrum。在敏捷/Scrum 中,您的迭代将非常快,就像每隔几周就会经历一个完整的周期。在增量开发中,周期通常更长:数月甚至数年。在 Scrum 和增量开发中,要记住的主要一点是,在每次迭代结束时,您都希望有一个可用的软件(即使它没有做太多事情)。这有助于保持真实或潜在客户甚至开发人员的兴趣。
无论您采用哪种方法,您越早、越频繁地让您的用户(或潜在用户)参与进来,无论是通过查看 UI 原型,还是通过可用性测试,都越好。
我会说这取决于应用程序的主要部分是什么。大部分工作将来自设计用户界面(即“令人惊叹的因素”来自哪里?)还是主要是数据操作或其他一些“繁重的工作”(即这些是我在简单的用户界面)?
如果应用程序旨在让人们“惊叹”,那么对用户界面进行原型设计并获得对它的意见会大有帮助。这可以在开始编写代码之前完成,然后可以在收到反馈时应用增量更新。当您寻求反馈时,您可以开始编写应用程序的其余部分,因此每个部分都在继续进行,而无需等待一个或另一个。
好消息是,如果做得正确,这两件事应该完全(或几乎完全)解耦并相互独立。
最后一点:通过对用户界面进行原型设计,它可能有助于巩固你的想法,这将简化用户界面背后的代码设计。不同的方法适用于不同的人,但根据我的经验,对界面进行原型设计非常有用。
继续努力。就陷进去吧。
尝试将事物设计为灵活的,这样当您意识到自己走错了路时,您可以轻松地重构事物。将您的 UI、业务逻辑和数据层分开,以便您稍后在准确了解它必须做什么时轻松地重新设计 UI 等。
总是很难知道从哪里开始,所以我能给出的最好建议就是仔细考虑,挑一点,然后开始工作。预计您将不得不重构甚至重写一些位 - 不要害怕这一点,这很正常。但是你可以坐在那里永远循环试图决定先做哪一点,甚至永远不会开始。你先做哪一点并不重要,只要你有一个整体计划,以便你实现的所有部分最终都能连贯地结合在一起。
(我并不是建议你在没有先设计或原型设计任何东西的情况下就搞得一团糟。只是开发新应用程序最困难的部分之一就是决定从哪里开始。在某些时候,你只需要采取跳水开始游泳)