本周结对编程追加作业:记录收获。坦白说,我的收获多而杂,一时不知从何说起,以下试图从各方面简要谈谈。

一、编程能力收获

  从编程能力方面,我收获的主要是类的设计思路和算法设计。在作业要求blog的指引下,我和同伴一同思考、选用类,最终决定采用我提议的方案,类中的变量名、变量数量都是由我提议和设计完成的,主要基于要求的功能的实现。变量以外,还需要设计类的函数,这就涉及到算法层面。一开始,我对于生成运算式方面非常生疏,翻了半天谭浩强红皮书,又在团队作业的小组中讨论了一阵,终于决定采用树的形式生成,辅以栈形式实现。相关函数及代码可以参考我的作业报告博客,都附有一定的注释。

  除了主干程序外,还有单元测试的设计。由于运用VS单元测试框架时还比较生疏,我和同伴一起找了一些文档查阅,实现了比较基础的单元测试,但覆盖率没达到百分百。这主要是因为一些涉及全局变量、类变量的函数的单元测试函数编写方法我们没能掌握,只能使用断点debug方式代替单元测试,某种意义上做到了全覆盖。只能说单元测试之路任重而道远,在将来的团队项目中一定要好好落实真正的单元测试。

  这次编程暴露出我数据结构方面的薄弱,选用完数据结构后,相关算法的编写也花了很多功夫,和同伴一起找了许多网站和资料作为参考,磕磕碰碰才最终完成,这使我对树结构、栈结构的操作和使用更加熟悉,也锻炼了我对于编程细节、逻辑严密性的把控,全方位提升了我的编程能力,但愿我能牢记这些相关知识,灵活运用在以后的学习工作中。

附图:类设计与类函数的部分截图

二、接口相关收获

  之前从未将一个程序发布成dll,因而这第一次宝贵的经历自然伴随着各种困难。其一,按照网上的教程,我只能从零编写出非常基础的dll,却无法将已经编写好的cpp文件转换成dll。最终,在团队组的同学们的建议下,我和同伴终于找到了方便可行的转化方法。其实说来也简单,只要在头文件顶部添加预编译,在需要输出的函数前加上编译头即可,完全没必要像网上教程一般新建一个dll工程、预编译头等等繁杂操作。

  以上就是关于接口的全部收获?当然不可能。这仅仅是开始。我们还没来得及沉浸于dll导出成功的喜悦,就被对接的UI组问翻了:为什么给的头文件里这么多内容?函数接口能不能多支持一些格式?

  我们下载了群里其他组的配套头文件,发现其中仅仅含有需要输出的函数,而我们的头文件可谓无所不包:类定义,类中函数的定义,五脏俱全。于是我们恍然大悟,又设计了一个func.h文件,将需要导出的函数封装在其中,其他的信息则无需提供给UI。同时,我们改善了接口种类,原先UI需要先生成一个questionCore 类的变量,再调用变量.setting函数进行设置,再调用变量.getfile函数获得结果,非常复杂,且每个参数都需要设置;改善后,我们只提供三类setting函数,分别支持string输入、bool输入、文件输入,且自带输出,UI组只需选用其中的一个setting函数,就能直接得到结果,且对于不想设置的选项,可以输入-1、“”来取用默认值,非常方便。

  这次接口的设计波折给了我很大启发:接口的设计要尽量简单化、多元化、智能化,编写的dll要力求实现“完美黑盒”,给用户提供最便捷、最舒适的体验。

附图:原先设计的接口,只提供一种类型的设置函数,且需要繁复的调用手续。

附图:改进后的设计接口,只提供三种setting方案,方便快捷,支持使用默认设置。

三、交流相关收获

  结对作业的一大命题便是交流。我和队友的交流还算融洽。虽然他没有上过数据结构课,对树、栈等数据结构不太理解,但经过简单讲解以后他能很快follow上,并且提出了许多好的意见,比如筛选不合法式子的判断准则、括号添加和删除的功能等。在与队友的交流合作中,我学到了如何将自己的设计思路传达给同伴,学到了通过画图方式展示函数的架构(在队友的强烈建议下),也学到了意见出现分歧时应该如何协商解决。

  除此之外,还有不同组间的交流。由于每组都要相互对接,我们与不同的UI组间基本都要打交道。第一次面对面对接时,由于我们没有说清楚功能,UI组调用方式出错导致迟迟不出结果,经过我们共同调试、发现问题,最终得以顺利对接。后来对接时,我们积极吸取了各UI组的建议,并结合群内做得比较好的UI组的接口设计作为参照,不断更新我们的对接功能,让我们的程序变得更易于使用。这些交流合作中,我学到了如何给自己的产品打广告,如何从他人的建议、示范中提升自我,如何给他人提建议,帮助他人完善功能。

  

附图:在与UI11组的对接中,我们发现界面的分辨率存在问题,导致显示不全,于是及时向他们反馈、建议,得到解决。

  总而言之,本次结对编程给了我诸多益处,接下来的团队项目中,我一定要好好总结、做得更好。

