最少的代码,最好的框架

作者:森与淵
链接:https://zhuanlan.zhihu.com/p/23984086
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

最少的代码,是易读的

神话传说中,人类集全族之力,欲修建一座巴别之塔,与天齐高,上帝畏惧,便乱了人们的语言,使人们无法互相沟通、通力合作,终是四散流去,唯留一座废墟在大地上。

可见语言对于合作的意义重大,而所谓工程,正是人与人之间协力完成目的的指称。

但作为软件工程,人们却往往忽略了合作的基础,语言,亦既是代码的可读性。

从常见的mv*系列,到新颖的flux架构,用意之一都是更好的组织代码,对代码进行分类,提高其可读性。它们各有各的思路和理念,但唯一颠扑不破、用之四方而皆准的道理就是:越少的代码,越好理解。

当一句很冗长很冗长的英文长句放在面前,你需要消化一会。

当一段很冗长很冗长的代码放在面前,你很可能就无法理解了!

最少的代码,是易维护的

维护一段代码,尤其是别人的代码时,大脑是需要对其最表层的抽象代码进行缓存的,而无需时刻谨记其底层的琐碎细节。这也就意味着,对于一个应用完善框架的程序,至少框架内的代码我们无需理会,从而能够掌握更多的产品机能。

但同时也意味着,即使是最优秀的程序员,所能维护的代码数量也是有限的。

因此更少的代码,更多的语义,更多的机能,才是正确的出路。

你说四个字“天狗食日”,就远远胜过“神异的猛犬飞跃过天际,将火红的太阳一口一口地吃掉……”等废话无数。

最少的代码,是稳健的

富有经验的程序员比新人写出来的代码要少很多bug,除却技能的不足之外,更多的是逻辑性的、没想到的、思虑不周的错误。

难道老程序员的逻辑能力就比新程序员要好吗?

其实是个熟练度的问题,因为其中种种陷阱,都有对应的“较正确的”、“不成文”的代码模式或是习惯,可以避免问题的发生。这些并非语言自身特性所赋予的技巧,更类似于最佳实践之类的经验之谈,是不成体系和琐碎的,自然也是难以面面俱到的。

更何况,要知道,凡是系统,必有bug。越是精密的系统,也越是会有漏洞存在,只是潜藏的和显露的区分罢了。

用那么多技巧去避免bug的产生,远远不如简单粗暴的只用少量代码实现功能来得好,就像是最简单的陈述句一样,主谓宾三个词,一眼看过去就明白意义,出错的可能性自然很少很少。

最少的代码,是灵活的

实现起来容易,对于需求的更改自然也就容易接受。

复杂度隐于不可见的背面

二人持斧,于林伐木,长者教导青年说:力发乎脚,提于腰身,终于手腕,落于树木,寻其纹路,不深不浅,端正不斜……洋洋洒洒千言,其技巧非三年不可得,长者伐二木,而青年一木未毕。

但若是手提电锯,技巧自然也是有的,但即使是一窍不通者,也可于疏忽间伐数木。长者不屑,愤愤然。

那么,作为斧头帮伐木者的我们,就该对“毫无技巧”的电锯工作者表示不屑吗?

其实不然。我们看见的只是最终的结果,而在此之前,为了制造好用的电锯,其背后的整个产业链,所需的技术含量不知超过用斧技巧多少。

业务的复杂度并没有消失,而是转移到事物不可见的暗面,我们用精心设计工具这一行为,取代了同样精心却大量重复地直接生产产品的行为。

——这亦是一种抽象。

概念自身只是一个节点,当我们提起这个节点的时候,带动地是背后一整张意义网络。类比于编程,具体琐碎的代码本身是一个混沌的整体,而提供给我们人类的API才是节点所在,亦是抽象的最终产物和应用的直接物。

API就是概念。

从某种角度说,设计语言就是设计API;设计框架亦如是。

零碎的小概念,交织成宽泛的、更高层次的概念;琐碎的、细节的代码,暴露为意义明确的API。

工欲善其事,必先利其器

所以我说,最好的框架,用起来一定是最少的代码。

至于你问怎样才能写最少的代码呢?我想,

DSL(领域特定语言)是目前不错的道路。

详情请期待《领域特定语言·DSL概述》吧。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,663评论 25 708
  • 先说项目开发过程中团队人员的分工协作。 一 人员安排 毕业至今的大部分项目都是独立完成,虽然也有和其他同事协作的时...
    SnowflakeCloud阅读 10,862评论 3 59
  • 创建数组及修改 类型检测 转换方法 Array栈操作 Array队列操作 Array的反转和排序 数组的连接与截取...
    togeek阅读 388评论 0 2
  • (一) 8月14日一早我开始阅读美国作家温斯顿.葛鲁姆的《阿甘正传》。我不知道如何形容这些文字,我找不到一个合适的...
    汪宠喵匠阅读 1,211评论 9 11