从新项目中的外部库进行子类化时的样式一致性?

时间:2012-07-05 01:50:15

标签: coding-style

添加到现有项目时,保持一致的样式非常重要。但是当项目和库的标准之间存在明显差异时,在新项目中从库中进行大量子类化时呢?

我正在开发一个具有特定编码风格的项目,特别是涉及这些类中的类和方法的命名方式。然而,项目的一个模块,UI,很大程度上依赖于外部库,并且此模块中的大多数类将重载此库。在这种情况下,它是Qt,但它可以是任何东西。

在这种情况下,最好是坚持API使用的样式还是将项目的样式用于新功能?例如,Qt使用camelCase作为其函数声明,而此项目使用UpperCase。考虑这样的事情:

class MyNewWidget : public QWidget {
    Q_OBJECT
public:
    void setVisible(bool visible); // QWidget override
    void SetNewFeature(std::string feature_key); // New function

    bool visibility() const; // I know you can't override that, but bear with me
    std::string GetNewFeature() const; // propertyName() vs GetPropertyName()
};

这与使用lower_case的STL的子类化一样。在这种情况下,有一些很好的理由在某些情况下至少遵循惯例,例如,当typedef'ing iterator类型或者您希望begin / end / swap函数可供<algorithm>等人使用时

但是我在这个问题上陷入困境。

1 个答案:

答案 0 :(得分:0)

我会尽可能地为每个类/文件/模块维护一个样式。当你试图想出一个方法的名称时,困难就来了,你越少能让别人停下来思考就越好。当然,一个好的IDE /编辑器应该纠正你的情况。

另一个选择是赞成合成而不是继承。这意味着您将使用在内部委托给Qt方法的项目样式编写新方法。如果这完全是一个问题,它将为您提供不依赖于Qt API的额外好处。