我很确定我们大多数人都熟悉项目开始后需求变化的概念,这越来越成为一个问题,客户对事情的了解越少,与他们的合作越近。
我怎样才能设计一个系统(特别是一个网站,但一般建议可能在这里最好),这样可以做出微小的改动,是否有任何编程策略可以解决这个问题?
答案 0 :(得分:12)
所有正常的oo原则适用于此处,减少耦合,增加内聚力,不要重复自己等。这将确保您拥有灵活且可扩展的代码库。
除此之外,不要试图抢先改变。到处申请YAGNI(你不需要它)。只构建您了解用户需要的内容。不要构建你认为你需要的东西。你更有可能猜错了,然后你就得到了一堆可能只是在路上的代码。
答案 1 :(得分:3)
我认为最重要的是确保您拥有全面的测试套件。这样,您可以在需要时自信地进行更改并知道它何时中断。
答案 2 :(得分:3)
没有使用PHP的经验,请加上一点盐。
但重要的是知道改变将来。因此,当您编码并开始想要破解事情以完成它们时,停止并思考“如果我需要再次更改它会怎么样?”。
现在,我知道php是一种脚本语言,但你必须能够正确地删除代码吗?这是最好的事情,保持UI(网页)尽可能轻,大部分是1或2个方法调用。
如果你有花哨的渲染逻辑,那么库吧。创造一个可能很常见的漂亮外观?看看可能会改变什么(颜色方案等),库吧。您已经将所有核心代码放入库中了吗? ;)
如果您始终致力于构建库,那么当变更请求进入时,您需要做的就是“为它找到合适的书籍”。我们做的很酷很酷如果书写得很好,你可以轻松地为它添加注释;)
这基本上就是我目前正在做的工作,我的“项目”是构建未来应用程序将要开发的平台,所以这是我的主要关注点。 :)
Mendelt made a good point关于应用YAGNI,以及上述所有内容,不仅仅是将内容写入库中,而且如果您想到了刚刚创建的性感小表(因为客户需要它),那么< em>可能再次使用,那么就该考虑让它更有用了。一次性客户端的一些模糊功能应该是临时完成的。
答案 3 :(得分:2)
好吧,我试图从另一方面解决这个问题:
与客户/用户进行更多沟通。
我自己一直在那里,编写那些不需要或没有正确沟通的东西,并且不得不重做大量的代码。通过更多的沟通或更确切地说:通过更多的正确的通信来阻止它。
除此之外: 允许用户改变颜色并偶尔问他们,在哪里放置按钮和概率,他们会满意这种“很高的控制水平”是相当不错的。然后他们不会要你重做真正的功能。是的,我对此很讽刺。
答案 4 :(得分:1)
我建议您使用经过验证的框架来选择您的语言。大多数良好的框架将被设计为适应多种场景。
答案 5 :(得分:1)
首先,您应该确定具有高变化概率的方面。这些方面应该“抽象出来”。一个典型的例子是您网站的风格(即通过CSS)。但你甚至可以定义一个“演示者”类来列出网页的特定元素。
难以正确估计变化概率。但这取决于你:)
答案 6 :(得分:0)
这是框架发挥作用的地方。
如果所有基线,背景,常规照片都在框架中,那么您的应用程序就是扩展,特例和附加组件。
该框架已经为变革而设计和构建。你的东西是框架设计为接受的变化。
当发生更改时,您将通过修改框架配置和重写插入框架的内容的某种组合来响应更改。你可以通过而不是来应对变化,专注于默认的背景材料。将其委托给其他人 - 框架作者。