徐昊 · TDD 项目实战 70 讲
徐昊
Thoughtworks 中国区 CTO
18159 人已学习
新⼈⾸单¥98
登录后,你可以任选4讲全文学习
课程目录
已完结/共 88 讲
实战项目二|RESTful开发框架:依赖注入容器 (24讲)
实战项目三|RESTful Web Services (44讲)
徐昊 · TDD 项目实战 70 讲
15
15
1.0x
00:00/00:00
登录|注册

81|结束语:掌握TDD的那天,我才成为了可靠高效的职业程序员

你好,我是徐昊。今天要对线段编辑器这个项目做一个收尾,同时也是我们整门课程的一个收尾。

线段编辑器最终的结果

目前,线段编辑器的代码是这样的:
import Konva from "konva";
export class LineEditor extends Konva.Group {
private line?: Konva.Line
private pointsCount: number = 0
attach(line: Konva.Line) {
this.line = line
line.on('pointsChange', () => {
this.update()
})
this.update()
}
update() {
let points = this.line!.points()
let previous = -1
for (let i = 0; i < points.length / 2; i++) {
this.get(i, 'anchor').setAttrs({x: points[i * 2], y: points[i * 2 + 1]})
if (previous !== -1)
this.get(i, 'control').setAttrs({
x: points[previous * 2] + (points[i * 2] - points[previous * 2]) / 2,
y: points[previous * 2 + 1] + (points[i * 2 + 1] - points[previous * 2 + 1]) / 2
})
previous = i
}
for (let i = points.length / 2; i < this.pointsCount; i++) {
this.findOne(`.${i}-anchor`).destroy()
this.findOne(`.${i}-control`).destroy()
}
this.pointsCount = points.length / 2
}
private get(index: number, type: string) {
return this.findOne(`.${index}-${type}`) || this.create(index, type)
}
private create(index: number, type: string) {
let point = new Konva.Circle({name: `${index}-${type}`, radius: 10, draggable: true})
if (type === 'anchor') {
point.on('dragmove', (e) => {
let points = this.line!.points()
points[index * 2] = e.target.x()
points[index * 2 + 1] = e.target.y()
this.line!.points(points)
}).on('dblclick', (e: Konva.KonvaEventObject<MouseEvent>) => {
let points = this.line!.points()
points.splice(index * 2, 2)
this.line!.points(points)
})
} else {
point.on('dragmove', (e) => {
let points = this.line!.points()
points.splice(index * 2, 0, e.target.x(), e.target.y())
this.line!.points(points)
})
}
this.add(point)
return point
}
}
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

徐昊在文章中分享了他对测试驱动开发(TDD)的理解和实践经验。他以线段编辑器项目为例,展示了TDD在实际项目中的应用。通过代码示例和视频演示,读者可以了解线段编辑器的最终代码和实际运行效果。在文章结尾,徐昊回顾了整个课程的内容,从经典学派到伦敦学派,再到强交互性系统的开发,阐述了TDD在不同场景下的应用方法和原则。他强调了TDD的重要性,并鼓励读者以自己的方式应用TDD,成为可靠高效的职业程序员。最后,他邀请读者填写反馈和建议,以帮助他改进课程。整篇文章通过实例和经验分享,向读者传达了TDD的重要性和实践方法,为技术人员提供了有益的启发和指导。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《徐昊 · TDD 项目实战 70 讲》
新⼈⾸单¥98
立即购买
登录 后留言

全部留言(2)

  • 最新
  • 精选
  • aoe
    原来真实的 TDD 开发中是首选简单快速的方法实现,见机行事
    2022-09-13归属地:浙江
    4
  • 王鸿轩
    期待与徐昊老师再会,听徐昊老师分享和写代码是一种非常愉悦的享受。
    2023-12-30归属地:浙江
    1
收起评论
显示
设置
留言
2
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部