我很难在我的班上给出信号和插槽的清晰名字。
控制器控制设备的抽象级别:CommunicationAdapter
它确实:
现在我有了这样的东西:
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);
};
我觉得这个名字很难看,也不清楚
就连我都很难意识到周末后我在做什么
你知道我需要在每一行前面写些什么来解释函数的含义吗?
这里还有什么更清晰的名字?
编辑
现在我就这样解决了它:
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);
};
欢迎任何反馈/意见。
发布于 2020-07-06 11:26:05
我会说,一个插槽应该总是以它的功能命名,而不是你如何触发它。信号也是如此,它们应该用过去式命名,说明发生了什么。这是Qt在其所有类中使用的通用方案,因此,为了保持一致性,同样的做法也是有意义的。
对于适配器类,最好使用与适配器将调用的函数相同的名称或类似的名称。但这是相当具体的,并取决于意见。
从逻辑的角度来看,Adapter不应该真正关心调用其功能的人,因为这可能会改变。用户更感兴趣的是说明调用函数的效果。
所以在你的情况下,我会把你的信号和插槽的名字翻过来。parameterReceived()
应该是控制器发出的信号(读着:“可以”)。因此,一个示例命令链如下所示:
Controller::parameterRecieved() -> Adapter::sendParameter() -emits-> Adapter::parameterReceived() -> Device::sendParameter()
这样,您将保持事件->操作的通常模式。
发布于 2020-07-06 10:48:11
您可以定义您和您的同伴可以遵循的语法,以便更快、更一致地识别信号插槽。
像这样(jsut一个例子)
使用前缀"ON“”+ className +“动词在完美的插槽。
所以,如果你有一个点类,当它改变它的x,y值时,你想要一个插槽,那么这个插槽看起来就像
"On_Point_Changed"
如果单击按钮:
"On_MyButton_Clicked"
如果机器人被摧毁:
"On_Robot_Destroyed"
"On_CommunicationAdapter_Replied"
等
https://stackoverflow.com/questions/62753743
复制相似问题