现代软件产业经过几十年的发展,一个软件有一个人完成的情况已经几乎不可见了,软件都是在相互合作中完成的。合作的最小单位是两人。两人一起看代码并发表意见。
代码风格规范:
简明,易读,无二义性(缩进,行宽,括号,断行与空白的{}行,分行,命名,下划线,大小写,注释)
代码设计规范:
函数,goto,错误处理,如何处理C++中的类(类,class vs.struct,公共/保护/私有成员,数据成员,虚函数,构造函数,析构函数,new和delete,运算符,异常,类型继承)
代码复审:
1.找出代码的错误(编码的错误、不符合团队代码规范的地方)
2.发现逻辑错误
3.发现算法错误
4.发现潜在的错误和回归性错误
5.发现需要改进的地方
结对编程:
1.在开发层次,结对编程能提供更好的设计质量和代码质量,两人合作解问题的能力更强
2.增强开发人员的信心
3.取得更高的投入产出比
两人合作的不同阶段和技巧:
1.萌芽阶段
2.磨合阶段
3.规范阶段
4.创造阶段
5.解体阶段
软件设计与实现
1.分析和设计方法
2.图形建模和分析方法
①表达实体和实体之间的关系(思维导图、实体关系图)
②表达数据的流动
③表达控制流
④统一的表达方式
3.其他设计方法
①形式化的方法
②文学化编程
4.从设计文档到实现
①将修改即集成到代码中
②开发人员的标准工作流程(如图片所示)
③代码完成
例子;
代码清单1
namespace DemoUser
{
public:ckass User
{
public User(string userEmail)
{
m_email=userEmail;
}
private string m_email;
}
}
///<summary>
///A test for User(string)
///</summary>
[TestMethod()]
public void ConstructorTest()
{
string userEmail=null;
User target=new User(userEmail);
Assert.Inconclusive("TODO:Implement code to verify target");
}
[TestMethod()]
public void ConstructorTest()
{
string userEmail="someone@somewhere.com";
User target=new User(userEmail);
Assert.IsTrue(target !=null);
}
从上面这个例子可以看出,创建单元测试函数的主要步骤是:
1.设置数据(一个假想的正确的E-mail地址)
2.使用被测试类型的数据(用E-mail地址来创建一个User类的实体)
3.比较实际结果和预期结果(Assert.IsTrue(target !=null))