MyException - 我的异常网
当前位置:我的异常网» 编程 » 编程思维的养成——小弟我的信息技术之路之五

编程思维的养成——小弟我的信息技术之路之五

www.MyException.Cn  网友分享于:2013-11-16  浏览:0次
编程思维的养成——我的信息技术之路之五
  提到编程,当然要知道编程思想的进化史,而半路出家又特别是自学编程的人往往没有经过系统专业培养,这部分往往会被忽视,但“是思维习惯指导着行动”,了解程序编写的发展历史才能了解进化思路。
  作为我入手的VB6并不是完美的面向对象的高级语言,但已算是比较合适学习的优秀的面向过程的高级语言了,初学之,从归提炼代码,养成面向过程——形成养成写可重复使用的块的好习惯,也是编程路上必不可少的阶段。
  我自己作为一名小学老师深知:思维习惯的形成非常缓慢,绝非说今天想到今天就可以做到,是不断在反复的反馈刺激后才能固定下来的思维回路,最终才可以在不经主观强化约束的情况下默认执行。刚开始必须反复纠正之,反复重构之。
  一开始写代码,举个例子,连接ACCESS数据库,按钮一的点击代码中需要打开数据库的某个表进行操作,然后关闭它;按钮二的点击代码中也需要打开这个数据库的另一个表进行另一些操作,然后再关闭它(这儿只是简单举例,初学者可关注,高手请绕道)。那么查阅自己过往作品,特别是能找到的初期作品,就发现一个问题:两个按钮的点击事件中的代码都是按照如下流程走的:

按钮一被单击时要执行的操作()
  找到要连接的ACCESS数据库文件
  判断这个文件是否存在
  连接到指定的ACCESS数据库文件
  打开要操作的数据表一
  执行按钮一要做的操作
  关闭要操作的数据表
  断开与指定的ACCESS数据库文件的连接
结束按钮一被单击时要执行的操作
 
按钮二被单击时要执行的操作()
  找到要连接的ACCESS数据库文件
  判断这个文件是否存在
  连接到指定的ACCESS数据库文件
  打开要操作的数据表二
  执行要做的操作
  关闭要操作的数据表
  断开与指定的ACCESS数据库文件的连接
结束按钮二被单击时要执行的操作

  两个按钮中加粗显示的部分可以发现是重复的,如果在两个按钮的点击事件中都写这些代码,将造成重复劳动,当然事实上是复制粘贴,但又造成另一个问题,出了错,将要修改两处,如果找不到错误在哪儿就更惨——这种事在我的过往经历中经常发生,往往花个通宵甚至都无法找到到底错在哪儿。
  其实我们可以将上面加粗显示部分的操作,分别放到两个可调用 的 程序 块中,称之为 函数的东西里,使用时直接调用之就可以了。
  而事实上上面两个按钮的单击事件中,斜体显示的部分,虽然操作的是两个不同的表,但基础操作是一样的:都是打开某一张表,则也可以放到一个程序块中,只是在调用块时,需要告诉这个程序块,你给我打开哪张表就行了。
  但是,往后过了将近一年,这种不是面向过程的思维习惯才被慢慢改正过来,可见一个思维习惯的形成是多么艰难。往后查看一些作品源代码,就可见如上例中的程序流程就变成了这样:

程序块一_我是负责连接那个ACCESS数据库文件的()
  找到要连接的ACCESS数据库文件
  判断这个文件是否存在
  连接到指定的ACCESS数据库文件
  返回连接后的结果
结束程序块一
 
程序块二_我是负责断开与那个ACESS数据库文件的()
  断开与指定的ACCESS数据库文件的连接
  返回断开是否成功的结果
结束程序块二
 
程序块三_我是负责打开想要打开的表(这儿告诉我要打开哪个表)
  打开【这儿告诉我的要打开的那个表】
  返回打开的结果
结束程序块三
 
程序块四_我是负责关闭想要关闭的表(这儿告诉我要关闭哪个表)
  关闭【这儿告诉我的要关闭的那个表】
  返回关闭的结果
结束程序块四
 
按钮一被单击时要执行的操作()
  呼叫 程序块一 完成它的操作
  呼叫 程序块三(表一) 完成它的操作
  执行按钮一要执行的操作
  呼叫 程序块四(表一) 完成它的操作
  呼叫 程序块二 完成它的操作
