功能错误 or 设计错误?远控项目里我这样看

在进行远程控制项目的鼠标控制开发时,遇到控制端Socket未初始化导致数据包发送失败的问题。通过主对话框发送消息以间接初始化Socket解决了眼前问题,但这种做法违反了MVC架构,造成控制层与界面层的强耦合。文章强调程序员应具备大局观,及时发现并修正设计缺陷,以避免后续的代码混乱。
事情经过

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

调试发现受控端未收到包,经检查发现,原因在于控制端Socket未初始化。

这是我们的发包函数:

可以发现想要初始化socket需要用到ip地址(m_serv_address)和端口号(m_nPort),而这两个参数是主对话框类的成员变量。而在监视窗口上无法直接得到二者。

于是我们对鼠标控制的代码进行了如下修改:

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

通过主对话框来发送消息。至此问题解决。

但是事实真的如此吗?

设计问题

我们的代码到这个地方,虽然鼠标控制的功能实现了,但是其在设计上违反了MVC的架构。属于控制层的网络通信模块和属于界面层的对话框类产生了强耦合,在功能上产生的问题就如上文所展示的那样,如今我们给主对话框发送一个消息让其“一件代发”,问题解决,但是如果设计上的错误不解决的话,后面越来越多的功能问题会由此产生,进而导致代码逻辑越来越混乱。

总结反思

程序员在技术上,包括你使用的函数、接口、框架等有一定的积累之后,继续往上提升所需要的就不再是单纯的“知识”,更多的是需要你有一种统筹兼顾的大局观。正如今天遇到的这个问题,实现功能不是重点,窥一斑而知全豹,通过功能上的漏洞而知道设计上的缺陷,提早改正防止日后酿成大错,这才是程序员功力百尺竿头更进一步的必由之路。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值