微软学术搜索小实践——导航功能的改善
结对编程项目总结
——宋哲
最近编程实践了一点小东西,为“微软学术搜索地图”增加功能。
作为是11个小组中的一个,我将和我的队友汤骏完成我们的任务。
一点说明:
微软学术搜索网址:http://academic.research.microsoft.com/academicmap
我们所增加的“小功能”只是内部实习学生所做的兼有教学和工程性的内部实践,还没有上线。现在所实现的各种idea应该还要经过产品部门的严格审核改善甚至按照产品级标准重新实现。
按照最初的任务分配,我们将要改善学术地图的导航功能。具体来说,
1、支持在多点触控设备上实现多点触控控制的放大缩小。非常有戏剧性的是在拿到惠普的TouchSmart TX2并且装上多点触控驱动后,我们发现已经可以实现多点触控控制的放大缩小。
2、实现“后退”功能,就是能够通过某个按键,退回到上一个访问过的学术机构。
3、由于1已经实现不需要我和队友的工作,我们又增加了一个“前进”按键。
4、同时增加了像浏览器一样增加了“历史”下拉列表,可以记载并且导向曾经访问过的所有机构。
按照我们的规划,我们把任务分成了如下的部分,具体实现的实践在括号里,格式是(估计时间/实际用时)。
• 1. Get and study multi-touch devices. (1days/2days)
由于权限问题,在拿到多点触控设备一天之后IT部门才配置好了登录权限问题。
• 2. Preparation
– C#, Silver Light, TFS(1days/1.5weeks)
本次工程使用C#,silverlight等技术,合作编程的平台是Microsoft Visual Studio 的VSTS工具
– Original code viewing. (3days/5days)
首先要读懂原本学术搜索地图的源代码,尤其是我们的工作涉及到的部分。
– Feature Design.(4hours/many hours including plan revising)
由于多点触控已经实现,必须由新的点子的实现来使我们的工作更丰满一些。
• 3. Coding Work
– First attempt to “Go Back”. Friday evening/ Saturday afternoon.
在做了充分的准备之后,就要着手开始编程实现的功能。我的队友汤骏同学一个人在一个下午的时间就实现了。这个是一个非常好的雏形,为我们之后的开发打下了非常好的基础。
– Rewrite relating code as a class. 2 hours/3hours
由于先前版本使用一些零散的代码实现的,并不美观,数据结构也比较混乱。所以将涉及到的部分重新封装到一个类里面,这样比较美观也易于维护。
– Add Forward button. 30min/20min
按照计划,我们还要增加一个前进的按钮。由于原理和后退按钮类似,所有很快就实现了。
– Studying dropping list which can hide. 1 hours/ 3 hours
展示历史记录需要一个能够展开和隐藏的列表,并且这个列表的内容还能够在运行时进行修改,点击列表中的机构后地图还要定位到那个机构。所以我们花了一段时间来研究这个下拉表单的控件如何使用,并额外写了些小的东西来进行验证。
– Add history button and list. 1 hours/1hours
增加历史按键,和展示列表。由于我和队友汤峻都以简洁为美,使用“+”标志历史按钮,展开之后变为“-”。同时前进后退用“—〉”“〈--”来表示,而没有另外绘制图形。
– Explore new methods to focus in and pin place.
之前的设计在使用我们的导航功能后,地图要定位到对应机构。这个定位的体验并不好,所有重写了这段代码,并且在定位之后在那个机构上增加了一个图钉。
– Bug, bug, bug.
除了我们自己发现的Bug,还要感谢其他小组的同学为我们提出的建议。
前后按键、历史按钮、下拉列表可见下图。
选择了新机构之后,地图会重定位在目的地,并且安上一个图钉来指示。
下图是我,宋哲(左)和队友汤骏(右)一起工作时的情景。
按照我的体会,结对编程有着很多优点,具体的说。
1、结对编程能够提供更好的设计质量和代码质量,两个人合作能够够有更强的解决问题能力。
2、结对编程给我们带来了更多的信心,你不是一个人在战斗。
3、结对编程能够更有效地交流,相互学习和传递经验。
相应的挑战和付出的代价,当然是随之而来的交流沟通成本,不过我认为还是非常值得的。
最后介绍一下我的队友汤骏同学,我们是大学的同班同学,在研究院的工位也是挨着的,所以我们是非常熟识的。汤骏同学的特长应该是做事认真,富有创造力,智商很高。在这次结对编程项目中贡献很大。同时汤骏同学的公共场合的表达能力还有进一步提升的空间。这次结对编程的Presentation&evaluation特意安排他代表我们小组进行全英文介绍,效果不错。
未来期待和他更愉快的合作。