【问题标题】:How to keep naming convention of a project while using third party libraries in C++?在 C++ 中使用第三方库时如何保持项目的命名约定?
【发布时间】:2012-05-28 09:41:15
【问题描述】:

我在想这个: 例如,编写宏来为函数、变量或来自不使用您的命名约定的第三方库的任何其他元素创建别名是否很常见? 如果是,最好的方法是什么,只写宏?

【问题讨论】:

    标签: c++ naming-conventions


    【解决方案1】:

    “愚蠢的一致性是小人的妖精”。不要再担心命名约定 - 在项目中强制执行它,当然,但不要让第三方库符合它。

    事实上,这些细微的差别可能有助于帮助读者一目了然地了解他们正在处理的代码类型。

    【讨论】:

    • 我认为您对细微差别的看法是正确的。我并不太担心命名约定(事实上,一年前我的代码非常糟糕:D),但我只是想着如何提高代码的可读性。这是其中之一,但可能是工作量太大而收效甚微。
    • @AdriánPérez:问题甚至不在于额外的工作,而是这样做实际上可能会使事情变得更糟。该库不会更改命名约定,并且您会留下大量无用的宏,这些宏会导致比价值更多的问题。此外,一致性可能会使其更难阅读。您的命名约定如何与标准库一起使用?如果不匹配,您更愿意阅读v.push_back(x) 还是`v.pushBack(x)'?如果您更改名称,任何人将如何帮助 mangled 名称的文档?你怎么会在这里问?
    【解决方案2】:

    宏很难编写和阅读。 所以最简单的方法是雇人来帮助你转换命名约定

    【讨论】:

    • 写这样的宏容易,#define FOO BAR有什么难的?
    • @Arafangion 这是资本,很难写。而且调试器无法识别宏,因此很难阅读。
    • 与大局相比,这些都是非常非常微不足道的问题 - 根本需要编写宏!另外,考虑一个更好的调试器和一个更好的编辑器。
    • @Arafangion 我对宏说不,只是对他使用宏作为通用变量名的情况。并且调试器是基于符号信息的,宏是在预处理器中处理的,编译器永远不知道宏,也不能将这些信息写入符号文件中。所以,没有“好的调试器”可以帮助解决这个问题。对我来说,任何时候我都可以使用 const 或枚举,我从不使用宏。
    • 我很确定 CLang 不同意你的观点,尽管我可能是错的。也就是说,在 C++ 中,使用宏的理由很少。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多