第三次作业:结对编程
第三次作业:结对编程
GitHub地址 | https://github.com/Yanyixiao/PairProgramming.git |
---|---|
伙伴的作业地址 | 帝国の伙伴 |
一、结对的过程
在结对编码的日子里,我们在学校激情讨论,放假了也不忘激情讨论。我和严一笑各司其职,扬长避短,发挥出各自的优点完成了这次作业。(可是没看到博客要求要照片,然后我又回家了,所以只能大概描述一下)
放假后我们只好通过电话来完成剩下的作业,求求助教不要扣分,这对我和严一笑真的很重要
二、PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
· Planning | · 计划 | 10 | 10 |
· Estimate | · 估计这个任务需要多少时间 | 5 | 5 |
Development | 开发 | 60 | 55 |
· Analysis | · 需求分析 (包括学习新技术) | 10 | 15 |
· Design Spec | · 生成设计文档 | 5 | 10 |
· Design Review | · 设计复审 (和同事审核设计文档) | 10 | 10 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 20 | 15 |
· Design | · 具体设计 | 30 | 20 |
· Coding | · 具体编码 | 60 | 80 |
· Code Review | · 代码复审 | 10 | 10 |
· Test | · 测试(自我测试,修改代码,提交修改) | 10 | 10 |
Reporting | 报告 | 30 | 30 |
· Test Report | · 测试报告 | 20 | 20 |
· Size Measurement | · 计算工作量 | 10 | 10 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 10 | 10 |
合计 | 315 | 320 |
三、代码规范
1. 注释规范
1.1 类型注释
/// <summary>
/// 老师类
/// </summary>
public class Teacher {}
1.2方法和属性注释
/// <summary>
/// 根据id查找人的名字
/// </summary>
/// <param name="id">人的id</param>
/// <returns>人的名字</returns>
public string GetPersonName(int id)
{
return "";
}
1.3 单行注释
// 我是注释
1.4 多行注释
/*
多行注释
多行注释
*/
2. 命名规范
2.1 基本命名规范
- 在命名时需要使用有意义的名称
- 优先使用英文,如果英文没有合适的单词,- 可以使用拼音,如城市名称等
- 禁止使用中文命名
- 命名不能使用缩写,如必须写成 person,不能写成 per
2.2 使用Pascal风格(单词手写字母大写)命名
- 命名空间
namespace MyApp{}
- 类型
public class Person {}
- 枚举类型、枚举值
public enum Colors
{
Red = 1,
Green = 2,
Yellow = 3
}
- 事件
public event WorkEventHandler OnWork;
- 属性
public string Name { get; set; }
- 方法名
public void Method(){}
- 常量
const int Value = 10;
布局规范
3.1 使用 Tab 缩进,缩进大小为 4
Visual Studio 2017 中设置方法:菜单工具-选项-文本编辑器-C#-制表符,把制表符大小和缩进大小设置成4,选中“保留制表符”,点确定。
3.2 左右花括号必须独占一行,括号内容为空时可在一行
Visual Studio 2017 中设置方法:菜单工具-选项-文本编辑器-C#-代码样式-格式设置-新行
public void Method(int id)
{
int i = 1;
int j = 2;
}
public void Method(int id) {}
4.编码规范
4.1 不能出现公有字段
如果需要公有字段,使用属性包装。
4.2 类型名称和源文件名称必须一致
当类型名称是 Person 时,其源文件名称必须是 Person.cs。
4.3 类型成员的排列顺序
类型成员的排列顺序自上而下:
- 字段:private、protected
- 属性:private、protected、public
- 事件:private、protected、public
- 构造函数:参数越多,排的越靠前
- 方法:参数越多,排的越靠前
public class Person
{
private int _field1;
protected int _field2;
private int _property1 { set; get; }
protected int _property2 { set; get; }
public int Property3 { set; get; }
public Person(int param1, int param2) {}
public Person(int param1) {}
public Person() {}
public string GetPersonName(int param1, int param2) {}
public string GetPersonName(int param1) {}
public string GetPersonName() {}
}
四、代码设计
详情见严一笑的博客
严一笑负责学生姓名读取的部分,我负责随机点名的部分。
五、代码复审
代码复审基本没有什么异议,因为
- 老师给出了一些具有参考意义的代码,让我们思路清晰;
- 我们在同一个寝室,不懂就问;
- 写的代码少,就可以保证出错的几率小;
- VS2019会很明确的提出代码的错误之处,甚至还会帮你补正。
六、核心代码
-
我在fork下来的仓库里找到partner写好的.sln文件并编入我的代码
-
运行结果
七、代码合并
写好代码之后,用git bush上传到我的仓库里
然后请求把我的仓库合并到partner的仓库里。
八、总结
这次的结对编程让我感觉1+1>2了,真的。