Prefactoring——Introduction

Prefactoring——Introduction

 

Introduction



听到有人说《Prefactoring》是一本好书:“能提升数十年的功力”,虽然过于夸张,但也说明这本书还是值得一读的,不然怎么会得了JOLT大奖呢?如作者所言,读本书需要一定的开发经验的积累,否则茫然不知为何,收获不大。

最近花时间看了看《Prefactoring》,把所得记录下来。

What about Prefactoring?

在软件开发中,我们常常谈论重构(Refactoring),它已经是一个被广泛认可的开发方法,它可以提高软件的品质;而且很多开发者在开发中也找到了可以省事的理由:“现在就这样简单处理吧,以后再进行重构”,可事实上,他可能永远都没有机会和功夫去做重构了。的确,每个项目和产品都有成本(资金和人力)和时间的限制,“重构”在很多项目中往往只是一个概念,而没有实践。

针对这样的现状,Ken Pugh提出了Prefactoring——防患于未然,在项目开始前预先进行思考,三思而后行;根据既有的经验和指导原则来避免落入软件开发中诸多的陷阱,在开始编码前就预先做出好的设计来,以降低重构的代价——这似乎并没有多少新意,因为在历史的长河中,人们向来都会以史为鉴;而诸多Design Principle/Design Pattern/XXX Driven Development都告诉我们如何使得代码能适应一定的变化,易于调整和修改。不过,作者根据自己多年丰富的经验,列出了诸多的指导原则,强调了软件开发流程的重要性,告诉我们如何在开发中应用一些原则来减少我们重构的次数,降低重构的代价,毕竟重构可能是要付出很大的代价的。本书也从侧面反映了开发团队中需要有经验丰富的开发者进行指导,人的作用不言自明,和《软件工艺》中所云暗合,Ken Pugh正是在向我们传授他的“技艺”。

Refactoring & Prefactoring

预构和重构可说是关系密切:

1、  重构是在写代码之后进行的,而预构则是在写代码之前。

2、  重构中的一个重要方法是Extract Method,而预构中的“Separate Policy”则可以帮助我们少作Extract Method

3、  预构和重构一样不强调做big design。但是预构的原则告诉我们应该花一些时间去调查软件的环境(包括业务和技术等方面)。

4、  预构不反对重构,而是致力于减少重构的次数,降低重构的代价。

5、  重构关注的是代码的code transformations,而预构则不止于此。预构还建议我们尽量利于可以利用的东西,比如一些优秀的open sourceproject,而不是一开始就自己写每一行代码。

Postscript

预构看起来有些像关于设计的指导原则,而并没有到达方法学的高度,作者强调了设计和开发过程的重要性,尤其是设计的重要性,这点和RUP倒是有共同的地方——预先做出好的设计,好的设计能让项目大大降低技术风险。

Reference

Prefactoring: Extreme Abstraction, Extreme Separation, Extreme Readability

Prefactoring and Refactoring

Prefactoring》避开重蹈覆辙的陷阱

[推荐]Prefactoring- -

转载于:https://www.cnblogs.com/jiezhi/archive/2006/07/26/460177.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值