《重构HTML:改善Web应用的设计(修订版)》——1.2 何时重构

简介:

本节书摘来自异步社区《重构HTML:改善Web应用的设计(修订版)》一书中的第1章,第1.2节,作者: 【美】Elliotte Rusty Harold 更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.2 何时重构

应该在什么时候重构呢?在清除和处理过时代码的过程中,何时才算是到了添加新特性的时机?这个问题可能有几个答案,但它们之间并不是互斥的。

重构的第一个时机出现在进行任何重新设计之前。如果你的网站碰到需要重新开发的情况,首要任务是掌控它的内容。此时重构的第一个好处显而易见,你将为新设计的实现创建更牢固的基础。良构、组织良好的页面更容易重新设计样式。

重新设计之前进行重构的第二个好处是,重构过程能帮助开发者熟悉网站。你将会了解页面位置,它们在网站层次上是如何组合起来的,以及哪些是跨页面的通用元素等。同时,还有可能对重新设计产生前所未有的新想法。别急着去实现,把想法都先记录下来(放到问题追踪系统中则更好),在重构完成之后,就可以着手实现了。重构是十分重要的工具,可以帮助网站开发者加速网站的开发。如果他们以前未参与开发这个需要重构的网站,重构的过程会帮助他们了解网站的细节。就算是为网站工作已经超过了10年,重构也能提醒他们一些已经遗忘的东西。无论是哪种情况,重构都能帮助开发者熟悉网站。

新功能可能只出现在新页面,甚至可能只出现在全新的网站上。如果跟旧网站仍有关联,你需要检查一下是否有可借鉴或可重用的东西。样式、图片、脚本和模板或许都可重用。这样确实可以帮你保持新旧网站具有一致的外观。但如果需重用的部分有问题,则应事先清理一番。基于类似的理由,在开发任何基于旧项目的新项目之前,都应该好好揣摩一下重构。比如,如果要实现“一键式购物(one-click shopping)”⑧,先要保证旧的购物车能够满足需要。如果法律部门要求在每一个页面的底部加上限制性附属细则(small print),还得看看每个页面是否都有一个固定的位置可以方便地记录这些信息。没有必要重构所有的东西,但这种改动总是有助于在网站中集成新内容。

最后,或许你会考虑半连续式重构(semicontinuous refactoring)。如果碰到难以一下子解决的问题,不要连续两周无动于衷,在这期间看看还有什么地方是可以重构的。就算是不能解决大问题,也应该马上去做些力所能及的事情来修复一些小问题。尽可能使用敏捷开发方式,编写小部分,测试小部分,重构小部分,如此反复。尽管很多项目都要基于一大堆不良和过时的代码开发,不过如果有未完工项目的话,一定要先保证不让它变成又一个烂码基。一旦看到自己在重复相同的代码,可以把它提取到外部模板或样式表中去。当发现原来的HTML编写者使用了废弃的元素,应该马上使用CSS取而代之(并利用这个机会教育一下这个编写者为何要这么做)。一连串小的但有效的变化累积起来就会带来巨大的效果。

无论做什么,都不要因追求完美而忽视小的改进(勿以善小而不为)。如果眼下的时间足够做一点儿重构,那就只做一点儿。以后有时间还可以做得更多。整体性的重新设计虽然惹人注目令人难忘,但不积跬步又何以至千里?你的目标应该是让代码每天都有新变化。这样坚持几个月,你就会拥有可以骄傲地向人夸耀的清晰代码。

