我正处于自由职业生涯的某个阶段,我为中小型企业开发了几个支持项目管理,预订/预订和电子邮件管理等内容的Web应用程序。
我喜欢这项工作但发现最终我的应用程序达到了维护人员听到非常高的程度。我回顾一下我6个月前写的代码,发现我必须花一些时间重新学习我最初的代码,然后才能修复或增加功能。我尝试使用框架练习(之前我使用过Zend Framework,并考虑将Django用于我的下一个项目)
您使用哪些技术或策略来规划一个能够处理大量用户而不会破坏并仍然保持代码足够清晰以便轻松维护的应用程序? 如果任何人有任何他们可以推荐的书籍或文章,那也将非常感激。
答案 0 :(得分:9)
尽管有关于该主题的文章肯定很好,但它们都不能代替现实世界的经验。
除了非常小的项目之外,可维护性是你无法直接计划的。这是整个项目中需要注意的事项。实际上,提前创建大量的类和基础结构代码可以产生比天真的意大利面条代码更难理解的代码。
所以我的建议是清理你现有的项目,不断重构它们。看看那些难以改变的部分,并寻求更容易理解和调整的更简单的解决方案。如果代码甚至太糟糕了,请考虑从头开始重写。
不要启动新项目并期望它们成功,只是因为您阅读了更多文章或使用了新框架。相反,确定现有项目的失败并修复其特定的问题。每当您需要更改代码时,请问自己如何对其进行重组以支持将来的类似更改。无论如何,这是你需要做的,因为 将来会有类似的变化。
通过做那些重构,你会偶然发现各种具体问题,你可以询问和阅读有关的文章。这样你就可以学到更多,只需要提出一般性问题并阅读有关维护和框架的一般文章。
立即开始清理代码 。不要将其推迟到未来的项目中。
(对于文档来说也是如此。每个人的第一个文档都非常糟糕。几个月之后,它们变得过于冗长,并且充满了不重要的东西。因此,文档补充了解决问题的方法真的我有,因为很有可能明年你会面临类似的问题。这些经历将比任何“如何写好”的风格指南更能改善你的写作风格。)
答案 1 :(得分:4)
我诚实地推荐看看Martin Fowlers Patterns of Enterprise Application Architecture。它讨论了许多使应用程序更有组织和可维护的方法。另外,我建议使用单元测试来更好地理解您的代码。 Kent Beck关于Test Driven Development的书是学习如何通过单元测试解决代码更改的好资源。
答案 2 :(得分:3)
为了提高可维护性,您可以:
如果您是唯一的开发人员,那么采用编码风格并坚持下去。这将在以后通过您自己的代码导航您可能已经完成的事情以及您绝对不会做的事情时给您信心。确信在哪里寻找,寻找什么以及不寻找什么都会为您节省大量时间。
始终需要时间来更新文档。将任务纳入发展计划;将该时间纳入计划中作为任何变更或新功能的一部分。
保持文档平衡:一些高级图表,有意义的评论。最好的评论告诉我们无法从代码本身读取。就像商业原因或某些代码块背后的“为什么”一样。
在计划中加入努力,使代码结构,文件夹名称,命名空间,对象,变量和例程名称保持最新,并反映它们实际执行的操作。这将大大提高可维护性。总是称铁锹为“铁锹”。避免使用大块代码,通过您选择的语言提供的方式对其进行构造,为块提供有意义的名称。
低耦合和高相干性。确保您了解实现这些目标的最新技术:合同设计,依赖注入,方面,设计模式等。
从任务管理的角度来看,您应该估计更多的时间并为非连续工作收取更高的费率。不要犹豫让客户意识到您需要额外的时间来进行随时间推移的小型非连续变更,而不是更大的连续项目和持续维护,因为管理和分析开销更大(您需要管理和分析每个变更,包括影响)在现有系统上单独)。您的客户将获得的一个好处是系统的预期寿命更长。另一个是准确的文档,如果他们决定这样做,将保留他们寻求别人帮助的选项。两者都保护客户投资,并且是强大的卖点。
如果您不这样做,请使用源代码管理
详细记录客户所做的一切以及任何重要的沟通(简单的计算机或基于纸张的CMS)。在每次任务之前刷新你的记忆。
记录每个客户未解决的问题,建议和建议;在开始作业之前再次刷新你的记忆。
提前计划如何进行实施后支持,与客户讨论。使您的系统易于维护。规划参数化,监控工具,内部健全性检查。作为初始合同的一部分,向客户出售实施后支持。
通过招聘扩展,即使您只需提供实施后支持,也可以执行管理位。
推荐阅读:
design patterns上的任何内容都包含在推荐阅读列表中。
答案 3 :(得分:2)
我可以提供的最重要的建议是帮助将旧的Web应用程序发展为极高可用性,高需求的Web应用程序,即封装所有内容。 - 特别是
这是一篇关于eBay如何解决这些问题的优秀文章 http://www.infoq.com/articles/ebay-scalability-best-practices
答案 4 :(得分:1)
使用框架/ MVC系统。您的代码越有条理和集中就越好。
尝试使用Memcache。 PHP有一个内置的扩展,它需要大约十分钟设置,另外二十分钟放入你的应用程序。您可以缓存您想要的任何内容 - 我将所有数据库记录缓存在其中 - 适用于每个应用程序。它确实徘徊。
我建议使用Subversion等源代码管理系统。如果你还没有。
答案 5 :(得分:-4)
您应该考虑使用SharePoint。这是一个环境,已经设计为你提到的所有,并有许多你可能没有想过的其他功能(但也许你将来需要:-))
Here来自官方网站的一些信息 您可以使用2种不同的SharePoint环境:Windows Sharepoint Services(WSS)或Microsoft Office Sharepoint Server(MOSS)。 WSS是免费的,并附带Windows Server 2003,而MOSS不是免费的,但具有更多功能,几乎涵盖了您所有企业的需求。