特别是我担心这种情况:
class MyClass { private: int grade; public: void setGrade(int x) { grade = x; } int getGrade() { return grade; } void copyFrom(const MyClass* src) { grade = src->grade; } }
2)沿着这些线写一个单元测试
void testcopyFrom() { MyClass mc1; MyClass mc2; mc1.setGrade(-347); mc2.setGrade(10); mc2.copyFrom(&mc1); TS_ASSERT_EQUALS(mc2.getGrade(),-347); }
3)几个月后,我添加了第二个成员变量
private: int grade,extra;
解决方法
TDD意味着首先测试:在更改代码之前,您应该更新代码.在这种情况下,如果你决定添加额外的,你应该在额外添加API的测试(到目前为止你没有,但也许你会想要getExtra()等),然后,当你添加和修改测试时,您会注意到需要将setExtra()和getExtra()调用添加到testcopyFrom().
在这个阶段,你的测试大多会失败(红色),然后你可以做真正的代码使它们通过(绿色),最后,清理和重构,使用你的测试作为指导你是否已经破碎任何东西.
阅读更多关于red-green-refactor – 它是TDD.
另外,你应该将getGrade()标记为const,即
int getGrade() const { return grade; }
这意味着您可以使用const指针或MyClass实例的引用来获得成绩.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。