我和我的朋友开始合作,我们决定在网站后制作Kick-as *网站。 我们将这些想法写下来就像100个一样(是的,我们首先选择最好和最容易的)。
我的朋友进行布局设计和安排,我的部分是编码和服务器管理。
我面临的一个小问题是缺乏规划项目的经验。我所做的是,我只是直接启动代码,以及我制作数据库的代码,就像我需要一张桌子一样。
我知道这对于中型项目来说是非常糟糕的方法。
在stackoverflow,我看到了很多经验丰富的程序员。需要从你们身上学到很多东西:)。
那么你能不能帮助我规划一个项目以及使用什么编码标准/结构/框架(我做PHP代码)。
提前致谢。
答案 0 :(得分:5)
首先定义范围。在页面上写一个段落并尝试描述您的网站。自上而下的方法是开始考虑您想要实现的功能,并通过添加更多细节来改进它。
自上而下的方法(也称为逐步设计)本质上是破坏系统以深入了解其组成子系统。在自上而下的方法中,首先制定系统概述,指定但不详细说明任何第一级子系统。然后,每个子系统都会更详细地进行细化,有时在许多其他子系统级别中进行细化,直到整个规范缩减为基本元素。自上而下的模型通常在“黑匣子”的帮助下指定,这使得操作更容易。然而,黑匣子可能无法阐明基本机制或足够详细以实际验证模型。 http://en.wikipedia.org/wiki/Top-down_and_bottom-up_design
然而,还有许多其他方法。
http://en.wikipedia.org/wiki/Software_project_management#Software_development_process
同样,最重要的一步是能够用语言表达自己的想法;在你能够做到这一点之前,我甚至不会考虑开始编写一行代码。
答案 1 :(得分:5)
关于编码标准/结构/框架,我建议zend framework coding standard,MVC structure和Zend Framework。
MVC架构的简要指南。这个想法是帮助你记住想法(当你的大脑正在蒸代码时),并为未来的程序员提供文档。
设计数据库。制作ER图。把它放在一个文件中 简要描述重要问题设计背后的原因(为什么你选择多态关系,为什么要使用这个视图,选择你期望的更多三角等等)。这将随着你的代码而改变(你无能为力)。记录变化。要处理更改,请使用数据库的版本控制系统,例如rails migrations。
设计网站的结构(部分,页面,链接,页面流等)。记录下来。 (如:“网站2节,此节由...制成”等)
在此基础上,制作一个描述控制器和视图的文档。 (“文章控制器,列表视图和文章视图,还可以编辑和创建视图,但仅限管理员”等。)
描述您将如何实施身份验证和授权(在控制器和视图级别)。谁被允许在哪里。
描述您如何在必要时防御主要网络攻击(xss,csrf)。 (例如:“我使用htmlentities转义所有视图变量以保护xss和...”)
设计模型和辅助功能(发送电子邮件,后台作业等)。这些将是大部分代码。记录每个问题并描述主要问题(例如,如何处理时区,如何连接到货币服务,该模型如何解析和操纵某些crone文件,您将使用什么算法来决定前5个文章,取决于您的应用程序。)描述您使用的库,方式和用途(例如:“我们将使用卷曲来废弃SO并生成rss”) 描述如何在必要时(sql-injection,xss)防范主要的Web攻击。
在编码时,事情会发生变化。您对系统离散工作的了解不断发展,您将开始根据新发现的启示来改进设计。记录您的更改。
答案 2 :(得分:2)
喜欢抽象的人的一些想法。
找出您的网站的共同点。一旦确定了主要的共性,就要寻找尽可能多地处理它们的框架或库(除了填写其他标准之外),例如样板数据库代码。
对于您找不到任何现成代码的常见功能(它们始终存在于自定义网站中),您将有机会编写一个公共库,供您自己在您的网站上使用。这可以是标记,JavaScript库或可重用服务器端组件的模板,也可以是所有模板。
根据您的描述,听起来您在创作过程中享受着极大的自由(而不是获得向您提出的要求规范并要求实施它)。我说不要过度计划,“刚刚开始编码”是很有趣而且并非全是坏事。经验将是你最好的朋友,当你到达#100网站时,你会有很多。在构建第二个网站时,您使用第一个网站的体验将帮助您避免犯下一些错误,并且您将发现在规划阶段您没有预料到的新相似之处。只需确保花时间,将公共代码移动到单个库,然后返回并编辑您的第一个网站以使用它。这样做了几次,你将学到很多值得的课程。