Php 如何在开始编写代码之前规划基于web的项目?

Php 如何在开始编写代码之前规划基于web的项目?,php,project-management,web,Php,Project Management,Web,我和我的朋友开始作为合作伙伴一起工作,我们决定一个接一个地创建Kick as*网站。 我们有写下来的100个想法(是的,我们首先从中选择最好的和简单的) 我的朋友做布局设计和安排,我的部分是编码和服务器管理 我面临的一个小问题是缺乏规划项目的经验。我所做的是,我直接开始编写代码,并与代码一起生成DB,就像当我需要一个表时,我生成DB一样 我知道这对于中等规模的项目来说是非常糟糕的方法 在stackoverflow,我看到了很多有经验的程序员。需要从你们身上学到很多:) 所以,你能帮我规划一个项目

我和我的朋友开始作为合作伙伴一起工作,我们决定一个接一个地创建Kick as*网站。 我们有写下来的100个想法(是的,我们首先从中选择最好的和简单的)

我的朋友做布局设计和安排,我的部分是编码和服务器管理

我面临的一个小问题是缺乏规划项目的经验。我所做的是,我直接开始编写代码,并与代码一起生成DB,就像当我需要一个表时,我生成DB一样

我知道这对于中等规模的项目来说是非常糟糕的方法

在stackoverflow,我看到了很多有经验的程序员。需要从你们身上学到很多:)

所以,你能帮我规划一个项目,使用什么样的编码标准/结构/框架吗(我做PHP代码)


提前感谢。

首先定义范围。在网页上写一段话,试着描述你的网站。自上而下的方法是开始考虑您想要实现的功能,并通过添加更多细节来细化它

自上而下的方法(也称为分步设计)本质上是对系统进行分解,以了解其组成子系统。在自上而下的方法中,首先对系统进行概述,说明但不详细说明任何一级子系统。然后对每个子系统进行更详细的细化,有时在许多附加子系统级别进行细化,直到整个规范简化为基本元素。自上而下的模型通常是在“黑匣子”的帮助下指定的,这使得它更易于操作。然而,黑匣子可能无法阐明基本机制,或者不够详细,无法实际验证模型。

然而,还有许多其他方法


再次强调,最重要的一步是能够用语言表达你的想法;在你能充分地做到这一点之前,我甚至不会考虑开始写一行代码< <强> > < /P> < P>一些喜欢抽象的人的想法。 找出你的网站有哪些共同点。一旦确定了主要的共性,就要寻找能够处理尽可能多的共性的框架或库(除了满足其他条件之外),比如样板数据库代码

对于您找不到任何现成代码的常见功能(它们总是存在于自定义网站中),您将有机会编写一个通用库,供您自己在网站上使用。这可以是标记的模板、JavaScript库或可重用的服务器端组件,也可以一起使用


根据您的描述,听起来您在创作过程中享受着极大的自由(而不是将需求规范交给您并要求其实现)。我要说的是,也不要过度计划,“马上开始编写代码”是一件很有趣的事,也不全是坏事。经验将是你最好的朋友,当你访问网站#100时,你将拥有很多经验。在创建第二个网站时,您与第一个网站的经验将帮助您避免犯一些错误,并且您将发现在规划阶段没有预料到的新的相似之处。只要确保花点时间,将通用代码移到单个库中,然后返回并编辑第一个使用它的网站。重复几次,你就会学到很多有价值的经验。

关于我推荐的编码标准/结构/框架,以及

架构的简要指南。这个想法是为了帮助你记住想法(当你的大脑在编写代码时),并为未来的程序员准备文档

  • 设计数据库。做一个ER图。将其放入文档中。
    简要描述重要问题设计背后的原因(为什么选择多态关系、为什么使用此视图、您希望选择什么更为关键等)。这将随着您的代码而改变(您无能为力)。记录这些变化。为了应对这些变化,对数据库使用版本控制系统,如

  • 设计网站的结构(部分、页面、链接、页面流等)。记录下来。(如:“站点2部分,此部分由…”等组成)
    基于此,制作一份描述控制器和视图的文档。(“文章控制器,具有列表视图和文章视图,也可编辑和创建视图,但仅用于管理员”等)。
    描述如何实施身份验证和授权(在控制器和视图级别)。谁被允许去哪里。
    描述您如何在需要时抵御主要web攻击(xss、csrf)。(示例:“我使用htmlentities对所有视图变量进行转义,以实现xss保护和…”)

  • 设计您的模型和辅助功能(发送电子邮件、后台工作等)。这些将是大部分代码。记录每一篇文章,并描述主要问题(例如如何处理时区、该特定模型如何连接到货币服务、该模型如何解析和操作某个crone文件、根据您的应用程序,您将使用什么算法来决定前5篇文章)。描述您使用的库、如何使用以及用于什么目的(示例:“我们将使用curl来废弃SO并制作rss提要”)
    描述如何在需要时抵御主要的web攻击(sql注入、xss)


当你编写代码时,事情会发生变化。你对系统离散工作的了解会不断发展,你会根据新发现的启示开始改进设计。记录你的变化。

是的,看起来不错,我现在会在谷歌上搜索一些这种方法的例子。欢迎你。一旦你找到你想要的答案,别忘了标记你选择的答案我相信会有更多的人回答你的问题,不过我会等待其他程序员的见解。这个问题还有很多