QT 中信号和槽的清晰命名

Mic*_*ail 3 c++ qt signals-slots

我很难在我的一堂课上为信号和槽给出清晰的名称

它是Controller控制Device的一个抽象级别:CommunicationAdapter

它确实:

  1. 从控制器发送参数到设备(例如用户在 UI 上输入值)
  2. 从设备请求参数(获取初始数据)
  3. 通知设备中参数的更改(设备上发生的事件)

现在我有这样的东西:

class CommunicationAdapter
{
    Q_OBJECT

public slots:
    //1: slot for Controller to set parameter
    void parameterReceived(Parameter parameter);

    //2: slot for Controller to request parameter
    void parameterRequested(Parameter parameter);
    //2: slot for Device to reply on parameter request
    void parameterReplied(Parameter parameter);

    //3: slot for Device to inform about change of parameter
    void parameterUpdated(Parameter parameter);

signals:
    //1: signal to Device
    void sendParameter(Parameter parameter);

    //2: signal to Device for sending parameter request
    void requestParameter(Parameter parameter);
    //2: signal to Controller for reply on parameter request
    void replyParameter(Parameter parameter);

    //3: signal to Controller for inform about change of parameter
    void updateParameter(Parameter parameter);
};
Run Code Online (Sandbox Code Playgroud)

我发现这个命名丑陋且不清楚

即使我也很难意识到周末后在做什么

你明白我需要在每一行前面添加注释来解释函数的含义吗?

这里还有什么更清晰的名字呢?

编辑

目前我是这样解决的:

class ICommunicationAdapter : public IThreadObject
{
    Q_OBJECT

public slots:
    void setParameter(Parameter parameter);

    void getParameter(Parameter parameter);

    void subscribeParameter(Parameter parameter);

signals:
    void forwardParameter(Parameter parameter);

    void requestParameter(Parameter parameter);
};
Run Code Online (Sandbox Code Playgroud)

欢迎任何反馈/意见

T3 *_*ica 5

我认为,插槽应该始终根据其功能来命名,而不是根据触发方式来命名。信号也是如此,它们应该以过去时命名,说明发生了什么。这是 Qt 在其所有类中使用的通用方案,因此为了保持一致性,这样做是有意义的。

对于适配器类,最好使用与适配器将调用的函数相同或相似的名称。但这是非常具体的并且需要听取意见。

从逻辑的角度来看,适配器不应该真正关心谁调用它的函数,因为这可能会改变。说明调用函数的效果对用户来说更有趣。

因此,就您而言,我几乎会翻转您的信号和插槽的名称。parameterReceived()应该(读:“可能”)是您的控制器发出的信号。因此,命令链示例如下所示:

Controller::parameterRecieved() -> Adapter::sendParameter() -emits-> Adapter::parameterReceived() -> Device::sendParameter()

这样您将保持事件 -> 操作的通常模式。