续上一篇中小学数学卷子自动生成程序——对李同学的代码分析博文,本文为对数小时前完成的带UI的小初高数学学习软件——结对编程项目的寥寥随笔,主要内容是对如何复用个人项目实现结对编程项目的小总结,以及分享结对编程的经验和教训。
本次结对编程的经验告诉我,个人项目的复用性是如此的举足轻重、重如泰山,如果个人项目没有封装好,没有很强的复用性,在本次结对编程中十分可能会触目惊心、欲哭无泪、老泪纵横。
十分羞愧的是,笔者在个人项目中没有理解清楚需求细节,将需求过分简单化,导致部分功能未能圆满实现;但荣幸之至,笔者有机会观摩李同学的代码,如获至珍,仔细斟酌推敲之后,不禁感叹李同学代码的精雕细刻之处,鬼斧神工之地。同时也哀叹敝人学疏才浅、见识浅薄、愚昧无知,未能完全将李同学的代码融会贯通、举一反三、触类旁通,故只能凭借自己的对大神代码的一知半解、一孔之见来对自己的个人项目进行再加工。
言归正传,这次结对编程项目主要复用了个人项目中的出题目部分的代码(TestQuestion)。根据项目需求,将“+”、“-”、“?”、“?”、平方、根号以及三角函数与一到五个操作数随机结合,便是出题目的主要思路。我的个人项目中除了小学难度的题目外,不再有括号的出现,导致题目随机性大大减小,经过这次结对编程的加工,在各个难度的题目中都增添了括号,以及在括号前后都随机加入平方、根号、三角函数。
解题的主要思路为将每个操作数及其周边的符号(平方、根号、三角函数)看作一个操作数,如不考虑有括号的情况,利用数组记录操作数开始结束下标与操作数的值,先算平方、根号、三角函数,再算乘除、加减得到结果,那么有括号则是利用递归思想,把括号内的表达式看作一整道题目,递归计算即可。听起来很简单,反正我实现的时候是各种bug此起披伏,报错与bug齐飞,熬夜和掉发同行!万幸,经过数日debug努力后,出题解题这方面的功能还算比较完善。
这是我第一个结对编程项目,这次结对编程告诉了我很多道理。很多时候两个人的项目要多为双方的共同利益着想。我一开始因为对eclipse的厌恶以及对IDEA的依赖,导致出现我写的是IDEA项目,而队友写的是eclipse项目,在整合初期十分难以对接的令人崩溃的现象,浪费了双方许多不必要的时间。同时我也深知自己IDEA使用还是不够熟悉,不够明了,路漫漫其修远兮,吾将多用IDEA。还有一些小的点,正所谓千里之堤溃于蚁穴,比如编码格式的统一、功能函数借口的充分讨论和交流等等也是一个结对编程项目成功完成的重要因素。
这次的随笔就到这里了,感谢您的收看,再会。
原文:https://www.cnblogs.com/O-plus-one/p/11604966.html