1

添加到现有项目时,保持一致的风格很重要。但是,当项目的标准和库的标准之间存在明显差异时,如果在新项目中从库中大量继承,该怎么办?

我正在开发一个具有特定编码风格的项目,特别是在涉及如何命名这些类中的类和方法时。然而,该项目的一个模块 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. 在这种情况下,至少在某些情况下有一些很好的理由遵循约定,例如,当 typedef'ingiterator类型时,或者如果您希望您的begin/ end/swap函数可以被<algorithm>et al 使用。

但我在这个墙上。

4

1 回答 1

0

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

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

于 2012-07-09T01:31:01.957 回答