我将要开发一个项目,一个Web应用程序.我正在阅读37signals在线获取真正的小册子(http://gettingreal.37signals.com/),我理解建立整个网站的推荐过程.头脑风暴,素描,HTML,代码.
他们轻轻地触及每个过程,但他们从未真正谈论过编码过程(他们所说的只是保持代码精益).我一直在阅读有关它的不同方法(从上到下,从下到上),但我对每种方式都不太了解.我甚至读过某个地方,在实际编写代码之前应该为代码编写测试?什么?
在构建应用程序时应该遵循什么编码过程.
如果有必要,我使用PHP和框架.
精益代码意味着您不会仅仅因为您是程序员而编写代码。您编写的代码只够完成工作。任何额外的代码都只是浪费时间和金钱。如果您发现您正在添加代码以“稍后使用”。停止。后来很少出现,应用程序寿命很长。您稍后添加的代码只会在以后造成混乱。这样想吧。办公桌上的每一张纸都必须处理好。每行代码都必须处理。
我读过他们的书《Getting Real》。我并不同意一切。然而,他们所说的大部分内容确实适用于网络开发,但不适用于桌面或设备应用程序。似乎很多内容,尤其是接近尾声的内容,都只是填满一本书的噪音。
(为自己)记录您需要做什么以及您对需要做什么的理解。绝对清楚你的理解。最好现在就得到一个是/否,然后是一个错误,或者最糟糕的是一个设计问题,稍后这将花费你数周的时间,这总是会导致“被黑客攻击”的代码。
生成简短的用户指南的草稿。即使您是唯一会阅读它的人。用铅笔和纸来做这个。不要在文字处理程序上浪费时间。你会浪费更多的时间“格式化”然后编写内容。如果你不能用文字写出来,你怎么能用代码来写呢?它不一定很漂亮。丑一点也没关系
尽可能用铅笔和纸生成任何类型的文档。(嘿,我不是已经说过了吗?)它更快,更清晰,用户可以在上面写字,可以复制,挂在墙上等等。更重要的是,您可以删除它并与用户一起重新开始。我有没有提到它要快得多。
执行个人代码审查。一种好的方法是在签入源代码管理之前比较每个文件。我保证你会发现错误、你忘记做的事情等等。这是清理代码、生成任何用户或技术文档以及最后一刻测试的好时机。
例如,我花了一天时间创建一个 Excel 工作簿来记录我需要创建的模型。我为自己做这件事。该模型已经由专家设计(在纸上)。我发现,我应该说 Excel 发现了一个循环引用。我报告了这一点,但被告知该模型是在过去一个月里仔细制定的,问题出在我的理解上。两个月后,修复“循环引用”花费了我们两周的时间。我们勉强赶上了最后期限。本可以在八个工时内解决的问题,却让我们花费了六十多个工时,并承受了巨大的压力。然而,因为我的代码很“精简”,所以只需对一个小表函数编写几行代码即可修复。
大多数程序员都会先编码。大多数开发人员都首先考虑文档。一般来说,尽早记录每分钟可以为您节省十分钟。(阅读“代码完整”。)但是,不要忘记“变得真实”。您的工作不是编码,而是构建解决方案。这样想吧,作家的工作不是写作,而是创建一个有人会阅读的文档。他添加章节并不是因为他或你稍后可能需要它。他必须不断地决定要包含或排除哪些内容才能吸引读者。最好花几分钟对代码做出决定,然后花一天编码,最后才意识到不需要代码。
一般来说,我不编写测试驱动开发(TTD)代码。我发现你最终无缘无故地编写了大量代码,而不是提供解决方案。在我被“批评”之前,我总是先在纸上写下TTD。如果我无法解决问题,我将创建一个“丢弃”项目并编写一些代码。如果我发现我必须深入挖掘,我会创建一个“wip”(正在进行中的工作)项目,如果失败,我最终将创建一个实际的测试项目。话虽如此,正如 Justin Ethier 提到的,如果我正在为应用程序编写库或核心函数,我总是创建一个测试项目。
对于一个应用程序,我曾经创建并嵌入了一个 RSS Pane 控件,用于从 Google 下载公司财务信息。我的主管要求使用此功能,以便在演示前让高管们惊叹不已。它做了。每个人都非常喜欢它。在与公司合作时,用户会收到专门针对该公司的即时新闻提醒。我花了四个小时来创建和实现,这是我在演示之前完成的。然而,由于这是用户没有要求的功能,他们不断抱怨我浪费时间实现不必要的功能,特别是当我无法提供他们要求的功能时,他们没有要求的功能。(这不是我的决定。)大约两个月后,这个控件开始抛出异常。我花了两天时间来排除故障并修复。这个功能取得了巨大的成功,但想象一下如果不成功的话会出现什么问题。