`
andyhu1007
  • 浏览: 193919 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

从思维角度看编程技巧

阅读更多

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

 

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

 

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

 

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

 

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

 

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

 

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

 

分享到:
评论
40 楼 andyhu1007 2008-08-12  
castte 写道
ps:楼主头像是之江钟楼?


握手,校友:)
39 楼 castte 2008-08-12  
现在很想TDD啊。。闷头写了4个月代码后发现,现在维护起来要了命,代码可以用一陀一陀来形容

ps:楼主头像是之江钟楼?
38 楼 yeowin 2008-07-26  
我感觉到tdd了。。。。
37 楼 sz-James 2008-07-14  
我晕,难道这个都不懂的人能去搞编程嘛
36 楼 soartju 2008-07-11  
这样思路确实会清晰很多
35 楼 lkjust08 2008-07-08  
不错,是这个道理.不地这样一来会使用编程变的很狭隘,限制了我们的恩维.没有创新.
34 楼 andyhu1007 2008-06-30  
hunter001201 写道
生搬硬套。
测试驱动考虑这个那个,你不测试驱动就不考虑了?
乱盖阿


哦,好吧。但我说过不考虑么?
33 楼 simenliu2003 2008-06-30  
尖锐一点,这和测试驱动有个屁关系,也就是一个先分析设计,再开发的问题。
32 楼 xiao_jiang51 2008-06-22  
如果需求能一次就吃透并且稳定下来,这样的情况估计少之又少,个人认为编程技巧最终的目的不在于实现当前的需求 ,而是给需求变动留下后路,不管你的技巧再强,如果不能在需求深化或变动时保留其生命力也不能带来生产力,项目的风险往往不在于技术层面,而在于需求的深化或变动,如果前期技术层面给予需求深化或变动留下很大的空间,风险也就可控了。很多需求客户是无法一次表达清楚了,还有我们开发人员对需求的理解也是需要一个过程,从本人的开发体会中就感觉到随着对需求深入和对需求的把握进一步深入理解,重构前期的部分实现是必需的 ,如果前期的实现在耦合性 ,扩展性方面没有考虑太多,只是要求实现当初理解的需求,那么必然给后期重构带来困难,甚至直接推倒重来
31 楼 dobetter 2008-06-15  
有深度~~~
30 楼 protti 2008-06-13  
andyhu1007 写道
mars李 写道
小的方面这么干没有问题,大的方面往往需要飘逸一些,因为往往根本就确定不了目的.
就好像女友说想要一只狗狗, 于是你问,想要什么狗狗阿?
她来句,就是普通的狗狗,可爱就行.
然后你查遍了资料,逛遍了狗市.已自己认为她喜欢的想法买了一只回去.
结果女友看到说, 哦 我喜欢个头比着大点的, 毛比这长点的 颜色比这深点的 尾巴比这长点的 脸比这瘦点的.......
于是呼,重买。
再交货之,女友说 哦 我想了想,邻居都是小狗 我要大狗不好 %¥—*……  夏天 毛长很热的 ¥%……¥—  .........


没错,但你说的是弄清需求方面的问题。
我这里谈的只是需求确定下来,开始实现之后的一个技巧而已。




甲方会确定下来需求么?

我没遇到这么好的甲方。
29 楼 soni 2008-06-13  
有时候用户都不知道他具体要什么!
28 楼 tcmak 2008-06-12  
環境也會改變的, 這不是誰對誰錯的問題.
27 楼 Emperor``炎 2008-06-12  
haha,人家发表下看法嘛,看法就是想说什么就什么,谁能保证谁说的全对或谁说的就绝对错呢
26 楼 andyhu1007 2008-06-10  
younggun 写道
gigix 写道
no_123 写道
因为user一开始就会说他想要什么样的最终效果,达到什么样的目的。。。

你见过几次是一开始就说对的?

你见过几次一开始就听对客户说什么的?


首先,需求会随着项目的进行而演变。所以连客户自己也不可能从一刚开始就知道自己想要什么。
其次,有些复杂的需求,客户自己也还搞不清楚。他们考虑了一个方面,却没有考虑另一方面。这种情况经常碰到,我们项目中有些需求还是我们帮助客户去搞清楚的。
再次,没有听对就开始做,当然是你自己的问题。为什么不沟通好,等双方都confirm了才开始做?
最后,出差错总是难免的。但要尽量减少出错的机会吧。

--- 个人小见。
25 楼 younggun 2008-06-10  
gigix 写道
no_123 写道
因为user一开始就会说他想要什么样的最终效果,达到什么样的目的。。。

你见过几次是一开始就说对的?

你见过几次一开始就听对客户说什么的?
24 楼 gigix 2008-06-10  
no_123 写道
因为user一开始就会说他想要什么样的最终效果,达到什么样的目的。。。

你见过几次是一开始就说对的?
23 楼 no_123 2008-06-10  
因为user一开始就会说他想要什么样的最终效果,达到什么样的目的。。。
22 楼 gigix 2008-06-09  
no_123 写道
可是为什么我们为什么经常做出来的东西都不能让user一次就满意呢?难道user没告诉清楚我们最终想要的结果是什么吗?显然不是。

为什么“显然不是”?
21 楼 no_123 2008-06-09  
可是为什么我们为什么经常做出来的东西都不能让user一次就满意呢?难道user没告诉清楚我们最终想要的结果是什么吗?显然不是。

相关推荐

    10年经验总结四大编程技巧(C语言)

    计算机程序中最大的矛盾是空间和时间的矛盾,那么,从这个角度出发逆向思维来考虑程序的效率问题,我们就有了解决问题的第1招--以空间换时间。 例如:字符串的赋值。 使用的时候可以直接用指针来操作。 从上面的...

    像计算机科学家一样思考python

    和其他编程设计语言书籍不同,它不拘泥于语言细节,而是尝试从初学者的角度出发,用生动的示例和丰富的练习来引导读者渐入佳境。 作者从最基本的编程概念开始讲起,包括语言的语法和语义,而且每个编程概念都有清晰...

    像计算机科学家一样思考python(已解密)

    和其他编程设计语言书籍不同,它不拘泥于语言细节,而是尝试从初学者的角度出发,用生动的示例和丰富的练习来引导读者渐入佳境。 作者从最基本的编程概念开始讲起,包括语言的语法和语义,而且每个编程概念都有清晰...

    像计算机科学家一样思考Python kindle

    和其他编程设计语言书籍不同,它不拘泥于语言细节,而是尝试从初学者的角度出发,用生动的示例和丰富的练习来引导读者渐入佳境。 作者从最基本的编程概念开始讲起,包括语言的语法和语义,而且每个编程概念都有清晰...

    像计算机科学家一样思考Python

    和其他编程设计语言书籍不同,它不拘泥于语言细节,而是尝试从初学者的角度出发,用生动的示例和丰富的练习来引导读者渐入佳境。 作者从最基本的编程概念开始讲起,包括语言的语法和语义,而且每个编程概念都有清晰...

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

    4.1.1 从面向过程转变为基于集合的思维方式 96 4.1.2 面向过程vs.基于集合的思维方式:一个例子 100 4.2 集合运算 102 4.2.1 UNION和UNION ALL 103 4.2.2 MINUS 106 4.2.3 INTERSECT 107 4.3 集合与空值 108 ...

    C语言高效编程的几招小技巧

     计算机程序中最大的矛盾是空间和时间的矛盾,那么,从这个角度出发逆向思维来考虑程序的效率问题,我们就有了解决问题的第1招——以空间换时间。 例如:字符串的赋值。 方法A,通常的办法: 代码如下: #define ...

    像程序员一样思考.pdf

    最后,第8章从培养程序员思维的角度,进行了总结和概括,告诉读者如何才能像程序员一样思考。 本书选取的话题切中程序员的痛点,针对他们最容易陷入挣扎的领域展开讨论,引发思考。每章后面都给出一些编程习题,...

    像程序员一样思考

    编程的真正挑战不是学习一种语言的语法,而是学习创造性地解决问题,从而构建美妙的应用。《像程序员一样思考》分析了...最后,第8章从培养程序员思维的角度,进行了总结和概括,告诉读者如何才能像程序员一样思考。

    0_BUG:C_C++商用工程之道(高清).part3

    《0 bug:C/C++商用工程之道》共分12个章节,主要针对C/C++语言在商用工程开发中的程序实战进行论述,从商用解决方案的角度来理解C和C++语言的程序设计技巧。具体内容包括商用工程开发思路、C/C++无错化程序设计、...

    0_BUG:C_C++商用工程之道(高清).part1

    《0 bug:C/C++商用工程之道》共分12个章节,主要针对C/C++语言在商用工程开发中的程序实战进行论述,从商用解决方案的角度来理解C和C++语言的程序设计技巧。具体内容包括商用工程开发思路、C/C++无错化程序设计、...

    0_BUG:C_C++商用工程之道(高清).part2

    《0 bug:C/C++商用工程之道》共分12个章节,主要针对C/C++语言在商用工程开发中的程序实战进行论述,从商用解决方案的角度来理解C和C++语言的程序设计技巧。具体内容包括商用工程开发思路、C/C++无错化程序设计、...

    《像程序员一样思考》(Think Like a Programmer )扫描版[PDF]

    编程的真正挑战不是学习一种语言的语法,而是学习创造性地解决问题,从而构建美妙的应用。本书分析了程序员解决问题的方法...最后第8章从培养程序员思维的角度,进行了总结和概括,告诉读者如何才能像程序员一样思考。

    像程序员一样思考,完整扫描版

    《像程序员一样思考》内容简介:编程的真正挑战不是学习一种语言的语法,而是学习创造性地解决问题,从而构建美妙的应用...最后,第8章从培养程序员思维的角度,进行了总结和概括,告诉读者如何才能像程序员一样思考。

Global site tag (gtag.js) - Google Analytics