小5
置顶
2022-09-25
来自广东
学习了这节课的内容,想到了之前章节的一段话: Kent Beck 作为极限编程(Exetreme Programming)的创始人,将勇气(Courage)作为极限编程的第一原则,提出编程的第一大敌是恐惧(Fear),实在是有非凡的洞见。同时,他也花了极大的篇幅,说明为什么 TDD 可以让我们免于恐惧:重构使得我们在实现功能时,不恐惧于烂代码;测试使得我们在重构时,不恐惧于功能破坏。 我们平时常说:代码看不懂、改不动、不敢改。 看不懂是指认知负载太高,导致代码很难改,改了一个地方影响很多地方,甚至不知道影响多少地方,也就自然不敢改了,改出问题了谁负责,改一个bug改出多了几个新bug,以前公司老人常说千万不要在现有的代码上改,要把方法copy一份,然后再改,调用新的方法😂,多么痛的领悟。 在做练习的重构过程中明白了因为对所有的代码都有测试,改了代码跑一下如果有错误就很容易发现,所以给了我们改代码的勇气。
2
escray
置顶
2022-04-28
进入到第二阶段的课程之后,给出的代码相对比较详细,虽然实现的功能比起前面要复杂一些,但是跟上节奏就不那么困难了。 这个专栏的门槛还是挺高的。 实现循环依赖检测,比较容易想到的就是在每个依赖添加一个标志位,但是这个似乎不那么容易实现;那么另一个方式,就是增加一个记录依赖的列表,每次都去判断是否存在循环依赖。 代码不太会写,只能先想一下。 本课的代码链接:https://github.com/escray/TDDCourse/tree/ch15
3
汗香
2022-04-25
获取一个依赖前,先从已有依赖获取, 若获取结果不为空则获取成功, 若获取结果为空,先将被获取依赖类型放入一个待创建集合中,并判断当前组件本身是否在集合中,若在,说明有循环依赖
2
努力努力再努力
2022-09-23
来自广东
哭了,上一个留言发现有问题,自己实现的时候才发现单纯一个 set 集合记录正在创建的bean还不行,得利用 TLS(https://time.geekbang.org/column/article/93745) 模式做线程隔离,否则多线程的测试用例下,就会出现明明没有循环依赖而报错的问题。
努力努力再努力
2022-09-23
来自广东
循环依赖,可以加一个 bean 在创建中的标识,当 bean 被创建完之后,就把标识去掉,这样如果创建过程中发现这个 bean 正在创建中,就可以认为是发生循环依赖了
蝴蝶
2022-08-13
来自广东
@Inject注解的构造方法如果没有参数,那肯定是有问题的,这次看明白了。
davix
2022-05-25
get() 重構受啟發!雖然看過《重構》了解其中的方法,但平時如果get()設計變化我通常還是直接改。這回直觀感受引入get_()的好處。