取名的艺术:为什么说API命名约定很重要?

至顶网 2022-09-09

如今,能帮助开发人员设计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名称在不同场景下可能代表不同含义,最好能添加上下文以消除产生误解的可能性。

资讯网h5小游戏制作网站宁陵有什么特产石家庄营销网站建设汉堡包店起名字煜怎么起名子宝可梦口袋剑盾破解版周易公司名字免费姓每周宝宝起名古装电视剧最新周公解梦吃葡萄佛山品牌网站设计南阳手机网站制作八字起名网起名大全朗读者 电影天堂男孩起名的好字情感故事100字制作一个旅游网站女孩起名李什么恩书店起名有文化底蕴水果取品牌起名微信起名英文田华艺术签名形容月亮的词语算命怎么说陆凉微公司网站建设济南中华周易学会免费起名知名网站建设公司排名凤凰卫视资讯台直播白姓男人起名大全少年生前被连续抽血16次?多部门介入两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”淀粉肠小王子日销售额涨超10倍高中生被打伤下体休学 邯郸通报单亲妈妈陷入热恋 14岁儿子报警何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言张家界的山上“长”满了韩国人?男孩8年未见母亲被告知被遗忘中国拥有亿元资产的家庭达13.3万户19岁小伙救下5人后溺亡 多方发声315晚会后胖东来又人满为患了张立群任西安交通大学校长“重生之我在北大当嫡校长”男子被猫抓伤后确诊“猫抓病”测试车高速逃费 小米:已补缴周杰伦一审败诉网易网友洛杉矶偶遇贾玲今日春分倪萍分享减重40斤方法七年后宇文玥被薅头发捞上岸许家印被限制高消费萧美琴窜访捷克 外交部回应联合利华开始重组专访95后高颜值猪保姆胖东来员工每周单休无小长假男子被流浪猫绊倒 投喂者赔24万小米汽车超级工厂正式揭幕黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发当地回应沈阳致3死车祸车主疑毒驾恒大被罚41.75亿到底怎么缴妈妈回应孩子在校撞护栏坠楼外国人感慨凌晨的中国很安全杨倩无缘巴黎奥运校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变王树国卸任西安交大校长 师生送别手机成瘾是影响睡眠质量重要因素国产伟哥去年销售近13亿阿根廷将发行1万与2万面值的纸币兔狲“狲大娘”因病死亡遭遇山火的松茸之乡“开封王婆”爆火:促成四五十对奥巴马现身唐宁街 黑色着装引猜测考生莫言也上北大硕士复试名单了德国打算提及普京时仅用姓名天水麻辣烫把捣辣椒大爷累坏了

资讯网 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化