Thrift RPC 系列教程(3)——模块化
模块化是好事,以及,它让我联想到了 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)——模块化相关推荐
- Thrift RPC 系列教程(4)——源码目录结构组织
Thrift 代码就是编程代码.是代码,就应该有良好的工程组织,并且,单独git仓库.版本管理,都是必不可少的. 前面我们简单总结了一些 Thrift 的一些基础知识点,但无非是一些细节层面的东西,所 ...
- Thrift RPC 系列教程(5)—— 接口设计篇:struct enum设计
好的接口,如同漂亮的美女,是人都会多看一眼. 一个示例 比如,要我们设计一个 User.那很简单,典型的 class 嘛,按照 OOP 的套路走就行了,于是: struct User{1: strin ...
- 【全栈接口测试进阶系列教程】入门到入职的jmeter接口测试工具实战,接口测试步骤,正则表达式jsonpath,断言,接口加密,beanshell,jdbc,jmeter+ant+jenkins
目录 [本文简介看之前请详细的看完介绍] 本文是全网首发的[全栈接口测试进阶系列教程]jmeter接口测试工具从入门到入职, 接口系列包含 接口测试系列包含所有的接口测试工具入门到入职,如果你喜欢的话 ...
- STM32 基础系列教程 50 – MbedTls
前言 mbed TLS(以前称为PolarSSL)是TLS和SSL协议的实现,并且需要相应的加密算法和支持代码.这是双重许可与Apache许可证 2.0版(与GPLv2许可也可).网站上指出,mbed ...
- apache thrift_Apache Thrift快速入门教程
apache thrift Thrift是一种跨语言RPC框架,最初是在Facebook上开发的,现在作为Apache项目开源. 这篇文章将描述如何以不同的模式(例如阻塞,非阻塞和异步)编写Thrif ...
- Apache Thrift快速入门教程
Thrift是一种跨语言RPC框架,最初是在Facebook上开发的,现在作为Apache项目开源. 这篇文章将描述如何以不同的模式(例如阻塞,非阻塞和异步)编写Thrift服务和客户端. (我觉得后 ...
- Unreal Engine 4 系列教程 Part 8:粒子系统教程
原文:Unreal Engine 4 Particle Systems Tutorial 作者:Tommy Tran 译者:Shuchang Liu 在本篇教程中,你将学习如何创建粒子特效并使用蓝图进 ...
- 2021年最新最全Flink系列教程_Flink快速入门(概述,安装部署)(一)(JianYi收藏)
文章目录 引言 相关教程直通车: day01_Flink概述.安装部署和入门案例 今日目标 Flink概述 什么是批处理和流处理 为什么需要流计算 Flink的发展史 Flink的官方介绍 Flink ...
- 老周的ABP框架系列教程
老周的ABP框架系列教程 -- 一.框架理论初步学习 1. ABP框架的来源与作用简介 1.1 简介 1.1.1 ABP框架全称为"ASP.NET Boilerplate ...
最新文章
- clodeblocks debug断点调试_Intellij IDEA高阶DEBUG大杀器
- 整理的一些比较基础的面试知识点
- Tomcat常用面试题
- 360浏览器网页走丢了_超酷!Win10 正式版全新 UI 界面,全球第二大浏览器上线...
- 超长干货 | Kubernetes命名空间详解
- 解决Caused by: java.io.IOException: java.io.IOException: error=12, Cannot allocate memory
- (已解决)iOS真机运行 Xcode报错(libpng error: CgBI: unhandled critical chunk)
- 拓端tecdat|R语言时变向量自回归(TV-VAR)模型分析时间序列和可视化
- 不同浏览器对URL最大长度的限制(转)
- 微信中直接打开手机系统浏览器的实现
- python继承list_python中 class和l
- 灰灰考研c语言讲义,灰灰全书之数据结构试讲
- wpsmac和pc版的区别_办公得力小助手你选谁, WPS Mac版和Microsoft区别在哪里?
- kettle org.pentaho.ui.xul.XulException: java.lang.reflect.InvocationTargetException
- 小小知识点(十九)护眼色豆沙绿的设置
- 电脑微信语音通话听不到对方声音或无法播放消息语音
- Android广播机制Broadcast详解
- 剑芒罗曼史2解图片程序
- 第四章#4.3哈夫曼树以及案例介绍
- (二十三)Animator 实例 —— 开场动画
热门文章
- JBOSS的管理员账号和密码设定
- 希尔排序(插入排序的优化算法)
- 处理器仿存带宽_linux服务器CPU内存硬盘读写带宽等性能测试方法
- MAC能登录微信,浏览器连不上网
- 字符串中 去掉字符串前后空格以、'\t'(tab) C函数实现,附sscanf正则方式
- Selenium+java - 借助autolt完成上传文件操作
- JAVA取数两个数组交集,考虑重复和不重复元素
- “猜画小歌”的一些细节和思考
- 启动VIP报CRS-1028/CRS-0223致使VIP状态为UNKNOWN故障分析与解决
- 梵高:每个人心中都有一团火,而路过的人只看到了烟