`
javasee
  • 浏览: 961362 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

重构的词源学探索

阅读更多

说实话,即便是在写《重构之维》的时候,这个问题仍然困扰着我:refactoring(refactory)这个词从何而来?Martin Fowler猜,它来自代数里的因式分解(factoring),但最早的重构者们似乎从来没有想到过这个词……

——————

EtymologyOfRefactoring refactoring 10 September 2003

Where did the word refactoring come from?

This question struck my mind a few times when writing the refactoring book. I didn't think that trying to do an intensive etymological search was worth the trouble - after all it was the techniques that I was focused on - but I did ask around the people who had helped develop the ideas (Ward Cunningham, Kent Beck, Bill Opdyke, John Brant, Don Roberts, Ralph Johnson...)

The obvious answer comes from the notion of factoring in mathematics. You can take an expressions such as x^2 + 5x + 6 and factor it into (x+2)(x+3). By factoring it you can make a number of mathematical operations much easier. Obviously this is much the same as representing 18 as 2*3^2. I've certainly often heard of people talking about a program as well factored once it's broken out into similarly logical chunks.

When I asked around the creators of refactoring, the common answer was that they had no idea. The term had been around for a while and they don't know where it came from.

The one definite answer I got was from Bill Opdyke, who did the first thesis on refactoring. He remembered a conversation during a walk with Ralph Johnson. They were discussing the notion of Software Factory, which was then in vogue. They surmised that since software development was more like design than like manufacturing, it would be better to call it a Software Refactory. Refactory has gone on to be the name for the consulting organization that Ralph and his colleagues use.

分享到:
评论

相关推荐

    VQ-VAE.zip

    7. 源代码实践:vq_vae.py是实现VQ-VAE模型的Python源代码,其中包含了模型定义、训练循环、损失计算等关键部分。通过阅读和理解这个代码,开发者可以更好地理解VQ-VAE的工作原理,并根据需求进行定制和扩展。 总之...

    关于打渔晒网c++

    同时,它可能还涉及C++的设计模式、软件工程实践,如单元测试、重构、持续集成/持续部署(CI/CD),以及如何在大型项目中有效地组织代码。 【压缩包子文件的文件名称列表】:新建文件夹 这个文件名表明可能包含的...

    functions_embedding:带有阅读材料和源代码的存储库-Material source code

    《函数嵌入:深入理解源代码的分布式表示》 在当今的软件开发领域,理解和...总的来说,"functions_embedding"项目提供了一个宝贵的平台,让我们能够探索源代码的分布式表示,并将其应用于提升软件工程的效率和质量。

    炼金术杂志

    由于没有具体的标签,我们无法直接确定涉及的技术领域,但从"炼金术"这个词,我们可以联想至数据转换、软件开发过程中的迭代优化或者是技术探索。 "炼金术"通常被用来比喻将原始、不完美的事物转化为更有价值的东西...

    DL飞碟第12期任务包

    通过解压提供的"动力飞碟第12期任务包",我们可以探索其中包含的各种资源,如源代码、文档和其他辅助材料,以提升自己的编程技能。 在"DL飞碟"项目中,"动力飞碟"可能是一个模拟飞行器运动或游戏应用的代名词。它...

    Dtcms2开源下载

    【Dtcms2开源下载】是一个重要的里程碑,它代表了Dtcms系统在技术发展上的一个新阶段。这个开源版本相较于其前身...无论是对于新手还是经验丰富的开发者,探索并利用Dtcms2的源代码都将是一次有价值的学习和实践过程。

    Reflector反编译工具

    虽然“反编译”这个词可能引起误解,但Reflector实际上并不真正执行完整的反编译,即转换为原始源代码,而是将编译后的IL(Intermediate Language)代码解析成易于理解的形式,让开发者可以查看并理解程序的内部工作...

    Programing Pearl(编程珠玑(内有中英两种版本))

    7. **源代码**:书中包含的源代码让读者有机会直接实践所学知识,通过动手编程加深理解。这些代码实例通常涵盖多种编程语言,如C、C++或Python,使得不同语言背景的读者都能从中受益。 总之,《编程珠玑》不仅仅是...

    smbPitchShiftProject.zip

    这种方法通常包括信号分析、频率重新分配和信号重构三个步骤,可以有效避免传统方法中的“音高折叠”问题。 在这个项目中,开发者可能提供了一些实现细节,例如算法优化、效率提升以及特定应用场景下的最佳实践。...

    Python库 | lobotomy-0.1.2.tar.gz

    为了更深入地了解"lobotomy"库,我们需要查看源代码、阅读`README`文件,甚至运行测试来探索其实现的功能。如果这个库有相关的GitHub仓库,还可以查看其提交历史、问题追踪和社区讨论,以获取更多关于库的信息。 ...

    微信小程序桌游酒桌游戏小程序源码

    在"谁是卧底"游戏中,玩家被分为平民和卧底两个角色,通过描述词来猜测对方的身份,源码中应包含了处理玩家身份分配、词库管理、投票和交流等功能的代码。而"真心话大冒险"则通常涉及玩家之间的问答或挑战,源码可能...

    WRRBM:重新实现单词表示RBM,使用受限的Boltzmann机训练单词嵌入

    5. **重构与对比散度**:对比散度(Contrastive Divergence, CD)是训练RBM时常用的近似方法,它通过在有限步的采样后计算梯度来代替完整的马尔科夫链。CD-k表示进行k次Gibbs采样。 6. **评估与应用**:训练完成后...

    csharp-katas:C#中的代码Katas

    "Kata"一词源自武术训练,意为一种重复的练习,旨在通过不断重复来提高技艺。在编程世界中,Katas是精心设计的编程练习,可以帮助程序员熟悉语言特性、理解设计模式、提高问题解决能力以及提升代码质量。 在"Csharp...

    tensorflow-playground:使用tensorflow和类似scikit-learn的API的一些深度学习模型的实现

    1. **Word2Vec**:这是一种用于词向量表示的方法,它可以将词汇转化为连续的、有意义的向量空间。这些向量捕获了词汇间的语义关系,例如“king”-“man”+“woman”≈“queen”。在自然语言处理(NLP)中,Word2Vec...

    Jquery 仿百度搜索引擎自动完成功能

    **jQuery 仿百度搜索引擎自动完成功能** 在Web开发中,提供高效的搜索...同时,高级开发者也可以在此基础上探索更多的可能性,如使用现代前端框架(如React或Vue.js)进行重构,或者结合AI技术实现更智能的自动完成。

    ecd:玩具Monorepo项目

    总结来说,"ecd:玩具Monorepo项目"是一个探索和实验性的开发项目,旨在用JavaScript重构和优化画布设计器及其运行时,通过Monorepo管理多个相关组件,并且注重性能和可扩展性。项目的核心目标是提供一个更强大、更...

    OpensimWebinterface-开源

    在描述中提到,此项目已迁移到"OpenSim Web界面(Redux)",这可能意味着它经过了重设计或重构,以提供更好的性能、用户体验或功能增强。"Redux"一词通常与软件工程中的状态管理库相关,暗示该项目可能采用了更现代...

    PyChat-LSTMAutoencoder:使用Corenell电影对话语料库上的LSTM自动编码器模型实现的适用于Facebook的聊天机器人

    1. 数据预处理:首先,我们需要对Cornell电影对话数据集进行清洗和格式化,包括去除标点符号、停用词等,然后将对话转化为适合模型训练的格式。 2. 模型构建:接着,搭建LSTM自动编码器模型,包括定义输入层、LSTM...

Global site tag (gtag.js) - Google Analytics