2008-09-19 50 views
9

我在自由职业生涯中处于一个阶段,在那里我开发了几个针对支持项目管理,预订/预订和电子邮件管理等事情的中小型企业的Web应用程序。如何规划企业级Web应用程序?

我喜欢这项工作,但发现最终我的应用程序到达了维护听觉非常高的地步。我回头看看6个月前我写的代码,发现我必须花一点时间才会重新学习一下如何在修复或添加功能之前对代码进行编码。我尝试使用框架来练习(我之前使用过Zend Framework,并且正在考虑为我的下一个项目使用Django)

您使用什么技术或策略来规划出能够处理大量用户的应用程序没有破坏,仍然保持代码清洁,足以轻松维护? 如果任何人有任何书籍或文章,他们可以推荐,这将不胜感激。

回答

9

虽然有一定有关该主题的好文章,一篇优秀的文章,其中没有一个是真实世界体验的替代品。

可维护性是你可以直接计划的东西,除非是非常小的项目。这是您在整个项目中需要注意的事情。事实上,预先创建大量的类和基础结构代码可以产生比天真的意大利面代码更难以理解的代码。

所以我的建议是通过不断的重构来清理你现有的项目。看看那些很难改变的部分,并努力寻找更易于理解和调整的简单解决方案。如果代码太糟糕了,可以考虑从头开始重写。

不要启动新项目并期望它们成功,只是因为您阅读了更多文章或使用了新框架。相反,找出现有项目的故障,并修复它们的特定问题。无论何时您需要更改代码,请问自己如何重构它以支持未来的类似更改。这是你无论如何需要做的事情,因为将会在以后发生类似的变化。

通过做这些重构,你会发现各种特定问题你可以问和阅读文章。通过这种方式,您将学到的不仅仅是提出一般性问题,并阅读有关维护和框架的一般文章。

开始清理你的代码今天。不要把它推迟到你的未来项目。


(这同样适用于文档。真正的每个人的第一个文档是非常糟糕的。他们练得过于冗长,充满了不重要的东西,经过数月。因此,与解决方案的补充文件的问题,你有,因为机会很好,明年你会面临类似的问题,这些经验会提高你的写作风格比任何“如何写好”风格指南。)

-4

你应该考虑使用SharePoint。这是一个已经设计完成所有提到的环境,还有许多你可能没有想过的其他功能(但也许你将来需要:-))

Here的一些信息来自官方网站。
您可以使用2种不同的SharePoint环境:Windows Sharepoint Services(WSS)或Microsoft Office Sharepoint Server(MOSS)。 WSS是免费的,并且随Windows Server 2003一起提供,而MOSS不是免费的,但具有更多功能并且几乎覆盖了企业的所有需求。

+0

我想他想学习如何使用他已经知道的框架来改进他的代码。 – 2008-09-19 23:20:25

4

我诚实的建议看看Martin Fowlers Patterns of Enterprise Application Architecture。它讨论了很多方法来使您的应用程序更加有组织和可维护。另外,我会推荐使用单元测试来让你更好地理解你的代码。 Kent Beck的关于Test Driven Development的书是学习如何通过单元测试解决代码变化的好资源。

2

我可以帮助将旧的Web应用程序发展成为一个高可用性,高需求的Web应用程序的最重要的建议是封装的一切。 - 特别是

  1. 使用良好的MVC原则和框架将视图层与业务逻辑和数据模型分开。
  2. 使用健壮的持久层不会将您的业务逻辑与您的数据模型耦合
  3. 规划无状态和异步行为。

这里是在eBay如何解决此类问题 http://www.infoq.com/articles/ebay-scalability-best-practices

3

为了提高可维护性,你可以:

  • 如果您是唯一的开发人员,那么采用编码风格并坚持下去。当你通过你自己的代码浏览你可能完成的事情和你绝对不会做的事情时,这会让你自信。有信心在哪里寻找,寻找什么以及不寻找什么将为您节省大量时间。

  • 总是需要时间使文档更新。将任务纳入发展计划;将该时间包括在计划中作为更改或新功能的一部分。

  • 保持文档平衡:一些高级图,有意义的评论。最好的评论说明不能从代码本身读取。像商业原因或某些代码背后的“原因”。

  • 在计划中包含努力使代码结构,文件夹名称,命名空间,对象,变量和例程名称保持最新,并反映它们实际执行的操作。这对提高可维护性将有很大帮助。总是叫一个锹“锹”。避免大量的代码,通过您选择的语言提供的方式来构建它,给大块有意义的名字。

  • 低耦合和高相干性。确保你掌握最新的技术实现这些:合同设计,依赖注入,方面,设计模式等。

  • 从任务管理的角度来看,你应该估计更多的时间,工作的。不要犹豫,让客户意识到,随着时间的推移,您需要额外的时间来做小的非连续变化,而不是更大的连续项目和持续的维护,因为管理和分析开销更大(您需要管理和分析每个变更,包括影响在现有系统上分开)。您的客户将获得的一个好处是系统的预期寿命更长。另一种是准确的文件,如果他们决定这样做,他们将保留选择寻求别人的帮助。既保护客户投资,又是强大的卖点。

  • 使用源代码控制,如果你不这样做,已经

  • 保留一切为了客户以及任何重要的沟通做的详细的日志(一个简单的计算机或纸质的CMS)。每次分配前刷新你的记忆。

  • 记录每个客户留下的问题,想法和建议;在开始任务之前再次刷新你的记忆。

  • 提前计划实施后支持如何进行,并与客户进行讨论。使您的系统易于维护。规划参数化,监控工具,内部健全性检查。作为初始合同的一部分向客户出售实施后支持。

  • 即使您需要某个人提供实施后支持,也可以通过招聘进行扩展,执行管理员位。

推荐阅读:

+0

ACK和NACK。 ACK,“Code Complete”确实是一本很棒的书。 NACK,并非所有关于设计模式的书都值得一读。例如,“核心J2EE模式”主要由overbyped blabla组成。但是GoF的书很棒。 – vog 2009-03-14 21:24:58

1
  1. 使用框架/ MVC系统。你的代码越有组织和集中越好。

  2. 尝试使用Memcache。 PHP有一个内置的扩展,它需要大约10分钟的时间来设置,另外有20个可以放入你的应用程序。您可以缓存任何您想要的内容 - 将所有数据库记录缓存在其中 - 用于每个应用程序。它确实漫游。

  3. 我会推荐使用源代码控制系统,如Subversion,如果你还没有。

相关问题