主要观点:在编程世界中“魔法”一词常被随意使用,此篇给出其定义,“魔法”程度与理解代码所需参考的其他位置数量及基于代码检查确定咨询代码的难度成正比,这是一个连续体,而非二元对立,是通用定义且适用于不同编程层次,“魔法”本身无好坏之分,只是一种成本,需权衡其成本与收益。
关键信息:
- 代码“魔法”定义的两个要素:理解代码需参考的其他位置、基于代码检查确定咨询代码的难度。
- 定义创建了“魔法”的连续体,一切代码都有一定程度的“魔法”。
- 通用定义在不同理解层次有不同体现,如低层次关注内存数据操作,高层次关注架构层面。
- “魔法”成本高会给程序员理解代码带来负担,但成本本身无好坏,需权衡收益。
重要细节: - 以 Python 中
b.c
可通过多种机制重载为例说明隐式方法增加“魔法”。 - 介绍对象导向中继承导致在复杂父类树中查找方法更具“魔法”。
- 阐述多态性使确定方法的所有可能解析更困难。
- 说明最动态的语言中猴子补丁可能使仅从源代码确定代码行为变得不可能。
- 指出任意组合可能导致难以通过源代码解开结果。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。