事情经过
在做一个远程控制项目,进行鼠标控制开发的时候,控制端的鼠标信息发送出现错误

调试发现受控端未收到包,经检查发现,原因在于控制端Socket未初始化。
这是我们的发包函数:

可以发现想要初始化socket需要用到ip地址(m_serv_address)和端口号(m_nPort),而这两个参数是主对话框类的成员变量。而在监视窗口上无法直接得到二者。
于是我们对鼠标控制的代码进行了如下修改:

我们通过给主对话框发送消息,进而调用发包函数:

通过主对话框来发送消息。至此问题解决。
但是事实真的如此吗?
设计问题
我们的代码到这个地方,虽然鼠标控制的功能实现了,但是其在设计上违反了MVC的架构。属于控制层的网络通信模块和属于界面层的对话框类产生了强耦合,在功能上产生的问题就如上文所展示的那样,如今我们给主对话框发送一个消息让其“一件代发”,问题解决,但是如果设计上的错误不解决的话,后面越来越多的功能问题会由此产生,进而导致代码逻辑越来越混乱。
总结反思
程序员在技术上,包括你使用的函数、接口、框架等有一定的积累之后,继续往上提升所需要的就不再是单纯的“知识”,更多的是需要你有一种统筹兼顾的大局观。正如今天遇到的这个问题,实现功能不是重点,窥一斑而知全豹,通过功能上的漏洞而知道设计上的缺陷,提早改正防止日后酿成大错,这才是程序员功力百尺竿头更进一步的必由之路。
1318



被折叠的 条评论
为什么被折叠?



