我们公司一个程序员小伙伴写程序不会实现,于是就“掩耳盗铃”,还好我看了他的代码,不然以后程序员出问题了找问题都得找半天!

打开网易新闻 查看更多图片

事情经过

公司有个需求,大致逻辑是有一个界面,需要先根据传入坐标矩阵绘制一些不规则图形,要求就是鼠标悬浮在这些不规则图形上的时候,跟随鼠标弹出一个小窗口,显示这个不规则图形的具体参数。

因为没有用第三方库,所以是自己实现的。我的要求是他在绘制这些不规则图形的时候,将这些不规则图形的环形坐标矩阵保存下来,然后当鼠标悬浮在界面上的时候,根据鼠标悬浮的坐标去获取对应图形的参数。

因为图形是不规则的,因此我的要求是当鼠标悬浮在不规则图形的坐标矩阵内部时再弹出显示参数的小窗口。

其实,这个功能不复杂,难点在于如何判定鼠标指针是否位于不规则图形矩阵内部。

如果图形是方形,那么只需要判定鼠标悬浮区域,即X+图形宽度、Y+图形高度,获取鼠标悬浮时的X、Y,即可计算出鼠标指针是否悬浮在图形里面。

但是,现在是个不规则图形,对于他来说就有点难办了!因为看起来,好像现有编程语言的库并不支持判断不规则图形是否包含坐标的方法,只有判断方形矩形是否包含某一坐标的方法,于是,他在保存图形的坐标矩阵的时候使用的就是方形坐标矩阵。

当我看到他这么写的时候问他,图片是不规则的图形,他这么干,不就会出现一种情况,那就是明明鼠标不在图形之内,也有可能显示图形参数吗?

他点点头,说他知道,但是他不知道如何判定鼠标悬浮坐标是否在不规则图形内部,因此就改为方形坐标矩阵了!

我跟他说,他这种做法,如果是一些小的不规则图形上,基本上看不出来,但是如果这个不规则图形足够大,就可能会出现用户明明鼠标放在不规则矩形旁边的空白界面上,他的程序依然弹出了显示参数的窗口!

他承认他做得不对,但是据他所说,他查了相关资料也没有查出如何判定坐标是否在不规则矩形之内。

这个东西我以前做过,但是忘了当时的代码具体是怎么写的了,好像是以前绘制地图的时候做过,就是点击地图,直接用高亮颜色显示点击地图区域的所属行政区,其实就是使用“射线法”来判断坐标是否包含在多边形之内。

当然,其实即使不会,去网上查查资料,也应该能够得到答案的。

很显然,他告诉我他查了资料没查到,这是一个问题。

在查不到资料的时候,明知道自己现有的实现方案有问题,依然采取了现有的方案,这又是一个问题,显然有些掩耳盗铃的意思!

我们作为程序员,在写代码遇到问题的时候,尤其是一个代码的实现思路我们不会的时候,千万不要藏着掖着,因为这对公司的项目没有好处,对于自己的能力提升也没有好处。

总结

这个小伙子在遇到问题的时候既没有找对方法,也没有选择向有经验的程序员去请教,而是选择了“掩耳盗铃”的方式企图就这样蒙混过关,这种想法是不对的。并且,如果下次又遇到了相同的问题,他可能还会以相同的方式去处理相关问题,无形之中给代码埋了很多的雷。

我觉得,作为程序员,尤其是新手时期的程序员,需要勇敢得面对自己的不足,虚心向人讨教,这对于我们的成长是有非常大的帮助的。即使可能在请教别人的时候碰了一鼻子灰,但是起码我们学到了知识,不是吗?