2021秋软工实践第二次结对编程作业

CC_川行 CC_川行 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

软工第四次作业

这个作业属于哪个课程 https://bbs.csdn.net/forums/fzuSoftwareEngineering2021?category=0
这个作业的要求在哪里 https://bbs.csdn.net/topics/601189945
这个作业的目标进行需求分析,原型实现
个人学号031902141
结对成员学号031902124
结对小伙伴的博客 https://bbs.csdn.net/topics/601427142
Github仓库地址 https://github.com/Horizonxr/Zhongqiu-Dice
视频演示链接 https://www.bilibili.com/video/BV11b4y1a7UZ/

PSP

PSP2.1Personal software process stages预估耗时(分钟)实际耗时(分钟)
Planning计划
Estimate估计这个任务需要多少时间3030
Development开发
Analysis需求分析 (包括学习新技术)3601000
Design Spec生成设计文档120120
Design Review设计复审6060
Coding Standard代码规范 (为目前的开发制定合适的规范)3030
Design具体设计6060
Coding具体编码15002000
Code Review代码复审120120
Test测试(自我测试,修改代码,提交修改)300300
Reporting报告
Test Report测试报告6060
Size Measurement计算工作量2020
Postmortem & Process Improvement Plan事后总结, 并提出过程改进计划120120
合计27203920

重点/难点功能、编程思考

uni-app生命周期

在做uniapp的项目之前学过Vue的生命周期,由于用的就是Vue的框架所以觉得差不多,但是在实际开发中由于之前学艺不精(捂脸)经常搞错

相较于Vue的生命周期,uni-app将生命周期分为了应用生命周期,页面生命周期和组件生命周期,还是存在一些区别的,所以花了一些时间来翻阅官方的文档

uni-app页面间传递参数,需要调用相应的接口

以前写自己的小程序的时候大多数情况是单页面的,不存在页面间传递参数的问题,但是做一个多人对战的博饼小程序就需要创建房间的页面将玩家的参数传递给游戏界面。我们知道Vue兄弟组件间的传值有三种方式:子传父,父传子 (在uni-app中uni.$emit)、vuex 和eventBus,但我们这是第一次在uniapp中使用,感觉有点不一样。后来考虑到以后可能接入云数据库,并且有可能增加继续游戏的功能,还是将玩家信息本地化存储比较好,所以采用了uni.setStorage的方式来实现本地持久化存储,再在游戏界面OnShow的页面声明周期中读出。

methods相互嵌套调用时遇到this指向问题,用bind(this)解决

实现游戏组件的时候,有的时候会存在需要函数嵌套调用的情况,这时候我们可以调用Vue实例身上的$options,在里面访问methods中的方法,但这样访问的话会存在this的指向性问题,这时候我们可以通过bind(this)来解决,代码示例如下

this.$options.methods.showResultAni.bind(this)()

js执行异步任务

为了让画面更加流程,所以加入了不少动画,这势必会用到定时器,例如

setTimeout(()=>{
    this.stopClickStar = false
},2000)

但是一开始的时候没有理解异步任务的性质,经常导致重复创建动画实例导致动画失效的问题。后来发现其实为了保障数据的有序性,要使用async/await的方式,通过await接收promise对象解决问题。

CSS布局的时候经常遇到奇怪的问题

​ CSS真的是前端编程的重中之重,为了方便书写,项目使用了scss进行预处理,这样就可以很方便的进行css的嵌套和变量定义,减少代码的复杂度使得css的结构更加清晰。

​ 元素设置了点击事件,但是却无法触发,这个有时候是因为元素堆叠导致的,我们可以设置z-index来自定义堆叠顺序。这个方法有一些神奇的作用。例如微信小程序不支持background设置image,这时候我们可以将背景图片的z-index设置为-999,也可以达到一样的效果。

​ 在游戏制作过程中,还遇到很多元素需要居中定位的方法,这边我们一般使用以下两种方法:

