我目前正在更改一组用于大约 40 个不同文件的内核 API。我该如何重构它们?让旧的 API 调用新的 API 从而消除我遍历每个文件并进行更改是一种好习惯吗?通过这样做,我实质上是说所有使用此 API 的旧代码都可以,但新代码不应该(尽管无法通过代码强制执行此操作)。#糟糕的设计
问问题
72 次
1 回答
5
逐渐“淘汰”现有 API 以支持新 API 是一种很好的做法(正如您正确提到的);同时继续提供旧的 API 以实现向后兼容性。
目前,您需要将现有旧 API 的函数部分标记为deprecated。这可以通过在函数定义期间指定“ deprecated ”编译器函数属性来完成,如下所示。
int old_fn () __attribute__ ((deprecated (<optional-msg>)));
现在在编译期间,如果代码的任何部分尝试调用已弃用的函数,则会生成警告。警告包含调用已弃用函数的文件和行。此外,如果指定了可选的msg参数,它将与警告一起记录到屏幕上。
为了引导使用您的框架的开发人员使用新的 API,您可以向msg字符串添加其他信息。例如,今后推荐代替已弃用函数的新函数的名称。
于 2013-08-14T05:20:34.720 回答