当我用“丑陋”来形容一个 API 时,我心里想的不是它的外观,毕竟 API 没有眼睛可见的界面。我指的是一种深刻的、令人沮丧的、与开发者的直觉相悖的“不好用”。它是一种感觉,一种当我尝试与之交互时,我脑子里会冒出“这太别扭了”或者“这根本说不通”的感觉。
首先,它的命名常常是混乱的。你可能会发现,一些功能相似的操作,命名却风马牛不相及。比如,获取用户信息的 API 可能叫做 `getUser`,而更新用户信息却可能是 `updateProfile`,有时甚至会用一些含糊不清的词汇,像是 `processData`,你得猜半天它到底在处理什么样的数据,是创建、修改还是查询?参数的命名也是如此,可能一个参数是 `userId`,另一个就变成了 `user_id`,再下一个可能是 `uid`。这种不一致就像是在同一条街道上,每家店铺的招牌字体、大小、颜色都不一样,让人眼花缭乱,难以辨认。
其次,它的结构往往让人摸不着头脑。理想中的 API 就像一个清晰的菜单,你可以一眼看出哪道菜是什么,怎么点。但一个丑陋的 API 就像一个藏在角落里的、字体模糊的菜单,你得费九牛二虎之力才能看懂。你可能会发现,本该放在一个地方的功能,却被分散到了完全不相关的路径下。例如,管理图片的 API,你可能要通过一个处理用户订单的接口去调用。更糟糕的是,一些非常核心的功能,可能隐藏在一些非常隐晦的、不容易被发现的配置项里,让你感觉像是在玩一场寻宝游戏,而且宝藏的线索非常稀少。
数据的返回格式也是一个重灾区。有时候,你会发现 API 返回的数据结构一点逻辑都没有,就像是把一块块零散的积木胡乱堆在一起。你可能需要写一堆代码来解析这些数据,从中提取出你需要的信息。更可气的是,同一个 API,在不同的请求参数下,返回的数据结构可能完全不一样,让你疲于应付。有时候,它会返回很多你根本用不到的信息,让你在海量的数据中大海捞针;有时候,它又会遗漏掉关键的信息,让你不得不进行多次额外的请求。
错误处理也常常是丑陋 API 的标志。一个好的 API 会告诉你它为什么失败,而且提供清晰的错误信息。但丑陋的 API 往往只返回一个通用的错误代码,或者干脆就是沉默。你可能花了很长时间去调试,却找不到问题的根源,只能猜测是不是哪里出了问题,然后一遍遍地尝试。这种体验就像是你在和一个不肯说话的人交流,你永远不知道它在想什么,它为什么拒绝你。
总而言之,当我们说一个 API 丑陋时,我们是在说它违背了设计的直觉和原则,让开发者在与其交互时感到困惑、沮丧和低效。它不是视觉上的难看,而是一种体验上的痛苦,是一种对开发者时间、精力和耐心的无谓消耗。它让你在完成一项任务时,不得不花费大量精力去应对这些“设计缺陷”,而不是专注于你真正想要实现的功能本身。
当我用“丑陋”来形容一个 API 时,我心里想的不是它的外观,毕竟 API 没有眼睛可见的界面。我指的是一种深刻的、令人沮丧的、与开发者的直觉相悖的“不好用”。它是一种感觉,一种当我尝试与之交互时,我脑子里会冒出“这太别扭了”或者“这根本说不通”的感觉。首先,它的命名常常是混乱的。你可能会发现,一些.............