​ 第一种是flex布局,通过将父盒子设置justify-content: center来实现主轴上的居中,具体怎么使用flex布局可以参考下面这篇博文:

flex布局教程 http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html

​ 第二种就比较取巧了,示例代码如下

left:50%;
transform: translateX(-50%);

高度同理

引入icon

一开始为了找小图标真是焦头烂额,后来发现居然有iconfont这个阿里家的东西,但是在uniapp项目中引入iconfont需要一点小技巧,第一种方法是转化成base64来引入,这边我们使用第二种方法,就是将iconfont项目中的css文件拷贝下来放入项目,在所有的链接前面加上https:,然后在APP.vue中全局引入就可以了,当然也可以选择在具体页面中引入。

实例如下

在iconfont.css文件中:

@font-face {
  font-family: 'iconfont';  /* Project id 2851481 */
  src: url('https://at.alicdn.com/t/font_2851481_zuqyube1h5j.woff2?t=1633769910375') format('woff2'),
       url('https://at.alicdn.com/t/font_2851481_zuqyube1h5j.woff?t=1633769910375') format('woff'),
       url('https://at.alicdn.com/t/font_2851481_zuqyube1h5j.ttf?t=1633769910375') format('truetype');
}

在链接前面全部加上https:

然后引入:

@import "./common/iconfont.css"

结对编程体验

既然是结对编程,那么这个体验也是两个人一起写的hhh

  • 深刻地体验到了原型和实现的巨大差距

    • 在实现原型的时候,我们的工作主要是在满足需求的基础上,尝试提升手感,进一步优化用户体验等
    • 开始编码时就开始感受到理想功能和具体实现的巨大差距
  • 成就感

    • 有很多东西都是从0开始学起,这几天一直都在学新的东西,已经数不清打开了多少个网页hhh
    • 也体验到了专心投入于一件事的快乐,看到做出来的成品很有成就感!
  • 关于结对编程本身

    • 首先,结对编程可以提高工作效率,连续开发(“极限编程”)很上头
    • 一个人写作业、打代码容易越写越郁闷,结对打代码比较不容易郁闷
  • something else

    • 开发过程中感觉时间过得很快,第一次见到晚上已经关门的三区超市(之前还真没见过)

Special events

选择技术路线

当时做完原型的之后我们就开始想选择什么技术路线比较好。讨论了一下还是做成微信小程序吧,从前都是用别人的小程序,都没有自己亲手做过。但是做微信小程序对于我们来说真的是一个全新的东西,虽然两人之前都有一点前端的基础,但是基本写的都是网页版,没有写过小程序。微信小程序开发目前有两个主流的方式,一个是原生微信小程序开发,另外一个是跨平台开发。原生微信小程序的开发可能相对来说门槛低一点。关于这一点我们争论了挺久,是选择一条看起来更加容易的道路,还是多学一点、更进一步做全平台的开发?后来我们还是选择了Hbuilder X做uni-app项目,原因无他,万一有一天我们想做个别的平台的小程序呢(笑)?于是我们就开始了Vue框架的漫漫学习之路。

学,给我狠狠地学

在这次软工实践之前,还真的没有熬夜狂写代码,一边开着几十个网页查的经历。有的时候数据绑定一个值就是访问不到真的会让人非常崩溃,浏览器挤满了密密麻麻的标签页,就是找不到问题的答案。在我们熬到凌晨两点筋疲力尽的时候(写了一整天),突然想起了某位大牛曾经说过这样一句话:“写程序要有写诗的感觉”。写诗?那我们现在写的肯定也是首苦情诗吧哈哈哈哈。但是这句话多少为劳累的我们带来了一丝宽慰。学,给我狠狠地学!学就完了!你说,拜一下尤雨溪会不会学的快一点?

关于git协作

在结对进行git协作之前,一直以为git不算太难搞(虽然之前也搞了挺久的)没想到在漫长的coding过程中,还发现它并没有我们想象的那么简单(而且git bash下的命令学了之后就忘,属实有点坑)花了一段时间来学怎么在github上协作

