当前位置:  开发笔记 > 编程语言 > 正文

C API的命名约定

如何解决《CAPI的命名约定》经验,为你挑选了1个好方法。

我们正在研究用C编写的游戏引擎,目前我们正在使用以下命名约定.

ABClass object;
ABClassMethod(object, args)

AB是我们的前缀.

我们的API,即使在对象上工作,也没有继承,多态或任何东西.我们所拥有的只是处理它们的数据类型和方法.

我们的常量命名相似:AB_ConstantName预处理器宏命名为AB_API_BEGIN.我们不使用像宏这样的函数.

我想知道这是如何适合作为C API.此外,您可能会注意到整个API都是包装器lua,您可以使用C或来自或lua.大多数时候发动机将从lua使用.



1> Remo.D..:

无论您使用哪种API,为了您的用户的心理健康(以及您的用户),请确保它在整个代码中保持一致.

对我而言,一致性包括三件事:

    命名.案件和下划线的使用应受到监管.例如:ABClass()是一个"公共"符号,而AB_Class()不是(在某种意义上它可能(无论出于何种原因)可见到其他模块,但它保留供内部使用.
    如果你有"ABClass()" ,你永远不应该有"abOtherClass()"或"AbYet_anotherClass()"

    名词和动词.如果某些东西被称为"点",它必须始终是"点"而不是"pnt"或"p"或类似物.
    例如,标准C库同时具有putc()和putchar()(是的,它们不同的,但名称不能告诉哪一个写在stdout上).动词也应该是一致的:避免同时使用"CreateNewPoint()","BuildCircle()"和"NewSquareMake()"!

    争论的立场.如果一组相关函数采用类似的参数(例如字符串或文件),则确保它们具有相同的位置.C标准库再次使用fwrite()和fprintf()做得很差:一个将文件作为最后一个参数,另一个作为第一个参数.

其余的很大程度上取决于您的品味以及您可能遇到的任何其他限制.

例如,您提到您正在使用Lua:遵循类似于Lua的约定,如果程序员必须同时向两个API公开,则可能是一个加号.

推荐阅读
jerry613
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有