项目 | 内容 |
---|---|
这个作业属于哪个课程 | 2021春季软件工程(罗杰 任健) |
这个作业的要求在哪里 | 结对编程第一次作业 |
这个作业的GitLab项目地址在哪里 | 项目地址 |
参与结对编程的是哪两位 | 3808 3050 |
一、结对编程初体验
1.From 3808
被别人看着写代码有点尬
每写完一个方法,可以讲给另一个人听,来确认基本逻辑,可以保证整体不会跑偏,虽然单元测试的时候仍然要de方法的bug,悲
可以一起开脑洞,一起写测试,过程很欢乐,结对编程× 培养感情√
PB YYDS!
2.From 3050
- 结对编程前需要进行详细的设计,应该时不时留出一些独立思考的时间,让自己的想法成熟再交流才高效(反例:第一次结对编程没想好构思我慌得一,最后收效甚微,甚至一度觉得结对编程只会降低效率)现在感觉最合适的是,首先保证两个人坐在一起不会紧张(x),然后先各自看任务,最好是两个人看一会后坐在一起拿纸笔写写画画定下架构,而不是开始编程之前对着电脑交流。
- 后面的结对编程大家熟悉起来之后就变得高效了许多,架构的熟悉占一定成分,但我感觉更多的是对队友的熟悉。熟悉之后就能发现,双方都能想到一个人想不到的一些情况,并在编码过程中及时进行反馈,代码质量就有不小的提高。
3.Code with me, YES!
采用Jetbrains的Code with me提升开发效率
Code with me支持同时协作开发,内置语音,快乐你我
当然,Code with me有的时候也会把IDEA的自动补全弄崩(悲,不过仍然不失为结对编程工具的首选√
4.快乐瞬间
某水课上的共同开发瞬间:
Code with me的快乐日常:
二、设计实现思路
1.思路
基础思路是设计节点,并将其连接形成树形结构
对整体功能实现三层抽象:
- 底层为存储信息的基本实现
- 中层实现了对文件系统内对象的基础操作,如新增、获取等
- 高层通过中层获取对象,并对其进行修改实现需求
同时抽象出三个对象Directory
,File
和Path
Path
对象实现对路径规范的检查,增加功能的内聚性,屏蔽路径的复杂性,为文件系统提供获取规范化路径的方法Directory
和File
都属于文件系统内可见的对象,继承Statable基类,每个目录内用一个Map容器来存储其内容,通过引用的层级来体现层级关系
2.脑洞
一些脑洞,当然了,昂神肯定会手下留情的(逃
- 权限
- 链接
- chroot
- grep
- find
- 通配符
三、PSP
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 5 | 10 |
· Estimate | · 估计这个任务需要多少时间 | 5 | 10 |
Development | 开发 | 490 | 525 |
· Analysis | · 需求分析 (包括学习新技术) | 30 | 20 |
· Design Spec | · 生成设计文档 | 30 | 20 |
· Design Review | · 设计复审 (和同事审核设计文档) | 30 | 20 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 10 | 5 |
· Design | · 具体设计 | 30 | 60 |
· Coding | · 具体编码 | 180 | 240 |
· Code Review | · 代码复审 | 60 | 60 |
· Test | · 测试(自我测试,修改代码,提交修改) | 120 | 100 |
Reporting | 报告 | 130 | 70 |
· Test Report | · 测试报告 | 60 | 30 |
· Size Measurement | · 计算工作量 | 10 | 10 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 60 | 30 |
合计 | 625 | 605 |