(转自piglei)
这些年积累的挖坑和填坑经验,让我养成了一个习惯:对那些号称“用极少成本完成大量工作”的东西保持高度警惕。举个例子,我非常喜欢 Django REST Framework(DRF)框架,用它写过许多个 API 项目。但我对 DRF 里那些顶层 API 工具——比方说用 3 行代码实现一整套 CRUD API——从来都是敬而远之。(1/)
不使用那些如魔法般强大的 API,主要有两个原因。第一:它们真的很难懂,完全理解其行为需要付出很高的脑力成本。刚读完文档和源码的第一个月,也许我能保证自己对其行为了如指掌,但半年、一年以后呢?那时也许我又得重新花上大量时间,才能弄清那 3 行代码究竟做了什么。(2/)
第二个原因,在于这些高度封装的魔法 API,多少对个性化需求都不太友好。假如它刚好完美适配你的所有需求,那么万事大吉,一切好说。但如果你发现,需要修改某个没写在文档上的行为时,那挑战出现了,这事往往难如登天。
所以,在使用 DRF 框架(或任何一个提供了高度抽象的“魔法工具”)时,(3/)
我最爱干的事,就是把最终代码量(工作量)维持在一个我觉得“心理舒适”的级别上。
这意味着,我多少得写一些看似乏味、重复的代码,比如手动地显式构造 Serialier,手动操作某个数据模型等。但这些不是问题:享受“魔法”的好处总要付出代价,有些代价只是藏的太好以至于我们暂时意识不到罢了。(4/4)