Author:
Benji Smith
Translator:
Evan WangOriginal Link:
Why I Hate Frameworks 我正处于建造一个基于Java的Web应用的规划阶段(是的,必须基于Java,不过我现在还不想讨论其中的原因)。在这个过程中,我评估了一系列CMS应用容器框架,它们大多拥有J2EE门户、采用与JSR相兼容的MVC架构、基于角色等。
然而在花了几十个小时阅读功能列表和文档后,我几乎想戳瞎我的双眼。
首先假设我决定做一个调味品架子。
我以前做过一些小的木工活,因此我知道自己需要以下东西:一些木头和基本工具,包括卷尺、锯子、水平仪和锤子。
如果我想造一栋房子,而不仅仅是一个调味品架,我还是需要卷尺、锯齿、水平仪和锤子(以及其它东西)。
所以,我跑到一家五金店,问一个销售员,哪里能找到一把锤子。
“锤子?”他说:“现在几乎没人要买锤子了。这个已经过时了。”
我很惊讶这样一种发展,于是问他为什么。
“嗯,问题在于有太多种类的锤子。大锤啦,拔钉锤啦,球头锤等等。你买了其中一种,后来发现你还需要另外一种怎么办呢?你下次还得单独买一把。因此,大多数人实际上需要一把能够处理他们一生中可能碰到的所有敲敲打打的活的锤子。”
“嗯,这个听起来挺不错。那么我在哪里能够找到这样一把通用锤子呢?”
“不,我们不再销售了。他们已经废弃了。”
“真的吗?我想你刚才不是说通用锤子是将来的趋势嘛。”
“事实上,如果生产出一种能够处理所有事情的锤子,反倒不能很有效率地处理其中的任何一件。用一把大锤去拔个钉子很费劲吧。并且,你要杀死你前任女友的话,没有什么会比一把球头锤更适合的了。”
“这倒是真的。如果没有人会买这种通用锤子,而你们又不再销售老式的各种锤子,那么你们卖什么样的锤子呢?”
“事实上,我们不卖锤子。”
“那么…”
“根据我们的研究,人们需要的根本不是通用锤子。最好还是用不同的锤子做不同的工作。所以,我们现在销售锤子工厂,它能够生成任何你需要的锤子。你所需要的只是为锤子工厂招聘员工,开动机器,购买原材料,付公用事业费,诸如此类的…这样你就可以随时得到你需要的锤子。”
“但我真的不想买一个锤子工厂…”
“对头。我们其实也不再销售锤子工厂了。”
“但你刚刚还说…”
“我们发现大多数人实际上不需要一整个锤子工厂。比如说,一些人,就不可能用到球头锤。(也许他们就没有前女友。或者他们用冰锥来解决她们。)所以对一些人来说一个能生产各种锤子的工厂是没有什么意义的。”
“耶,这个实际得多。”
“所以,我们开始销售锤子工厂的示意图,以便我们的客户能够建造他们自己的锤子工厂,自行设计只生成他们实际需要的那些锤子。”
“让我猜猜看。你们现在也不再销售这些了。”
“对,真的是这样。实际上,人们不会为了几把锤子去建一个工厂。就像我经常说的,让建造工厂的专家去建造工厂吧。”
“这一点我赞成。”
“对的。所以我们停止销售这些示意图,转而销售建造锤子工厂的工厂。每个建造锤子工厂的工厂都由这方面的顶尖专家建造,所以,你根本不需要操心建造工厂的任何细节。你依然拥有自定义锤子工厂的好处,根据你自己特定的锤子设计做出你自己的锤子。”
“嗯,这个实际上并不…”
“我知道你想说什么!…我们也不再销售这些东西了。因为某些原因,也没有多少人买建造锤子工厂的工厂,所以我们又有了新的解决方法。”
“哇哈。”
“当我们回过头来审查这个统一工具的基础时,发现人们被必须管理和运作一个制造锤子的工厂以及它所生成的锤子工厂给困住了。当你需要处理类似的建造卷尺工厂的工厂,水平仪工厂的工厂,锯子工厂的工厂的时候,这很快就会变得相当棘手。更别提木材生产集团公司了。当我们审查这种状况的时候,我们意识到这对于仅仅想做个调味品架子的人来说过于复杂了。”
“是啊,这可不是开玩笑。”
“所以,这个星期,我们正在推广一种通用的建造工厂,用来建造生产工具工厂的工厂,这样你所有的用来建造不同种类工具的工厂的工厂就可以由一个单一的、统一的工厂来建造了。这种工厂将仅仅生产你所需要的工具工厂的建造工厂,而这些建造工厂将生成一个仅生产你自定义的工具的工厂来。你将得到你要的那种锤子,你要的卷尺,所有这一切仅仅需要按一下按钮(当然,也许你要发布一些配置文件以便它能根据你的期望来工作)。”
“所以,你们根本就没有什么锤子?不是吗?”
“是的。如果你需要一个高质量的,工业标准的调味料架子,你绝对需要这些高级玩意,而不是从那些破破烂烂的五金店里就买得到的锤子。”
“现在所有的人都在这么做吗?当他们需要一把锤子的时候,所有的人都在使用一个通用的能够生产工具工厂的建造工厂的工厂吗?”
“是的。”
“那…好吧。我想这就是我必须要做的。如果这是处理事情的既定方法,我想我最好还是学学怎么来用吧。”
“祝你好运!”
“这些都有文档的,对吧?”
现在我已经自豪地拥有了自己的通用的工具工厂的建造工厂的建造工厂,我很高兴地知道它与GPTBFF 0.97 RC2标准草案兼容,这是“通用的工具工厂的建造工厂的建造工厂”的标准。
很幸运地,面向工具的元工厂联盟里的工人都通过了这个版本的标准的验证。
然而标准之争即将开始:一种名为UXCTBFFF(Universal Trans-Continental Tool Building FFF)很有竞争力的原工厂技术承诺将统一建造工厂的工厂的建造行业,以使之符合那些同时使用公制和当地度量单位的国家的标准。
我的理解是只需要创建一个贯穿用户界面的抽象层的补丁包,就可以使GPTBFF 0.97 RC2与UXCTBFF标准达到95%左右的兼容。
真是太好了!
想必这种新的发展能够提升我的调料架的质量(一旦我搭建好我的工具工厂的建造工厂的建造工厂并使之运行,培训好工人,从柬埔寨进口来原木,在最近的某天,我就要开始做那个调料架了)。
译后记:
首先,洋人这种以调侃方式写的技术文章在国内很少见,国内的“技术专家”都过于严肃了,抑或其实并不了解这些技术的本质而没办法联想,只好照本宣科了。其次,当Java开发领域充斥了这么多的框架之后,你还能把持得住自己吗?在实际的软件企业中,怎样搭建自己的开发环境和平台并不断改进之,而不是盲目地引进最新框架和技术,是所有的技术领导人所要正视的头等大事。不过,在国内,往往重技术而轻管理,当然,这不是这篇文章所要讨论的问题。
相关推荐
"计算机专业外文翻译(Web应用框架)" 计算机专业外文翻译(Web应用框架)是指一种软件框架,旨在支持动态网站、Web应用程序和Web服务的开发。该框架旨在减少Web开发中常见操作的开销。例如,许多框架提供了数据库...
"UI框架与界面框架的 WEB 框架解决方案" 在当今的 WEB 应用开发中,UI 框架与界面框架扮演着非常重要的角色。它们为开发者提供了一整套的解决方案,可以快速地开发出美观、功能强大的 WEB 应用程序。本文将围绕“UU...
在探讨Cetus源到源翻译器框架的树形结构图之前,我们需要了解几个关键概念。首先,Cetus是一个由普度大学开发的源到源翻译器框架,它主要用于将C语言源代码转换成抽象语法树(AST)形式,并对树形结构的每个节点进行...
spring框架毕业设计英文翻译,用于毕业设计的外文文献翻译
SSM框架介绍及应用 Spring框架是当前最流行的开源应用程序框架之一,旨在解决Java EE开发中的许多问题。本文将对Spring框架的基本思想和核心组件进行剖析,并介绍其在实际开发中的应用。 一、Spring框架的基本...
scrapy框架爬虫,爬取百度翻译、有道翻译、谷歌翻译、爱词霸翻译、必应翻译,包括防爬虫破解,使用方式just文件夹下python run.py “想要翻译的内容”
基于pytorch框架Transformer的机器翻译项目python源码+项目说明.zip基于pytorch框架Transformer的机器翻译项目python源码+项目说明.zip基于pytorch框架Transformer的机器翻译项目python源码+项目说明.zip基于pytorch...
首先,我们需要回答几个问题,以确定我们为什么要写一个框架,什么是我们的框架,谁是我们的用户对象,如何维护和发展我们的框架等等。这一步骤被称为定位。只有在明确了我们的目标和方向后,我们才能开始设计和开发...
Spring框架基础 Spring框架起源于Rod Johnson在2002年出版的《Expert One-on-One J2EE Design and Development》中的代码。这个框架融合了Java企业版(JEE)开发的最佳实践,与一流的第三方框架集成,并提供了简单...
2. **Spring上下文**:这是一个配置文件,为Spring框架提供上下文信息,如企业服务(JNDI、EJB、邮件服务、国际化、验证和调度)。 3. **Spring AOP**:Spring的面向切面编程模块,使AOP集成到框架中,方便事务管理...
安全隐私框架1.0+全文中文翻译版终稿 内生安全从安全框架开始 数据安全治理技术支撑框架 数据安全治理框架及实践 网络安全实施框架指南-ISACA 信息系统安全保障评估框架 智慧城市安全体系框架等等
C# WinForm开发框架是一种基于.NET Framework的桌面应用程序开发工具,它为开发者提供了一套完整的控件、设计模式和架构,使得创建具有丰富用户界面的Windows应用程序变得更加便捷和高效。这款框架尤其适合初学者,...
总之,"免费漂亮的WPF界面框架"结合了FirstFloor.ModernUI的优势,为开发者提供了一个强大的工具,用于构建既美观又功能丰富的WPF应用程序。其自定义字体功能、响应式设计以及丰富的组件库,使得开发过程更加高效且...
总的来说,【Winform快速开发框架】是一个强大的开发工具,它通过预设的三层架构、基类封装、自定义实体和轻量级控件,为Winform应用开发提供了高效的解决方案。开发者可以借此快速搭建应用,减少重复工作,将更多...
SSH2框架,全称为Spring、Struts2和Hibernate2的集成框架,是Java Web开发中的一个常见组合。这个实例源码使用的是Spring 3.2、Struts2 2.3.4和Hibernate 4.2这三个框架的较新版本,提供了一个基础的用户登录和用户...
本文将深入探讨名为“MNVVisionCk”的Halcon视觉通用框架,该框架的出现极大地简化了Halcon的使用,并提供了丰富的预封装算子和停靠功能,旨在提升开发效率和用户体验。 首先,我们要理解Halcon框架的概念。框架在...
然后,框架会自动加载对应的翻译文件,使所有的系统消息和错误提示都显示为中文。 此外,为了确保全面的本地化,开发者可能还需要考虑日期和时间格式、货币符号、数字分隔符等文化差异,这些都是汉化包需要涵盖的...
能在线下载的XPosed框架,支持安卓8以下,ROOT后可一键在线安装。支持雷电模拟器、夜神模拟器、逍遥模拟器、部分云手机以及系统支持的手机。Xposed鸭是一款基于Xposed Installer的修改版软件,他弥补了原版XPosed...
C# Winform通用开发框架,支持多语言,多数据库,自动更新,模块化,可用其开发任意CS端系统。此框架没有任何版权限制,支持拿来商用。此框架内部集成了大部分的数据库,可以随意更换数据库,且封装好了所有的实体...