如今,能帮助开发人员设计API的工具、技术和平台可谓种类繁多。尽管资源丰富,但API设计中仍然存在着一大难题:如何为API命名。这事听起来简单,但命名本身也需要一整套可持续且稳定可靠的设计流程,用以定义API的识别、分类与命名原则。总之,这事可绝不像很多人想象中那么轻松。
在《API设计模式》一书中,作者兼谷歌软件工程师JJ Geewax把命名称为API开发者最需要学习和掌握的众多关键设计因素之一。合理的API命名约定不仅能改善API的可访问性和用户友好度,同时也有助于预防很多令人头痛的API可用性问题。
名称里的玄机
Geewax提到,API的名称之所以如此重要,是因为API的功能往往取决于自身跟用户的交互能力。用户经常会通过API名称来快速判断访问时将要接收、查看或操作的信息类型。此外,这些名称还能指示出技术组合当中的哪些API彼此直接相关,或者在设计上负责处理哪些请求类型。
在书中第三章部分,Geewax讨论了API命名方法的重要意义:
对于传统编译代码,我们的函数和变量名称只会影响到有权访问源代码的人。而经过编译(最小化)和部署,这些名称往往彻底消失。而在设计和构建API时,名称的选择则更加重要,因为它们负责代表并描述所有API用户将要看到并进行交互的内容。
Geewax还强调,最好能在开发早期就确定API的命名模式,甚至可以考虑把命名作为开发的第一步。开发者应该为API命名实践设定好期望,而具体名称的选择将最终影响到API组合的管理方式。例如,特定API所对应的特定名称将影响到开发者在后续版本更新、或者出现新需求时,新增API所能使用的具体名称。API组合规模越大,开发者就越难在不影响原有体系的前提下更改名称模式。
API名称:什么是好,什么是坏
Geewax在《API设计模式》中提出的命名实践,基本上围绕着同一个中心主题:API名称是分好坏的。好的API名称既要降低冗余,又应该最大限度减少用户的理解难度。而坏名称也可能误导用户,致使其理解错乱、找不到自己最需要的API。在极端案例中,差劲的名称甚至会引发冗余构建,白白浪费掉宝贵的应用程序资源、增加不必要的开发成本。
Geewax在书中以存储用户账户偏好项的API为例,提到如果开发者只是简单把该API命名为API Preferences,那么用户其实很难结合上下文理解这个API到底是什么作用。在这种情况下,UserPreferences之类的名称明显更合适,能保证用户准确理解自己要处理的是什么。
另一方面,名称太过具体并不是好事。假设开发者把这个用户偏好项API命名成了SingleUserAccountPreferences,那使用者可能会怀疑该API到底是存储着很多用户的个人偏好、还是只存储单一个人用户的偏好。如果碰巧认定为后一种解释,开发团队甚至有可能为每个单独的账户分别构建API。所以说,UserPreferences才是最佳选择,详略得当而且清晰易懂。
API名称特征
在命名API的时候,开发者其实也可以灵活发挥,毕竟命名约定并不像程序代码那样具有严格的语法和结构要求。但是,灵活性可不代表什么东西都能拿来当名称。
如果同样有多种方式来表达同一事物,我们往往倾向于把这些表达混合使用,而这最终会导致命名规则变得复杂莫测,也让使用者难以区分不同API之间的联系和不同。为此,我们必须控制住灵活表达的“诱惑”,强加给自己一些命名规则,避免破坏API名称的良好可预测性。
当然,什么是清晰、什么是简单、如何寻求二者的平衡,具体还是要取决于项目特性。想找到百试百灵的通行办法几乎不太可能。作为指导,Geewax结合API设计原则,提出了API名称中所应体现的三大特征:
表达力:意味着API名称应该清晰传达它所代表的功能、资源、消息、字段、属性或值的类型;
简单性:要求名称除表达力之外,还应在每个具体部分都提供合理价值;
可预测性:意味着API名称应该易于理解,且遵循明确的命名模式。
那么,开发者该如何确保API名称满足这三大条件呢?Geewax的答案,是为API命名确定四条通行的执行原则。
第一,优先使用美式英语。虽然肯定会有例外,但API名称最好使用美式英语,这也是编程世界中最具全球认可度的语言。如果必要,最好能始终提供本地化说明文档。
第二,注意使用正确的语法。虽然简略化的语法干练诱人,但在API名称中最好坚持使用正确的语法规则。比如,使用正确的拼写方式,关注名词单复数的适当使用。这样既有助于准确表达API作用,也能降低用户混淆的风险。
第三,句法同样重要。句法规定的是API名称中的单词排列顺序。在大多数开发场景下,句法应遵循三大标准格式之一:camel、snake和kabab。
最后,确保包含上下文。理想条件下,API名称应该提供一些与框架或程序类型相关的提示。如果API名称在不同场景下可能代表不同含义,最好能添加上下文以消除产生误解的可能性。
好文章,需要你的鼓励
在2025年KubeCon/CloudNativeCon北美大会上,云原生开发社区正努力超越AI炒作,理性应对人工智能带来的风险与机遇。随着开发者和运营人员广泛使用AI工具构建AI驱动的应用功能,平台工程迎来复兴。CNCF推出Kubernetes AI认证合规程序,为AI工作负载在Kubernetes上的部署设定开放标准。会议展示了网络基础设施层优化、AI辅助开发安全性提升以及AI SRE改善可观测性工作流等创新成果。
意大利ISTI研究院推出Patch-ioner零样本图像描述框架,突破传统局限实现任意区域精确描述。系统将图像拆分为小块,通过智能组合生成从单块到整图的统一描述,无需区域标注数据。创新引入轨迹描述任务,用户可用鼠标画线获得对应区域描述。在四大评测任务中全面超越现有方法,为人机交互开辟新模式。
DeepL作为欧洲AI领域的代表企业,正将业务拓展至翻译之外,推出面向企业的AI代理DeepL Agent。CEO库蒂洛夫斯基认为,虽然在日常翻译场景面临更多竞争,但在关键业务级别的企业翻译需求中,DeepL凭借高精度、质量控制和合规性仍具优势。他对欧盟AI法案表示担忧,认为过度监管可能阻碍创新,使欧洲在全球AI竞争中落后。
MIT研究团队发现,AI系统无需严格配对的多模态数据也能显著提升性能。他们开发的UML框架通过参数共享让AI从图像、文本、音频等不同类型数据中学习,即使这些数据间没有直接对应关系。实验显示这种方法在图像分类、音频识别等任务上都超越了单模态系统,并能自发发展出跨模态理解能力,为未来AI应用开辟了新路径。