相关文章
|
2天前
|
前端开发 安全 JavaScript
构建高效Web应用:前后端分离架构的实践
【9月更文挑战第4天】在数字时代,Web应用已成为企业与用户互动的主要平台。本文将介绍如何通过前后端分离的架构设计来构建高效的Web应用,探讨该架构的优势,并分享实现过程中的关键步骤和注意事项。文章旨在为开发者提供一种清晰、高效的开发模式,帮助其在快速变化的市场环境中保持竞争力。
|
20小时前
|
开发框架 .NET
ASP.NET Web Pages - HTML 表单
表单是 HTML 文档中放置输入控件(文本框、复选框、单选按钮、下拉列表)的部分。
15 2
|
7天前
|
中间件 编译器 数据处理
在web开发中应用管道过滤器
【9月更文挑战第1天】本文介绍管道-过滤器架构将数据处理流程分解为一系列独立组件,通过管道连接,适用于数据流处理如图像处理、编译器设计等。通过具体实例说明了Gin如何有效支持管道-过滤器风格的设计,构建高性能Web服务。
25 9
|
7天前
|
Rust 安全 开发者
惊爆!Xamarin 携手机器学习,开启智能应用新纪元,个性化体验与跨平台优势完美融合大揭秘!
【8月更文挑战第31天】随着互联网的发展,Web应用对性能和安全性要求不断提高。Rust凭借卓越的性能、内存安全及丰富生态,成为构建高性能Web服务器的理想选择。本文通过一个简单示例,展示如何使用Rust和Actix-web框架搭建基本Web服务器,从创建项目到运行服务器全程指导,帮助读者领略Rust在Web后端开发中的强大能力。通过实践,读者可以体验到Rust在性能和安全性方面的优势,以及其在Web开发领域的巨大潜力。
18 0
|
7天前
|
Java 数据安全/隐私保护 安全
掌握Struts 2动态方法调用,让你的Web开发如虎添翼,轻松应对复杂业务需求!
【8月更文挑战第31天】在Web应用开发中,Struts 2框架因强大功能和灵活性而广受青睐。其动态方法调用(DMI)特性允许在不修改配置文件的情况下动态调用Action类中的方法,相比传统方法调用(需在`struts.xml`中为每个方法创建单独的`<action>`),DMI简化了配置并提升了灵活性、可维护性和扩展性。本文通过对比DMI与传统方法调用,展示如何利用DMI简化开发流程,并强调了在使用DMI时需注意的安全性和访问控制问题。
|
7天前
|
开发者 Java 前端开发
Struts 2验证框架:如何让数据校验成为Web开发的隐形守护者?揭秘前后端一致性的秘诀
【8月更文挑战第31天】在现代Web开发中,数据验证对确保应用健壮性和良好用户体验至关重要。随着前后端分离架构的普及,保证数据校验一致性尤为关键。Struts 2 验证框架基于 JavaBean 验证 API(JSR 303/JSR 380),允许开发者通过注解或 XML 配置轻松定义验证规则,确保输入数据在执行业务逻辑前已通过验证。此外,Struts 2 支持与前端 JavaScript 验证相结合,确保前后端数据校验一致,提升用户体验。通过注解、XML 配置和资源文件,开发者可以轻松定义和调整验证规则,实现前后端一致的数据校验,提高应用健壮性。
16 0
|
7天前
|
Java 缓存 数据库连接
揭秘!Struts 2性能翻倍的秘诀:不可思议的优化技巧大公开
【8月更文挑战第31天】《Struts 2性能优化技巧》介绍了提升Struts 2 Web应用响应速度的关键策略,包括减少配置开销、优化Action处理、合理使用拦截器、精简标签库使用、改进数据访问方式、利用缓存机制以及浏览器与网络层面的优化。通过实施这些技巧,如懒加载配置、异步请求处理、高效数据库连接管理和启用GZIP压缩等,可显著提高应用性能,为用户提供更快的体验。性能优化需根据实际场景持续调整。
29 0
|
7天前
|
Java 数据库连接 Spring
Struts 2 插件开发竟如魔法盛宴,为框架注入超能力,开启奇幻编程之旅!
【8月更文挑战第31天】在Web开发中,Struts 2插件开发允许我们在不改动框架核心代码的前提下,通过创建实现特定接口的Java类来扩展框架功能、调整其行为或促进与其他框架(如Spring、Hibernate)的集成,从而更好地满足特定业务需求。遵循良好的设计原则与实践,能够确保插件的高效稳定运行并提升整体项目的可维护性。具体步骤包括创建项目、定义插件类、实现初始化与销毁逻辑,并将插件部署至应用中。
28 0
|
7天前
|
开发者 Java 开发框架
JSF与EJB,打造企业级应用的神器!让你的Web应用更加稳定、高效!
【8月更文挑战第31天】在现代企业级应用开发中,JSF(JavaServer Faces)与EJB(Enterprise JavaBeans)是两大核心技术。JSF作为一款基于Java的Web应用框架,以其丰富的UI组件和表单处理功能著称;EJB则专注于提供分布式事务处理及远程调用等企业级服务。两者的结合为企业应用带来了高效便捷的开发模式。下文将通过一个简单的示例展示如何利用JSF进行用户信息的输入与保存,并借助EJB实现相关业务逻辑。尽管这一组合具有明显优势,但在实际应用中还需考虑其局限性并作出合理选择。
18 0
|
7天前
|
开发者 安全 SQL
JSF安全卫士:打造铜墙铁壁,抵御Web攻击的钢铁防线!
【8月更文挑战第31天】在构建Web应用时,安全性至关重要。JavaServer Faces (JSF)作为流行的Java Web框架,需防范如XSS、CSRF及SQL注入等攻击。本文详细介绍了如何在JSF应用中实施安全措施,包括严格验证用户输入、使用安全编码实践、实施内容安全策略(CSP)及使用CSRF tokens等。通过示例代码和最佳实践,帮助开发者构建更安全的应用,保护用户数据和系统资源。
17 0
下一篇
DDNS