学习进度条

第N天新增代码(行)累计代码(行)今日学习耗时(小时)重要成长
11601608了解了SCSS语法、了解了Vue的生命周期以及ES6-ES11的新增特性
21803406了解了Vue组件间通信,Vue路由技术
32005408更加熟练的掌握flex布局与z-index的使用,了解了easycom基本规则,及uni-app组件引入和使用方式,通过scope插槽修改其中内容等
41607007深入理解Vue的数据绑定实现,以及Vue原型上的方法与定时器的基本用法;了解了图片文件上云方法与云服务空间的绑定
52109109了解了animation的使用方法和uni-popup弹出层组件的用法,深入理解JS数组深浅拷贝问题和promise请求的使用方式
612010305了解了通过页面视口实现响应式布局
717012007了解了JS中this指向性问题以及解决方式,以及uni-app页面数据持久化存储的方法
820014009了解了iconfont的引用方式

视频演示

这里是我们此次作业成果的视频演示!已上传B站(想要一键三连,不是下次一定)

演示链接 https://www.bilibili.com/video/BV11b4y1a7UZ/

作业过程

(大显示屏的极致享受)

img

(网络略卡的腾讯会议)

img

img

...全文

相关推荐

安卓毕业设计app项目源码6-CalculateExercise:软工结对编程项目-小学生四则计算练习工具项目配套安卓APP

安卓毕业设计app项目源码6 CalculateExercise 软工结对编程项目-小学生四则计算练习工具项目配套安卓APP 软件工程 作业要求 作业目标 熟悉在未结对情况下如何结对开发项目 Github与合作者 合作者(学号): 区德明:318005422 虚左以待 Github链接: 由于本来的合作者临时有事不能和我一起结对编程,所以我也只好咬咬牙单刀赴会了。 因为本次的题目要求有图形化界面,而我也学过移动开发的,所以一不做二不休,直接提刀杀进AndroidStudio,开始秃头设计一款小学生也能用的四则计算题练习工具App,一来可以简化方便操作和展示,二来也算是在众多.exe中里面可以独树一帜。 一、PSP PSP2.1 Personal Software Process Stages 预估耗时 (分钟) 实际耗时 (分钟) Planning 计划 25 38 · Estimate · 估计这个任务需要多少时间 25 38 Development 开发 945 830 · Analysis · 需求分析 (包括学习新技术) 75 130 · Design Spec · 生成设计文

weixin_38631454

PairProject:W班软件工程实践结对第二次作业仓库

结对第二次作业-顶会热词统计的实现 为了不遗漏作业内容,这里有一个清单检查表方便同学们快速检阅。 fork仓库,和伙伴商讨如何通过github协作/代码规范等 编程实现 功能一,操作爬取的论文列表 功能二,爬取结果分析展示 功能三,爬取论文信息(附加功能,实现有附加分) 其他附加功能 部署 发布发布版本,发起拉取请求 撰写博客,在预先之前提交一份博客 包含作业描述和目录 核对评分标准 上一次结对作业中,大家都和小伙伴完成了原型的设计,那么现在再联合小伙伴动手实现原型中的部分功能吧。采用网络技术来实现原型中的功能。 一,作业内容 1.基础功能 功能1:对已爬取的论文列表进行操作 可对论文列表进行删除; 可对论文列表进行查询详细信息(支持模糊查询,查询结果的展示,排序等功能可自行设计); 功能2:分析已爬取到的论文信息,提取top10个热门领域或热门研究方向 形成如关键字图谱之类直观的查看方式

ywnwx

软工概论大作业校园帮帮

软工概论大作业校园帮帮原型文档

FGGIT

软件工程实践结对作业二.md

软件工程实践结对作业二.md

Joey0610

android课程设计11年秋软工

android 课程设计 2011年秋软工

战争迷雾
评论
收藏 已收藏
分享
返回顶部