作为程序员,我的第一直觉是开始编码,但是每一本编程书的第一章都说你不应该坐下来编写代码。
所以问题是,从哪里开始?
我已经对项目进行了一些思考,它将是一个相当简单的网络应用程序,一种时间记录应用程序,给你一个想法。
即使这是一个小项目,我希望它具有很好的通用公共使用质量,我愿意兑现一点,让设计师为页面做一个正确的外观和感觉。 / p>
这是我想过的事情清单:
它将在ASP.NET MVC
我希望它有最多的死亡 简单的登录(Instapaper,但是 可以选择做OpenID,a la SO)
应该能够使用它没有 登录,只是会话cookie
它将有几个“层” 可用性,从非常基础到更多 “信息中心”信息跟踪。
网页应该非常简单 使用
计划使用jQuery 交互
将使用Linq2Sql
我想从MAIN时间开始 跟踪功能,然后添加其他 并非所有人都想要的工具 使用,但更先进的用户 想要(而且不是 功能主义,它们就是那些东西 真的要去那里 我想做的产品)
如果网页有点成功,我想添加移动应用,那么我应该有某种内部网络API?
那么我应该从哪里开始呢? 类图?应用程序的基本“草图/设计”?工作流程图?使命宣言?
那之后该怎么办?什么时候“好”开始编码直到我入睡?
答案 0 :(得分:3)
这个问题有点主观,但这是对我所做的一个非常简短的解释。
我总是从我的数据开始。我想要存储什么以及如何存储?然后我构建我的数据库和索引。
然后我创建一个数据层项目并将我的数据库导入为linq2sql类。
然后我决定要签名的第一部分功能。也许进入一个时间。
然后我在测试项目中编写我的测试用例。然后我通过在我的数据存储库层编写代码来使每个测试通过。
然后我写了一个控制器,最后我的观点。
然后我转到下一个故事点或功能
答案 1 :(得分:3)
但是每一本编程书的第一章都说你不应该坐下来编码。
我会谦卑地不同意那些书(哪些书,顺便说一下?)。
当然,如果您打算创建更好的Microsoft Word版本,您将需要一些相关的经验和一些考虑。但是创建一个只有很少页面的简单webapp并不是什么大问题:大多数Web框架已经为你提供了架构屠体(比如MVC模式),你只需要'填充空格'。
所以,我的建议是从核心功能开始并逐渐增长。只要忘记类图,任务陈述和所有废话:)
PS在你开始之前,检查处理这个问题的现有应用程序可能是有用的:也许你会想借用一些想法。
答案 2 :(得分:3)
哪本书说的?我并不总是同意这一点。另外,我不同意你应该从数据建模开始,特别是在具有Web用户界面的应用程序的情况下。这就是我要做的事情:
第一步从UI开始(prorotyping)。在html中执行此操作或使用balsamiq之类的工具 这将为您(以及您的最终用户)了解您在应用程序中需要的功能。这将驱动您的数据模型和控制器。 IMO 用户界面是您应用最重要的功能,因为它将直接与用户进行互动。这个概念经常被忽视。
如果可能,将应用分解为模块。例如用户管理(注册,登录,注销,角色)计时,管理等
设计数据类或数据模型和数据访问类。 UI再次出现 确定您希望数据访问类获取的数据等等。
使用控制器同时开始执行UI。一个接一个地接受每个模块。
不断发展您的设计。这还包括UI。演变并不意味着投入黑客行为。如果您认为需要重新设计,请执行此操作。
重要提示:写一个最适合的应用程序(只有最重要的胖子)。建立在它上面。
阅读37信号getting real获取灵感
所以开始编码的好时机是“马上就开始!”
答案 3 :(得分:2)
就个人而言,我建议使用一些铅笔和一大堆纸。考虑一下您的用例,粗略概述工作流程,然后从工作流程中思考如何在UI中完成。做那些UI的粗略草图,并通过你的纸质原型实际上完成流程。那里会有一些报告功能吗?您确定已经捕获了想要执行此操作的所有数据和功能吗?建立一个原型,请记住,原型意味着可以丢弃的东西,所以快速做一些事情,比如rails或grails,不确定.net世界中的模拟是什么,但要确保你使用的是好的开发方法,如TDD。原型很糟糕吗?没有?
现在您已准备好进行第2轮,将原型重构为目标技术,如果它有用,您可以创建所有图表,如前所述。找到了你错过的东西?回到第一步。但最好的部分是,与此同时,你有工作软件,至少不会吮吸,而你正在休息。
重复直到你不能忍受它,或者你已经足够富裕,你可以雇佣其他人为你做这件事! ;)
答案 4 :(得分:1)
数据建模至关重要,但许多人更愿意首先设计界面。因此,在开始编码之前,请勾勒出应用程序所需的各种界面。界面就是您的产品,铺设界面还可以让您更清晰地定义/理解用户故事 - 您可能已经对此进行了粗略的了解。
这是 Getting Real 等书籍中推广的基本技术,我越来越相信这是启动网络应用的最佳方式。您想要建模的数据实际上取决于用户想要对应用程序执行的操作以及 他们将如何执行此操作。如果您没有首先弄清楚“如何”,那么当您最终定义用户交互的参数并相应地重新设计界面时,您最终将设计一个非常笨拙的应用程序并且不得不重新设计数据库。在过去的这个过程中,我个人浪费了很多时间,这就是为什么我采用了接口优先的方法。