模块化是好事,以及,它让我联想到了 C 语言,以及它那如同平原同样的命名空间。
所谓『模块化』,是一种很天然的事情,体现了『分而治之』的思想。编程
坦白来讲,这是一个无需过多讨论的话题。若是你写过C 语言,就会对它那『近乎平坦』的命名空间,感到熟悉。全部的函数,变量都在同一个全局命名空间(static 类型的除外,事实上,static 函数,是C语言中少数的模块化手段之一)。若是你 include一个东西,你都不知道你在干吗,you know nothing。好比:编程语言
#include <stdio.h> #include <stdlib.h>
有时候我也许能记得 printf 在 stdio里面,但大部分时候个人记性不怎么好,也不爱记忆这种东西。模块化
并且,为了防止命名冲突,大部分时候,咱们都要给咱们的函数,加各类命名前缀,好比,写一个链表实现的时候,会出现诸如List_Add(List* l, void* item) List_Remove(List* l, void* item)
这样的东西。这和上古时代的『匈牙利命名法则』(感兴趣的朋友,能够百科搜索一下),何其类似,各类无聊的 btn
前缀,不明觉厉的变量命名。函数
关键是,在比较现代化的编程语言中,或者比较现代化的编程IDE中,偶尔能看到这样的命名风格,这时让人有一种莫名的,穿越上的喜感。code
幸亏,Thrift 虽然借用了 include 这个关键字,可是没有搞成 C 语言那样(也许用 import 是更好的选择?)。用法以下:it
// 导入一个模块,模块的访问空间,就是文件名 // 这里及其明确清醒,甚至须要写清楚文件名后缀 include "shared.thrift" // 使用 // 必需要加命名空间前缀,不然访问不到对应的要素 service Calculator extends shared.SharedService { }
和这个使用感受,最相同的,就是 Go 语言了,既简单又明确。io