模块化是好事,以及,它让我联想到了 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中,偶尔能看到这样的命名风格,这时让人有一种莫名的,穿越上的喜感。

Thrift中的模块化

幸好,Thrift 虽然借用了 include 这个关键字,但是没有搞成 C 语言那样(也许用 import 是更好的选择?)。用法如下:

// 导入一个模块,模块的访问空间,就是文件名
// 这里及其明确清醒,甚至需要写清楚文件名后缀
include "shared.thrift"// 使用
// 必须要加命名空间前缀,否则访问不到对应的要素
service Calculator extends shared.SharedService {}

和这个使用感觉,最相同的,就是 Go 语言了,既简单又明确。

Thrift RPC 系列教程(3)——模块化相关推荐

  1. Thrift RPC 系列教程(4)——源码目录结构组织

    Thrift 代码就是编程代码.是代码,就应该有良好的工程组织,并且,单独git仓库.版本管理,都是必不可少的. 前面我们简单总结了一些 Thrift 的一些基础知识点,但无非是一些细节层面的东西,所 ...

  2. Thrift RPC 系列教程(5)—— 接口设计篇:struct enum设计

    好的接口,如同漂亮的美女,是人都会多看一眼. 一个示例 比如,要我们设计一个 User.那很简单,典型的 class 嘛,按照 OOP 的套路走就行了,于是: struct User{1: strin ...

  3. 【全栈接口测试进阶系列教程】入门到入职的jmeter接口测试工具实战,接口测试步骤,正则表达式jsonpath,断言,接口加密,beanshell,jdbc,jmeter+ant+jenkins

    目录 [本文简介看之前请详细的看完介绍] 本文是全网首发的[全栈接口测试进阶系列教程]jmeter接口测试工具从入门到入职, 接口系列包含 接口测试系列包含所有的接口测试工具入门到入职,如果你喜欢的话 ...

  4. STM32 基础系列教程 50 – MbedTls

    前言 mbed TLS(以前称为PolarSSL)是TLS和SSL协议的实现,并且需要相应的加密算法和支持代码.这是双重许可与Apache许可证 2.0版(与GPLv2许可也可).网站上指出,mbed ...

  5. apache thrift_Apache Thrift快速入门教程

    apache thrift Thrift是一种跨语言RPC框架,最初是在Facebook上开发的,现在作为Apache项目开源. 这篇文章将描述如何以不同的模式(例如阻塞,非阻塞和异步)编写Thrif ...

  6. Apache Thrift快速入门教程

    Thrift是一种跨语言RPC框架,最初是在Facebook上开发的,现在作为Apache项目开源. 这篇文章将描述如何以不同的模式(例如阻塞,非阻塞和异步)编写Thrift服务和客户端. (我觉得后 ...

  7. Unreal Engine 4 系列教程 Part 8:粒子系统教程

    原文:Unreal Engine 4 Particle Systems Tutorial 作者:Tommy Tran 译者:Shuchang Liu 在本篇教程中,你将学习如何创建粒子特效并使用蓝图进 ...

  8. 2021年最新最全Flink系列教程_Flink快速入门(概述,安装部署)(一)(JianYi收藏)

    文章目录 引言 相关教程直通车: day01_Flink概述.安装部署和入门案例 今日目标 Flink概述 什么是批处理和流处理 为什么需要流计算 Flink的发展史 Flink的官方介绍 Flink ...

  9. 老周的ABP框架系列教程

    老周的ABP框架系列教程 -- 一.框架理论初步学习   1. ABP框架的来源与作用简介 1.1  简介 1.1.1       ABP框架全称为"ASP.NET Boilerplate ...

最新文章

  1. clodeblocks debug断点调试_Intellij IDEA高阶DEBUG大杀器
  2. 整理的一些比较基础的面试知识点
  3. Tomcat常用面试题
  4. 360浏览器网页走丢了_超酷!Win10 正式版全新 UI 界面,全球第二大浏览器上线...
  5. 超长干货 | Kubernetes命名空间详解
  6. 解决Caused by: java.io.IOException: java.io.IOException: error=12, Cannot allocate memory
  7. (已解决)iOS真机运行 Xcode报错(libpng error: CgBI: unhandled critical chunk)
  8. 拓端tecdat|R语言时变向量自回归(TV-VAR)模型分析时间序列和可视化
  9. 不同浏览器对URL最大长度的限制(转)
  10. 微信中直接打开手机系统浏览器的实现
  11. python继承list_python中 class和l
  12. 灰灰考研c语言讲义,灰灰全书之数据结构试讲
  13. wpsmac和pc版的区别_办公得力小助手你选谁, WPS Mac版和Microsoft区别在哪里?
  14. kettle org.pentaho.ui.xul.XulException: java.lang.reflect.InvocationTargetException
  15. 小小知识点(十九)护眼色豆沙绿的设置
  16. 电脑微信语音通话听不到对方声音或无法播放消息语音
  17. Android广播机制Broadcast详解
  18. 剑芒罗曼史2解图片程序
  19. 第四章#4.3哈夫曼树以及案例介绍
  20. (二十三)Animator 实例 —— 开场动画

热门文章

  1. JBOSS的管理员账号和密码设定
  2. 希尔排序(插入排序的优化算法)
  3. 处理器仿存带宽_linux服务器CPU内存硬盘读写带宽等性能测试方法
  4. MAC能登录微信,浏览器连不上网
  5. 字符串中 去掉字符串前后空格以、'\t'(tab) C函数实现,附sscanf正则方式
  6. Selenium+java - 借助autolt完成上传文件操作
  7. JAVA取数两个数组交集,考虑重复和不重复元素
  8. “猜画小歌”的一些细节和思考
  9. 启动VIP报CRS-1028/CRS-0223致使VIP状态为UNKNOWN故障分析与解决
  10. 梵高:每个人心中都有一团火,而路过的人只看到了烟