模塊化是好事,以及锡宋,它讓我聯(lián)想到了 C 語(yǔ)言儡湾,以及它那如同平原一樣的命名空間。
為什么需要模塊化
所謂『模塊化』执俩,是一種很自然的事情徐钠,體現(xiàn)了『分而治之』的思想。
坦白來(lái)說(shuō)役首,這是一個(gè)無(wú)需過(guò)多討論的話題尝丐。如果你寫過(guò)C 語(yǔ)言,就會(huì)對(duì)它那『近乎平坦』的命名空間衡奥,感到熟悉爹袁。所有的函數(shù),變量都在同一個(gè)全局命名空間(static 類型的除外矮固,事實(shí)上失息,static 函數(shù),是C語(yǔ)言中少數(shù)的模塊化手段之一)。如果你 include一個(gè)東西盹兢,你都不知道你在干嘛邻梆,you know nothing。比如:
#include <stdio.h>
#include <stdlib.h>
有時(shí)候我也許能記得 printf 在 stdio里面蛤迎,但大部分時(shí)候我的記性不怎么好确虱,也不愛(ài)記憶這種東西含友。
而且替裆,為了防止命名沖突,大部分時(shí)候窘问,我們都要給我們的函數(shù)辆童,加各種命名前綴,比如惠赫,寫一個(gè)鏈表實(shí)現(xiàn)的時(shí)候把鉴,會(huì)出現(xiàn)諸如List_Add(List* l, void* item) List_Remove(List* l, void* item)
這樣的東西。這和上古時(shí)代的『匈牙利命名法則』(感興趣的朋友儿咱,可以百科搜索一下)庭砍,何其相似,各種無(wú)聊的 btn
前綴混埠,不明覺(jué)厲的變量命名怠缸。
關(guān)鍵是,在比較現(xiàn)代化的編程語(yǔ)言中钳宪,或者比較現(xiàn)代化的編程IDE中揭北,偶爾能看到這樣的命名風(fēng)格,這時(shí)讓人有一種莫名的吏颖,穿越上的喜感搔体。
Thrift中的模塊化
幸好,Thrift 雖然借用了 include 這個(gè)關(guān)鍵字半醉,但是沒(méi)有搞成 C 語(yǔ)言那樣(也許用 import 是更好的選擇疚俱?)。用法如下:
// 導(dǎo)入一個(gè)模塊缩多,模塊的訪問(wèn)空間呆奕,就是文件名
// 這里及其明確清醒,甚至需要寫清楚文件名后綴
include "shared.thrift"
// 使用
// 必須要加命名空間前綴瞧壮,否則訪問(wèn)不到對(duì)應(yīng)的要素
service Calculator extends shared.SharedService {
}
和這個(gè)使用感覺(jué)登馒,最相同的,就是 Go 語(yǔ)言了咆槽,既簡(jiǎn)單又明確陈轿。