结对编程收获-Core10组-PB16110698的更多相关文章

  1. 结对编程收获——UI真的没有那么简单

    结对编程收获——UI真的没有那么简单                                                      詹元成 初看作业要求,心里还有一点欣喜,不就是做一个UI ...

  2. 现代软件工程HW2:结对编程-生成五则运算式-Core10组 [PB16110698+PB16120162]

    作业具体要求点 这里 Core组要求: 1.Calc() 这个Calc 函数接受字符串的输入(字符串里就是算术表达式,例如 “5*3.5”,“7/8 - 3/8 ”,“3 + 90 * 0.3”等等) ...

  3. 结对作业收获_core组

    收获:编码之前必须的思考是逃不掉的,而且这一步是磨刀不误砍柴工,而且会加速以后的步骤 分析: 首要重要的事情是:需要完成的功能,理清逻辑关系.我们要随机产生一定要求的算式,并且计算出算式的值. 其次的 ...

  4. 结对编程(Python实现)

    一.Github地址:https://github.com/nullcjm/mypage 项目搭档:3117004662梁子豪 3117004648陈俊铭 二.PSP表格: PSP2.1 Person ...

  5. UI-12组结对编程作业总结

    UI-12组结对编程作业总结 源码Github地址 https://github.com/tilmto/TILMTO/tree/master/Arithmetic 作业摘要 本次结对编程作业分为以下两 ...

  6. 结对编程的感想&收获

    关于结对编程的感想.感受,见我的另一篇随笔——<构建之法>结对编程   感想 下面我来谈谈本次结对编程的收获以及发现的问题 收获 ①这是我人生中第一次做UI界面设计,刚拿到这个题目还是比较 ...

  7. 结对编程——四则运算器(UI第十组)

    博客目录: 一.问题描述                   二.设计思路                   三.UI开发过程                       四.对接过程       ...

  8. 结对编程项目总结(core2组)

    结对编程项目总结(core2组) 作业---四则运算(Core 第二组)   ----by 吴雪晴 PB16061514 齐天杨 PB16060706 一.项目简介 项目的任务为制作一个给(貌似是?) ...

  9. 佛系结对编程---四则运算(Core 第四组)

    ----by core 第四组 ( 邹卫其 范力 ) 一. 项目介绍 1. 能自动生成小学四则运算题目并给出答案,生成题目时可以选择下列参数:   1)生成题目数量   2)每道题目中运算数数量   ...

随机推荐

  1. PAT_A1121#Damn Single

    Source: PAT A1121 Damn Single (25 分) Description: "Damn Single (单身狗)" is the Chinese nickn ...

  2. CTF杂项思路工具分享————2019/5/30

    分享碰到的一些奇奇怪怪的杂项解题方式: 键盘坐标密码: 题目给出一段字符串:11 21 31 18 27 33 34 对照上面的表格,就可以很清晰的看出来密文为:QAZIJCV 猪圈码: 题目为: 一 ...

  3. DevOps到底是什么鬼?DevOps介绍及工具推荐。

    什么是DevOps DevOps是Development和Operations的组合,是一组过程.方法与系统的统称,用于促进开发(应用程序/软件工程).技术运营和质量保障(QA)部门之间的沟通.协作与 ...

  4. 大道浮屠诀---NBU7.7.3_oracle11G单机-单机(异机恢复WINDOWS2008平台)

    现有环境说明: 一台WINDOWS2008R2:安装有NBU7.7.3,作为服务端 一台WINDOWS2008R2:安装有oracle11.2.0.3,作为数据库服务器 现假设数据库意外崩溃,需要进行 ...

  5. 天道神诀--IPSAN(iscsi配置)

    数据存储技术 DSA(Direct Attacted Storage 直接附加存储)本地硬盘 NAS(Network Attacted Storage 网络附加存储)网络服务共享:文件夹 SAN(St ...

  6. Kettle 中的循环

    说道循环,小伙伴们肯定不陌生,就是重复干一件事:而kettle中的循环一般是发生在job中,因为job是串行执行的: kettle的循环有两种,一种是通过js脚本,另外一种是通过遍历前面步骤返回的每一 ...

  7. @value传值到static字段

    解决办法: 1.将这两个私有属性的set方法从私有变成公开(private -->>> public); 2.生成这两个静态属性的set方法: 3.将原来在静态属性上的@Value( ...

  8. 从零开始搭搭建系统3.1——顶级pom制定

    从零开始搭搭建系统3.1——顶级pom制定

  9. python编程学习day04

    1.函数名是变量名 “=”是内存指向,等号赋值操作,内存指向操作 变量——可赋值,可作为列表元素 函数名可以作为返回值返回 函数名可作为参数传递 2.闭包 内层函数使用了外层函数的变量 作用:可以让一 ...

  10. CSS——外观样式及应用

    CSS注释  CSS规则是使用 /* 需要注释的内容 */ 进行注释的,即在需要注释的内容前使用 “/*” 标记开始注释,在内容的结尾使用 “*/”结束. 例如: p { font-size: 14p ...