结对编程收获-Core10组-PB16110698
本周结对编程追加作业:记录收获。坦白说,我的收获多而杂,一时不知从何说起,以下试图从各方面简要谈谈。
一、编程能力收获
从编程能力方面,我收获的主要是类的设计思路和算法设计。在作业要求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的更多相关文章
- 结对编程收获——UI真的没有那么简单
结对编程收获——UI真的没有那么简单 詹元成 初看作业要求,心里还有一点欣喜,不就是做一个UI ...
- 现代软件工程HW2:结对编程-生成五则运算式-Core10组 [PB16110698+PB16120162]
作业具体要求点 这里 Core组要求: 1.Calc() 这个Calc 函数接受字符串的输入(字符串里就是算术表达式,例如 “5*3.5”,“7/8 - 3/8 ”,“3 + 90 * 0.3”等等) ...
- 结对作业收获_core组
收获:编码之前必须的思考是逃不掉的,而且这一步是磨刀不误砍柴工,而且会加速以后的步骤 分析: 首要重要的事情是:需要完成的功能,理清逻辑关系.我们要随机产生一定要求的算式,并且计算出算式的值. 其次的 ...
- 结对编程(Python实现)
一.Github地址:https://github.com/nullcjm/mypage 项目搭档:3117004662梁子豪 3117004648陈俊铭 二.PSP表格: PSP2.1 Person ...
- UI-12组结对编程作业总结
UI-12组结对编程作业总结 源码Github地址 https://github.com/tilmto/TILMTO/tree/master/Arithmetic 作业摘要 本次结对编程作业分为以下两 ...
- 结对编程的感想&收获
关于结对编程的感想.感受,见我的另一篇随笔——<构建之法>结对编程 感想 下面我来谈谈本次结对编程的收获以及发现的问题 收获 ①这是我人生中第一次做UI界面设计,刚拿到这个题目还是比较 ...
- 结对编程——四则运算器(UI第十组)
博客目录: 一.问题描述 二.设计思路 三.UI开发过程 四.对接过程 ...
- 结对编程项目总结(core2组)
结对编程项目总结(core2组) 作业---四则运算(Core 第二组) ----by 吴雪晴 PB16061514 齐天杨 PB16060706 一.项目简介 项目的任务为制作一个给(貌似是?) ...
- 佛系结对编程---四则运算(Core 第四组)
----by core 第四组 ( 邹卫其 范力 ) 一. 项目介绍 1. 能自动生成小学四则运算题目并给出答案,生成题目时可以选择下列参数: 1)生成题目数量 2)每道题目中运算数数量 ...
随机推荐
- Cuckoo架构
cuckoo在部署阶段,只在Guest系统里塞了一个agent,这个agent在运行阶段负责与Host端程序进行通信,从Host端接收sample, 整个客户端程序,以及配置文件. 在Host端主要的 ...
- OMG that's another blog!
目录 1.Beginning 2.then 1.Beginning we'v learnt how to ask file from our own computer and tried to bui ...
- 如何用json 与jsonp 的区别去回答你的面试官?
常常 有面试官这样问我们,虽然用过无数次,但是回答不上岂不是尴尬,那我们浅析一下它们的区别? 1. json JSON是一种基于文本的数据交换格式,用于描述复杂的数据,举个例子: var nax=[ ...
- python生成阿里云云直播推流播流地址
申请一个阿里云账号,进入控制台,添加云直播工能,就可以获得相关数据, 直接上代码,阿里云接口文档https://cloud.tencent.com/document/product/267/7977 ...
- JavaScript中的面向对象编程,详解原型对象及prototype,constructor,proto,内含面向对象编程详细案例(烟花案例)
面向对象编程: 面向:以什么为主,基于什么模式 对象:由键值对组成,可以用来描述事物,存储数据的一种数据格式 编程:使用代码解决需求 面向过程编程: 按照我们分析好的步骤,按步 ...
- Java泛型中extends和super的区别?
<? extends T>和<? super T>是Java泛型中的"通配符(Wildcards)"和"边界(Bounds)"的概念. ...
- MYSql 存储过程自定义跳出
MYSql存储过程自定义跳出 我们有时会在存储过程中进行一些判断,当判断条件达成时候我们有时会直接跳出存储过程. 但是存储过程不支持return直接返回的操作, 所以我们只能采用另一种方法,'leav ...
- Cacti 添加 CPU 监听
Cacti版本: 0.8.8a 將 http://forums.cacti.net/about29832-0-asc-135.html 网址的template下载,有1,2,4,8,12,16核心的t ...
- vue 学习四 了解组件
1组件的注册 全局注册 import Vue from 'vue'; import com from './component1'; Vue.component("com_name" ...
- 过滤掉map集合中key或value为空的值
package cn.com.utils; import org.apache.commons.lang3.StringUtils; import java.util.Collection; impo ...