Qt命名规范制-name() or getName()

Qt 采用 name() 而不是 getName() 这样的命名方式,主要是因为它遵循了 Qt 设计哲学C++ 标准惯例,具体原因如下:

1. Qt 遵循 C++ 的标准命名惯例

在 C++ 语言中,通常不使用 get 作为前缀。例如,标准库(STL)中常见的访问方法也没有 get,比如:

std::string s = "hello";
s.length();  // 而不是 s.getLength();

Qt 继承了这种习惯,因此 QObject::objectName() 而不是 getObjectName()

2. 提高可读性

Qt 认为直接使用 name()getName() 更简洁、更直观。例如:

QString deviceName = device.name();

这比 device.getName(); 更自然,符合 面向对象的表达方式

3. Qt 代码风格的一致性

Qt 的 API 设计遵循一种一致的命名模式。例如:

QWidget::size()   // 而不是 getSize()
QRect::width()    // 而不是 getWidth()
QFont::family()   // 而不是 getFamily()

Qt 仅在涉及 bool 返回值的函数上才会使用 is 前缀,比如:

QWidget::isVisible();
QWidget::isEnabled();

这样可以保持命名风格的一致性,提高可读性。

4. 避免 Java 风格

在 Java 语言中,getXXX() 是标准做法,因为 Java 的 Bean 规范要求 getset 作为访问器前缀:

public String getName() { return name; }
public void setName(String name) { this.name = name; }

但 C++ 并没有类似的强制性规范,Qt 选择了更符合 C++ 传统的风格。


总结

Qt 选择 name() 而不是 getName(),是因为:

  1. 遵循 C++ 语言习惯,避免不必要的 get 前缀。
  2. 提高代码可读性,代码更简洁。
  3. 维持 Qt API 设计的一致性。
  4. 避免 Java 风格,使代码更符合 C++ 习惯。

你在 Qt 代码中会看到大量类似的命名方式,比如:

QString text = label.text();    // 而不是 label.getText();
int width = window.width();     // 而不是 window.getWidth();
QSize size = widget.size();     // 而不是 widget.getSize();

这就是 Qt 命名风格的体现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值