当你开始考虑编程项目时,你先做什么?

时间:2008-12-02 23:22:25

标签: architecture

当你开始考虑编程项目时,你先做什么?你拿出一张纸然后开始勾勒出建筑吗?你有想法的笔记本吗?你开始编码吗?或者你是否在一个精美的包装中建模软件。来吧,来吧,阐明你的想法......

13 个答案:

答案 0 :(得分:8)

为了开始考虑架构或设计,我倾向于编写假设的代码片段,我想“正常工作”以解决应用程序的核心问题。

例如,在设计数据库时,我通常会尝试考虑一些我希望编写的示例查询,而不是抽象地思考数据实体和关系。

这种方法可以帮助我(个人)避免在第一次通过时抽象过多。你可以称之为“美丽的代码优先”方法。它与TDD有相似之处,不同之处在于您首先要以富有表现力的简洁代码为目标,然后构建体系结构和抽象来支持它。

我个人认为,从长远来看,表达清晰的代码比笨重,经过彻底测试的代码更令人满意。当然,这些并不是相互排斥的。只是不要让美丽的“架构”的愿望导致你的业务逻辑中的笨拙的客户端代码。

答案 1 :(得分:6)

我会首先 google 以相同的方式看待某些内容,或者更接近并了解更多信息。随着现有语言和框架的强大功能,任何普通程序员都可以编写代码,但质量将取决于您用于实现该解决方案的“最佳实践”。你实现结果的速度也很重要。

所以我认为 Google搜索 将成为SDLC流程中的一个重要循环:)

答案 2 :(得分:6)

我考虑用户以及他们想要什么以及他们获取的内容。

他们不关心后端或花哨的语言,直到你确切地知道你的程序会做什么以及为什么有人想要使用它,其他任何事情都不重要。

答案 3 :(得分:5)

我几乎总是从绘制粗略的对象模型开始,让我对系统的结构有一个直观的了解。然后从那里建立。

答案 4 :(得分:4)

通过编程项目,我将假设“为客户”,而不是业余/个人项目。

我首先让客户用高级语言向我描述他们想要的东西。我找的是“我想要一个有多个部门的票务系统,并允许通过电子邮件进行响应/更新”。快速而简单的东西。

从那里开始,我开始了规范文档的初稿。我开始询问客户的问题,以帮助改进原始草案,并进入更细粒度的水平,直到最终系统完全被推出。完全地,我的意思是客户无法再向我提供他们想要的信息。

对于个人或业余爱好类型的项目,我通常需要花费几天时间在脑子里滚动,在纸上或在我的建模程序中设计一些基本的数据库模式。我想在几个晚上睡觉,看看它是否会继续有兴趣发展而不是在它完成之前放弃。一旦我确定这是我将要看到的东西,我继续起草我自己的规范并从那里开始。

答案 5 :(得分:2)

我坐下来开始编码......然后我删除所有项目文件并转到白板并开始映射对象和关系。

答案 6 :(得分:2)

我保留了一个笔记本,我写下了我所有的想法。我通常会写一两页关于项目/产品等的密集笔记,然后不管它,因为我没有时间做任何事情用它。当真正设计这个东西的时候,我会重读我的笔记并尝试用UML创建一个类图。通常这会失败,这导致更多页面的笔记改进了想法,解决了奇怪的边缘情况和未定义的事物等。冲洗并重复。一旦我有一个记录所有主要参与者的类图,我就开始编码。

答案 7 :(得分:2)

  1. 收集要求
  2. 定义优先级
  3. 估计工作
  4. 开始工作
  5. 跟踪和评估进度

答案 8 :(得分:1)

我写下了一个功能列表,然后用一些细节进入它,然后我开始对我的对象进行一些涂鸦以及它们如何相互作用,这是一种半裸的DFD ..我的所有图纸太乱了!

答案 9 :(得分:1)

我抓住一个垫子和笔,开始绘制笔记和流程图,没有任何花哨,只是想象概念模型,我试图在更简单和更简单的任务中打破每个部分。

一旦我无法进一步简化任务,我就开始编写丢失伪代码并粗略化出数据库方案。只有这样我才开始编写样本/测试代码。

答案 10 :(得分:1)

尝试分析商务领域。即,应用程序试图解决的业务问题的结构。它需要操作/管理哪些实体,它们是可变的/不可变的吗?应用程序需要实现哪些流程(从业务角度来看)?每个流程需要哪个实体,以及每个流程对该实体执行什么操作?等等。

答案 11 :(得分:0)

我开始记录一个愿景,一个描述项目的简短文档,围绕它的业务及其成功标准。

这有助于确定功能的优先级,并为项目的每个人提供相同的指导。

答案 12 :(得分:0)

我总是解释我认为我正在尝试将项目解决给其他人,最好是另一位开发人员。除非我能清楚地解释我正在尝试做什么,否则我不会对地狱创造能解决问题的机会抱有希望。必须向另一个人描述它的行为常常会增加我对问题领域的了解,并暴露出我未经证实的假设。 如果我有一个方便,这通常涉及我如何在白板上看出问题。