主题:【原创】编程心得 -- 荆棘探兴
比如iPhone上著名的three20库(facebook是开发者),就将诸如stylesheet,layout,shape等抽象出来,将其应用于构建UI。
Qt上貌似也有QStylesheet,QVerticalLayout之类的玩意。
再比如,url映射也很实用。将controller与某个url绑定,用来实现导航,或者其他目的,简化了很多代码,看起来也更整洁。
TCPL应该是传统C++领域最权威得教程了。
在Java的世界里面,外面的人都只认识老板(Interface),而不认识员工(实现类),要做什么就直接找对应的老板。
至于Abstract Class,那是干点活的小老板。
当然也有例外,ArrayList这个小员工,由于事情干的好,而且出色,就没多少人认识他的老板List了。
和人生很像啊。
看了这个缩写不认识,搜了一下,唉,勾起多少往年学习C++的回忆啊。当时我是毕业以后到一个公司,先把我们这些应届生捉去培训了三个月,其中C++就是TCPL教材的,感觉这本书非常合适学习C++。
狠狠的通宝+花谢!
有时候其实他自己练面向对象都还没掌握。
很多东西就是这样,你得先走火入魔,才能深入浅出,一般人不是天才,没有这些磨练,怎么能学得会这种实践性的功夫呢。
我之所以走上现在的职业道路,和这本书大有关系,呵呵。
我在学校时候买了这本书的中英文两个版本,然后一直随身带着,从武汉到南京再到成都,然后回南京最后到杭州,跟着我转战千里啊,呵呵。
是为了解决某些问题。不是开始编程了就在想,今儿个我要用啥模式呢?而是今儿个我碰上了问题,这该怎么办呢?学了模式,就能了解某个模式大概是为了解决什么问题的。某类问题碰上得多了,有经验了,那个时候才可以还没有编程就考虑模式了。
就我的心得,所谓模式编程,就是先设计好数据结构,然后围绕着数据结构去构建程序。做一个任务实际上就分析处理流程,按处理流程的工序分出功能块。然后针对功能块设计数据结构,再围绕数据结构编写一组函数。最后完成的系统就是功能函数簇的串接。按照这样的思维,C语言也可以写出面向对象的程序。面向对象的语言,其实就是从编程机制上固化上述的设计模式。
而与此对应的,是很多人的编程,其实就停留在处理流程分解上,函数就是不停的分解流程,越来越细,虽然可以将相同或相似的功能合成同一个函数,但是因为没有数据结构这个基础,这种合并往往没有条理性,甚至合并的函数内再通过代入的参数来用switch分出很多的分支。这样的程序,没有统一的数据结构基础,因此可能公用变量到处乱飞,写一段程序,要记住n多的变量,因此很多程序员经常会说:“别急,让我编完这段再去吃饭,要不然就忘了”。如果能够理解设计模式的真谛,就绝对不会出现上面的那些现象,可以在任何时候合上电脑去干别的事情,然后回来接着编。
设计模式编程,不单是干活轻松,而且会给自己积累一堆的工具库,工作时间越长积累就越多。一个10年的程序员绝对不单比年轻人的编程速度快好几倍,更厉害的是,通过这些积累,更可以编写那些年轻人根本编不出来的程序。
还有,我很奇怪,编C程序,能有错误找不出来这一说。只有干不出来的任务,没有调不出来的程序。任务只要变成了程序,下面就是体力活,C语言的错误,说起来复杂,其实也就那么几种,而最主要的就是内存溢出。其实如果大学时学好了计算机原理和数据结构,脑子中有一个数据空间的概念,还真没有什么不能调出来的。
大部分都是23个模式的变形或组合。当你反复理解这些标准模式后,开发项目时最好状态是心中无模式,就像用键盘打字熟练后,你不用想哪个字母在哪里?
好象古龙同学的小说。
场景:面世中
人物:面试官(面),大侠(侠)
对话:
面:知道什么是模式吗?
侠:知道
面:模式的23种变化你都会?
侠:我不知道
面:不知道?
侠:心中无模式,何必知道。随手捻来,即可变化组合
。。。
面:你被录取了。
这本书也是我入门C++的领路人,感觉非常好!不过当时我用的是盗版的(公司自己复印的英文本,但是其中的英文非常浅显易懂),以后呢,我连书名字也忘记了。。。只记得作者名字的大概
尤其是以后看过其他的C++书以后,更觉得这本的好了。
如果把模式天天挂在口边,反而使刚刚入门的
go?Ruby?python虽然成熟些但太脚本化了。。。。
前二十名编程语言排名如下:
主要语言的长期变化趋势图如下
其实语言并不重要,关键是编程思想。