《面向对象设计实践指南:Ruby语言描述》—第1章 1.5节小结

简介: 如果某个应用程序存活了很长时间(也就是说,如果它成功了),那么它最大的问题将是如何应对变化。通过代码编排有效地应对变化是设计的事情。最常见的设计要素是原则和模式。不幸的是,即使正确地运用了原则,并且也恰当地使用了模式,也无法保证能够很好地创建出易于更改的应用程序。

本节书摘来自异步社区《面向对象设计实践指南:Ruby语言描述》一书中的第1章,第1.5节小结,作者【美】Sandi Metz,更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.5 小结
面向对象设计实践指南:Ruby语言描述

如果某个应用程序存活了很长时间(也就是说,如果它成功了),那么它最大的问题将是如何应对变化。通过代码编排有效地应对变化是设计的事情。最常见的设计要素是原则和模式。不幸的是,即使正确地运用了原则,并且也恰当地使用了模式,也无法保证能够很好地创建出易于更改的应用程序。

OO度量能暴露出应用程序在遵循OO设计原则方面的情况。糟糕的度量值强烈地表明将来可能会遭遇困难;不过,好的度量值也发挥不了太大的作用。一个做法有问题的设计也可能产生出很高的度量值,但更改时所花费的成本仍然可能很高。想要设计投入获得最佳效果,诀窍就是:采用让人易于理解的设计理论,并且恰当地应用这些理论;在正确的时间,以正确的数量应用它们。设计依赖于将理论付诸实践的能力。

理论与实践之间有区别吗?

理论上说,没有区别。如果说理论就是实践,那么你便需要学会OOD的那些规则,坚持不懈地应用它们,并在今后创建出完美的代码。你的工作到这个时候才算完成。

不过,实践是检验真理的唯一标准。实践与理论有所不同,它会弄脏你的双手。是实践在放置砖块、建造桥梁和编写代码。实践处在不断变化、充满疑惑,以及很不确定的现实世界里。它要面临相互矛盾的选择,有时还需要扮成鬼脸,选择更小一点的恶魔。它要不断躲闪,要抢劫Peter以偿还Paul。它要竭尽所能、尽其所有来谋取生活。

理论很有用,也很必要。它是本章的重点,但已足够。接下来将开展实践。

本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

相关文章
|
算法 测试技术 API
如何用Ruby语言提高代码的可读性和可维护性
在软件开发过程中,代码的可读性和可维护性是非常重要的因素。一旦代码变得难以理解和修改,就会导致开发速度变慢、bug增多以及团队合作效率下降。在本篇博客中,我们将探讨一些使用Ruby编程语言的技巧和最佳实践,以提高代码的可读性和可维护性。
312 1
|
XML 前端开发 安全
构建自己的MVC框架(Ruby语言实现)-- 2. 创建ApplicationController
构建自己的MVC框架(Ruby语言实现)-- 2. 创建ApplicationController
|
前端开发 关系型数据库 开发工具
构建自己的MVC框架(Ruby语言实现)-- 开篇
构建自己的MVC框架(Ruby语言实现)-- 开篇
|
文字识别 API 开发工具
印刷文字识别产品使用合集之SDK支持ruby语言吗
印刷文字识别产品,通常称为OCR(Optical Character Recognition)技术,是一种将图像中的印刷或手写文字转换为机器编码文本的过程。这项技术广泛应用于多个行业和场景中,显著提升文档处理、信息提取和数据录入的效率。以下是印刷文字识别产品的一些典型使用合集。
|
监控 网络安全 持续交付
公司电脑管理软件结合 Ruby 语言的实践探索
在数字化办公时代, Ruby 语言以简洁灵活的特点, 成为公司电脑管理软件开发的新选择。通过示例代码展示了 Ruby 在获取系统信息、监控内存使用及远程管理方面的应用。Ruby 的灵活性与丰富库资源, 大大提升了管理效率与准确性, 为企业数字化管理带来新可能。
195 3
|
自然语言处理 Ruby
Ruby语言揭秘:如何轻松驾驭自然语言处理?
【8月更文挑战第31天】本文介绍了如何利用Ruby进行自然语言处理(NLP),包括安装`treat`库及其实现文本分词、词性标注和命名实体识别等基础任务的方法。通过示例代码,展示了Ruby在NLP领域的强大功能与灵活性,为初学者提供了一个友好且实用的入门指南。在信息爆炸的今天,掌握Ruby进行NLP处理的技能显得尤为重要。
167 0
|
测试技术 开发者 Ruby
Ruby领域特定语言(DSL)的神秘力量:如何让你的代码飞起来?
【8月更文挑战第31天】在软件开发领域,Ruby以简洁的语法和强大的表达能力著称,但面对复杂业务逻辑时,代码可能变得冗长难维护。此时,领域特定语言(DSL)成为解决问题的有效途径。DSL专为特定领域设计,使代码更贴近业务逻辑,提高可读性和可维护性。本文通过示例展示了如何在Ruby中开发DSL,包括使用解析器和宏功能创建一个简单的Web应用结构描述语言,并提出了定义清晰语法、避免滥用DSL等最佳实践,强调了测试与文档的重要性。
345 0
|
前端开发 关系型数据库 开发工具
构建自己的MVC框架(Ruby语言实现)-- 第一章 从零到“它工作了!”
构建自己的MVC框架(Ruby语言实现)-- 第一章 从零到“它工作了!”
|
存储 自然语言处理 Go
红袖添香,绝代妖娆,Ruby语言基础入门教程之Ruby3基础数据类型(data types)EP02
Ruby是强类型动态语言,即Ruby中一旦某一个对象被定义类型,如果不通过强制转换操作,那么它永远就是该数据类型,并且只有在Ruby解释器运行时才会检测对象数据类型,它的一切皆为对象(包括 nil 值对象),可以通过调用内置class属性来获取该对象的具体数据类型。对于 Ruby 而言,所有类型都继承自 Object 类(根类为 BasicObject)。
红袖添香,绝代妖娆,Ruby语言基础入门教程之Ruby3基础数据类型(data types)EP02
|
Ruby Python
红袖添香,绝代妖娆,Ruby语言基础入门教程之Ruby3基础语法,第一次亲密接触EP01
书接上回,前一篇我们在全平台构建好了Ruby3的开发环境,现在,可以和Ruby3第一次亲密接触了。 Ruby是一门在面向对象层面无所不用其极的解释型编程语言。 我们可以把编写Ruby代码看作是一场行为上的艺术,编码就像跳舞一样,Ruby的每一步都很优雅,几乎没有一步是多余的。
红袖添香,绝代妖娆,Ruby语言基础入门教程之Ruby3基础语法,第一次亲密接触EP01