论坛首页 综合技术论坛

从思维角度看编程技巧

浏览 18339 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (7)
作者 正文
   发表时间:2008-05-31   最后修改:2009-08-16

  当我们想做一件事情的时候,比如我们要从住处出发到某个餐馆去跟女友约会。

 

  如果是个大老粗,不管三七二十一,出发吧。结果,到了之后,发现钱没带够,花忘了买,连最重要的礼物也忘家里了。没办法,还得折回去拿。结果是,自己累不说,还浪费了时间,浪费了金钱,而且女朋友也不开心。

 

  如果是个思维缜密的人,他会先想:我去餐馆的目的是什么,哦,最重要的事情,是带给女朋友从国外买回来的礼物,所以千万别落了。当然,吃饭不能让女朋友付钱,所以得带上足够的钱。还有,如果送上一朵玫瑰,在烛光下,会更浪漫一点。用这两分钟时间先进行思考的结果是,什么都没落下,女朋友也很开心,最后,终于赢得美人归。 

 

  其实是编程中某些新鲜的做法,引起我上面的思考。在实现一个方法的时候,我们有时候可以先写结果(即我们想要的),然后一步步推导回去,在这个过程中,我们会很顺其自然的知道:我们要得到这个结果,需要什么?然后去把我们需要的东西拿出来即可。非常简单,不会做任何多余的事情。

 

  而如果按照正常的写法,我们难免会像上面那个大老粗一样,要丢三拉四。

 

  其实,原因就在于,前一种做法,你把你想要的和过程中所需要的都写下来了。而后一种做法,你把你想要的和所需要的,都还保留在大脑里。既然保留在大脑里,就难免出错,难免丢三落四。而且,保留在大脑里,就会增加大脑的负荷。既然如此,为何不把它从大脑中移出,即保证正确,又可以利用你的大脑去思考真正要思考的。

 

  这个方法,其实和要先写伪代码的注释,是一个目的。

 

   发表时间:2008-06-02  
测试驱动开发(TDD)在写测试代码的时候,就是用得这种思考方法呀。
0 请登录后投票
   发表时间:2008-06-02  
这点上来讲,先写测试就非常对,先把要达到的效果写出来,写代码时就不会乱来了!
0 请登录后投票
   发表时间:2008-06-02  
从产品管理团队管理的角度出发 测试驱动是个简单高效的方法
但是从个人英雄主义的角度出发 测试驱动是缺乏全局观和前瞻性的无能做法
0 请登录后投票
   发表时间:2008-06-03  
不理解你的意思,什么叫做从个人英雄主义角度出发? 个人英雄主义和测试驱动又有什么关系?
0 请登录后投票
   发表时间:2008-06-03  
andyhu1007 写道
不理解你的意思,什么叫做从个人英雄主义角度出发?

简单,把个人英雄主义者拖出去挖个坑埋了
成功了是他的个人英雄
失败了你要作为一个队友跟他一起背锅
0 请登录后投票
   发表时间:2008-06-03  
gigix 写道
andyhu1007 写道
不理解你的意思,什么叫做从个人英雄主义角度出发?

简单,把个人英雄主义者拖出去挖个坑埋了
成功了是他的个人英雄
失败了你要作为一个队友跟他一起背锅


没错。但我不理解seen讲的个人英雄主义和测试驱动有什么关系。。
0 请登录后投票
   发表时间:2008-06-03  
andyhu1007 写道
gigix 写道
andyhu1007 写道
不理解你的意思,什么叫做从个人英雄主义角度出发?

简单,把个人英雄主义者拖出去挖个坑埋了
成功了是他的个人英雄
失败了你要作为一个队友跟他一起背锅

没错。但我不理解seen讲的个人英雄主义和测试驱动有什么关系。。

说明你还是没理解我说的
个人英雄是不做测试驱动的
因为测试驱动让编程变得简单直白,每步思路清清楚楚摆在面上
而个人英雄希望以某种神秘的个人力量(而不是清晰直白的大家都可以理解的方式)来解决问题
所以,再说一遍
把个人英雄拖出去挖个坑埋了
0 请登录后投票
   发表时间:2008-06-04  
gigix 写道
andyhu1007 写道
gigix 写道
andyhu1007 写道
不理解你的意思,什么叫做从个人英雄主义角度出发?

简单,把个人英雄主义者拖出去挖个坑埋了
成功了是他的个人英雄
失败了你要作为一个队友跟他一起背锅

没错。但我不理解seen讲的个人英雄主义和测试驱动有什么关系。。

说明你还是没理解我说的
个人英雄是不做测试驱动的
因为测试驱动让编程变得简单直白,每步思路清清楚楚摆在面上
而个人英雄希望以某种神秘的个人力量(而不是清晰直白的大家都可以理解的方式)来解决问题
所以,再说一遍
把个人英雄拖出去挖个坑埋了



基本上是这样的
0 请登录后投票
   发表时间:2008-06-05  
小声的唱一下反调。

事先的构思过程可能还是必要的,但是构思过程不一定需要用测试方法表达哦。

还有,对于
seen 写道
从产品管理团队管理的角度出发 测试驱动是个简单高效的方法
但是从个人英雄主义的角度出发 测试驱动是缺乏全局观和前瞻性的无能做法


我认为,英雄主义不好,但是英雄还是好的!
无论是何种类型的团队,软件业也好其他行业也好,团队中的英雄常常对团队又巨大的推动作用。就是《人件》中改变团队熵的人。

真正的英雄,的确有比普通人更好的全局观和前瞻性.

文化上平等和开放的组织,可以发挥民主的最大作用,但在分歧的决策上集中是不可避免的,也是事实证明高效的。(高效是速度快的意思,好的人,速度在好的方向上体现;坏的人,速度在坏的方向体现。所以,如果有好的英雄,还确实是一个好事)。

题外话,如何快速地识别,培养,选拔好的英雄并将其价值最大化,是不是也该成为软件方法中值得研究的问题。
1 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics