Re: [敏捷开发][结对编程(Pair Programming) ] 编程敏捷开发算法
程序员文章站
2022-07-12 17:15:27
...
上面写得太多了,好像重点不太突出了,我觉得是不是采用结队编程,一条关键的依据是:
判断我们代码需不需要重构,如果需要,结对编程就会提供很好的价值,包括代码正确性、严谨性、可扩展性等等,为代码的重构提供很好的基础,并且结队编程克服不想对自己代码进行重构的惰性。
如果判断我们对系统架构设计,有很成熟的经验,且需求的变更不会对设计造成太大影响,那么结队编程就消弱了存在的意义。
如果旁边有感觉不错的搭档,对于新的、陌生的问题特别是算法,我喜欢一起进行讨论。
比如有一次,对一个正方形路径遍历的算法解决问题,在正方形内,每条路径从起点(0,0)到终点(n,n)沿着从右向左,或从下到上行进,需求所有路径坐标,我考虑可以把从右向左的一步用1表示,从下向上的一步用0表示,那么一条有效路径就是n个1和n个0表示的一个字符串。
但是我考虑怎么找出这些字符串来呢,这时我的思维进入了对这些0和1如何排列组合的思维空间,很难跳出来,这时我的同事说,“有了,可以从0开始数,到二进制的1..10..0所有二进制数中,判断1的个数,如果1的个数是n岂不就是要找的路径嘛”
呵呵,就这样问题解决了。
在一个人考虑问题的时候,起初他的思维可能会放的很宽,但是随着问题的深入/进展,他的思维会越来越集中在某一部分,通常我们说陷入牛角尖了。
所以我们经常会有这样的体会,我们去趟洗手间,或在回家的路上,我们突然就找到了某个刚刚还百思不得其解的很好的解决方案。
这也就是结队编程的价值,它使我们随时都站在两个视角,一个具体微观、一个粗放宏观。
判断我们代码需不需要重构,如果需要,结对编程就会提供很好的价值,包括代码正确性、严谨性、可扩展性等等,为代码的重构提供很好的基础,并且结队编程克服不想对自己代码进行重构的惰性。
如果判断我们对系统架构设计,有很成熟的经验,且需求的变更不会对设计造成太大影响,那么结队编程就消弱了存在的意义。
如果旁边有感觉不错的搭档,对于新的、陌生的问题特别是算法,我喜欢一起进行讨论。
比如有一次,对一个正方形路径遍历的算法解决问题,在正方形内,每条路径从起点(0,0)到终点(n,n)沿着从右向左,或从下到上行进,需求所有路径坐标,我考虑可以把从右向左的一步用1表示,从下向上的一步用0表示,那么一条有效路径就是n个1和n个0表示的一个字符串。
但是我考虑怎么找出这些字符串来呢,这时我的思维进入了对这些0和1如何排列组合的思维空间,很难跳出来,这时我的同事说,“有了,可以从0开始数,到二进制的1..10..0所有二进制数中,判断1的个数,如果1的个数是n岂不就是要找的路径嘛”
呵呵,就这样问题解决了。
在一个人考虑问题的时候,起初他的思维可能会放的很宽,但是随着问题的深入/进展,他的思维会越来越集中在某一部分,通常我们说陷入牛角尖了。
所以我们经常会有这样的体会,我们去趟洗手间,或在回家的路上,我们突然就找到了某个刚刚还百思不得其解的很好的解决方案。
这也就是结队编程的价值,它使我们随时都站在两个视角,一个具体微观、一个粗放宏观。
上一篇: 开源琴棋报表1.3.3发布
下一篇: 遗传算法学习笔记(1) 算法生物数据结构