添加到现有项目时,保持一致的样式非常重要。但是当项目和库的标准之间存在明显差异时,在新项目中从库中进行大量子类化时呢?
我正在开发一个具有特定编码风格的项目,特别是涉及这些类中的类和方法的命名方式。然而,项目的一个模块,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>
等人使用时
但是我在这个问题上陷入困境。
答案 0 :(得分:0)
我会尽可能地为每个类/文件/模块维护一个样式。当你试图想出一个方法的名称时,困难就来了,你越少能让别人停下来思考就越好。当然,一个好的IDE /编辑器应该纠正你的情况。
另一个选择是赞成合成而不是继承。这意味着您将使用在内部委托给Qt方法的项目样式编写新方法。如果这完全是一个问题,它将为您提供不依赖于Qt API的额外好处。