热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

(续)关于代码重用性的研究

假如你是一个前端,现在需要在网页上添加一个日期选择器。你自估要多久?聪明的程序员不会重复劳动,他会复制已有的代码。更聪明的程序员连复制都懒,他会把这些代码写成组件,下次可以直接使用。

假如你是一个前端,现在需要在网页上添加一个日期选择器。你自估要多久?

聪明的程序员不会重复劳动,他会复制已有的代码。

更聪明的程序员连复制都懒,他会把这些代码写成组件,下次可以直接使用。

 

于是,框架就这样诞生了。起初框架的目标很明确:我需要重用这段代码,所以把它们提取出来。

但后来却发现,有个地方我需要的是一个稍微有点变化的日期选择器,直接照搬代码显然是不行的,

但是聪明的程序员不会去重复劳动,于是他选择修改框架代码,让他同时满足2个需求。

 

后来的后来,需求越来越多,终于有一天,框架变的很大。

然后就有人抱怨了,尼玛我只需要这么一个简单的功能,你给我来这么多代码。

有洁癖的程序员就不满意了,他决定自己重写一个框架。

 

于是,越来越多的框架诞生了,都声称有很多功能,怎么怎么方便。

然而这些框架最终都为了他们所追求的功能和方便付出代价:代码越写越多,到最后只能重构,甚至是重写。

对于新人来说,或者去学习一个很复杂的框架,虽然他可能只需要一个功能,或者自己重写。

 

以上就是程序员和他的伙伴们的故事。

让我们重新梳理下为什么框架越做越多的原因:

1. 需要功能A,所以写一个框架。

2. 需要基于功能A开发功能B,所以改框架添加功能。

3. 需要基于功能B开发功能C,所以改框架添加功能。

4. 只需要功能A,尼玛这框架功能太多了,我还是自己重写个吧。 - 或者- 需要基于功能A开发功能 D,发现改起来越来越复杂,于是选择重写。

5. 回到步骤1

 

当然,并不是所有框架最后都被重写了,然而实际上,即使作者自己不重写,也会有其他人去重写。

出现这个现象的本质问题是什么?再重新看上面的步骤4,它是导致重写的导火线。

因为我们只能使用框架的全部功能,而不是部分功能,当我们对他的任何一个功能不满足时,就必须整个重写。

举个现实中例子:我需要一个博客系统,但是wordpress的XXX功能我不满意,所以我喜欢自己开发一个。

我需要一个日期选择器,但是XXX框架提供的日期选择器XXX地方不好用,所以与其去改他的代码,我不如自己开发一个。

 

作为一个完整的东西,要找不到一个不满意的地方着实很简单。

所以就不断有后来者想要做一个完美、大而全的东西。

所以解决这个问题的关键是:要允许使用部分功能,而不是全部。至于怎么做到,我想只要听从党的指挥就可以了。

 

 

 

 

 


推荐阅读
  • PHP插件机制的实现方案解析
    本文深入探讨了PHP中插件机制的设计与实现,旨在分享一种可行的实现方式,并邀请读者共同讨论和优化。该方案不仅涵盖了插件机制的基本概念,还详细描述了如何在实际项目中应用。 ... [详细]
  • 本文详细介绍了在XAMPP环境中如何修改Apache和MySQL的默认端口号,并确保WordPress能够正常访问。同时,提供了针对Go语言社区和Golang开发者的相关建议。 ... [详细]
  • Ulysses Mac v29:革新文本编辑与写作体验
    探索Ulysses Mac v29,这款先进的纯文本编辑器为Mac用户带来了全新的写作和编辑环境。它不仅具备简洁直观的界面,还融合了Markdown等标记语言的最佳特性,支持多种格式导出,并提供强大的组织和同步功能。 ... [详细]
  • 优化网页加载速度:JavaScript 实现图片延迟加载
    本文介绍如何使用 JavaScript 实现图片延迟加载,从而显著提升网页的加载速度和用户体验。 ... [详细]
  • 本文将详细讲解在WordPress平台中添加多媒体文件的方法。WordPress支持多种媒体类型,如视频、音频和图像等。通过以下步骤,您可以轻松地将这些文件上传到您的网站。 ... [详细]
  • 在数字时代,让您的内容脱颖而出,不仅需要创意和专业知识,还需要有效的搜索引擎优化(SEO)策略。本文将探讨如何通过精心设计的内容结构和关键词策略,提高内容的可见性和吸引力。 ... [详细]
  • 探讨WebSocket和EventSource在WordPress主题开发中的应用,分析两者的技术特点及适用场景,帮助开发者做出最优选择。 ... [详细]
  • 解决MySQL错误2002:无法建立数据库连接
    本文详细描述了在Digital Ocean服务器上托管的多个WordPress站点突然出现数据库连接错误的情况,并提供了有效的解决方案。 ... [详细]
  • 深入解析CSS中的基线、行高、行内框及行框概念
    本文详细介绍了CSS布局中的关键概念,包括基线、行高、行内框和行框等,以及它们之间的关系。通过具体示例,帮助开发者更好地理解和应用这些概念,提升网页布局的精确性和美观度。 ... [详细]
  • 随着阿里云万网推出的一系列免费主机活动,越来越多的用户开始尝试构建自己的个人网站。然而,对于新接触这项服务的朋友来说,找到正确的申请入口和了解详细的建站步骤可能并不容易。本文将详细介绍如何在阿里云万网平台上成功申请免费主机,并利用WordPress快速搭建个人网站。 ... [详细]
  • 日期:2013年3月19日 来源:GBin1.com 对于希望启动并运行首个网站的新手而言,选择一个合适的CMS或免费平台是至关重要的第一步。本文将为您介绍一系列关于WordPress的设计开发资源和手册,帮助您迅速掌握网站构建技巧。 ... [详细]
  • 本文详细介绍了如何使用PHP构建个人博客系统,包括适合初学者的入门指导、推荐的功能强大的开源博客系统以及如何提高博客系统的性能。 ... [详细]
  • 广安地区PHP网站资源及建设指南
    本文将为您介绍如何在广安找到PHP网站的学习资源、自助建站系统的源码以及解决PHP网站建设和维护中的常见问题。 ... [详细]
  • 解决phpMyAdmin运行错误:mysqli_init(): 属性访问尚未允许
    本文探讨了在使用phpMyAdmin过程中遇到的mysqli_init()函数错误,并提供了有效的解决方案。 ... [详细]
  • 统一幻灯片标题:使用母版功能的技巧
    本文详细介绍了如何通过PowerPoint中的幻灯片母版功能,实现所有幻灯片标题的一致性设置。同时,提供了其他办公软件和编程相关的实用技巧。 ... [详细]
author-avatar
sotoloraboin_678
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有