结束按钮一单击时的操作
 
按钮二被单击时要执行的操作()
  呼叫 程序块一 完成它的操作
  呼叫 程序块三(表二) 完成它的操作
  执行按钮二要执行的操作
  呼叫 程序块四(表二) 完成它的操作
  呼叫 程序块二 完成它的操作
结束按钮一单击时的操作

  正是保证学习的思维每天都有进步和改变,也正是坚持每天都改变自己一点点,这种面向过程的编程思维就形成了一种习惯思维,每次开始写具体控件(如按钮就是一种控件)时,都会先自发地想到是否 些代码可以单独放到一个 程序 块中?独立的程序 块(就是专门供别人笑呼叫使唤的程序 块)多了,是不是可以专门建立 一个模块文件保存起来?
  通过这样每天进步一点点,每天改变一点点,终于完成了编程思维完全的完成面向过程编程的转变。
  后来,当学习JAVA等时,又自然地养成了面向对象的思维习惯的转变,一下手,就会自觉地习惯地想到:把这些要反复和到的功能当作一个独立的类吧,让它自己做什么,有什么特点,有什么可自上继承的等等,这样,思维一到,代码竟活了起来,编程竟自然有趣起来。
因为日子每天在改变,世界每天在改变,只有让自己每天都有新的改变与进步,才可能适应这个变化 的世界,那就是每天进步一点点,一年,十年,变化 就相当惊人了。转变思维,跟上时代的思维才能让自己永远走在时代的前列。
  记得读书时代,教我画国画的老师讲过一个小事,他说他有个邻居很喜欢画国画,但好多年来,每次下笔画小鸡等,笔法顺序基本一样,只只小鸡都差不多,虽然确实是特别爱画画,但多年来画作几乎数年如一日,没有二致,还到处卖弄自己的作品——旁人不语,但实在可悲。
  这个故事当时给我巨大的触动,这些年来,给愿意向我学习的徒弟们,我多数并不会教他们具体要怎么去写代码,要做些什么,我只告诉他们要达到什么目标,其余让他们自己去探索,只是上面那个故事是要经常作为鞭子鞭策他们的。很多徒弟们进步还是非常之大,迅速实现了自我的不断蜕变,这便是从心培养思维,由内心思维的转变而驱动外在行动变化 的力量。
  如果说编程学习除了改变了我粗枝大叶的行动习惯之外还给我带来了什么的话,最大的收获便是——改变了人思维的习惯,使思维可以如水般随时适应时代这个容器的任何变化 。
 
 

文章评论

程序员都该阅读的书
程序员都该阅读的书
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
中美印日四国程序员比较
中美印日四国程序员比较
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
Google伦敦新总部 犹如星级庄园
Google伦敦新总部 犹如星级庄园
那些争议最大的编程观点
那些争议最大的编程观点
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
那些性感的让人尖叫的程序员
那些性感的让人尖叫的程序员
老程序员的下场
老程序员的下场
漫画:程序员的工作
漫画:程序员的工作
我的丈夫是个程序员
我的丈夫是个程序员
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
为什么程序员都是夜猫子
为什么程序员都是夜猫子
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
2013年美国开发者薪资调查报告
2013年美国开发者薪资调查报告
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
如何成为一名黑客
如何成为一名黑客
我是如何打败拖延症的
我是如何打败拖延症的
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
程序员和编码员之间的区别
程序员和编码员之间的区别
代码女神横空出世
代码女神横空出世
一个程序员的时间管理
一个程序员的时间管理
旅行,写作,编程
旅行,写作,编程
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
鲜为人知的编程真相
鲜为人知的编程真相
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
程序员的鄙视链
程序员的鄙视链
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
每天工作4小时的程序员
每天工作4小时的程序员
程序员应该关注的一些事儿
程序员应该关注的一些事儿
总结2014中国互联网十大段子
总结2014中国互联网十大段子
Java程序员必看电影
Java程序员必看电影
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
编程语言是女人
编程语言是女人
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
 程序员的样子
程序员的样子
10个调试和排错的小建议
10个调试和排错的小建议
程序员必看的十大电影
程序员必看的十大电影
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有