TPMCS开发心得——写程序和写字

以下全是本人工作和学习的心得体会,因本人水平有限、认识不够全面,讲的不对的地方请大家见谅。勿喷!!!

前言(一个老程序员的感慨)

或许是因为Ruby语言自身的简洁和Rails的框架的代码约定深入每个Rubyer心中,大家写出的代码约定都很相似,一个项目里除了一些逻辑复杂的方法很难一眼看明白外,通常一个项目的代码从文件名、变量名或方法名就可以懂这个项目80%以上的代码(这也可能和Rails开发很多功能都用现成的Gem实现有关)。所以,当从Ruby的Rails转为PHP的ThinkPHP框架后,看到用相同的TP(ThinkPHP)版本开发出来的系统命名约定、编码风格五花八门,我一直想自己开发一个CMS做为开发项目的基石。PS:我并不是说TP框架不好,我们当初选择PHP框架时也是进行了很详细的评估才确定用这个框架,而且TP官方在每个版本发行的官网文档里都有说明开发规范,但可惜的是很多PHPer并没有遵守这个规范。

公司项目从TP2.3升级到TP3.2后,我曾把网上找的一个开源CMS进行二次开发做为公司开发项目能用的CMS系统,但必竟因为是在别人的项目上做二次开发,有些东西还是不好修改,所以当TP5.0发布后,我就打算自己从零做一个CMS后台。经过对比当前比较流行的几个TP3.2开发的CMS系统后,我开始写下TPCMS的第一行代码。其实在比对过几个常用的TP3.2版 CMS系统后(当时还没有开源的TP5 CMS),我也曾犹豫过,因为现在流行的这些CMS功能很齐全、并且一直有人负责更新维护,自己现在更多的精力是放在前端动画的开发,很少参与后端PHP开发。再者,开发TPCMS只是自己的想法,不可能占用公司的人力、资源和时间来开发,而自己除去日常工作以外每周并没有太多的时间来开发这个项目。所以,从今年年初开始开始写下第一行代码后整个项目的开发速度很慢,加上过年放假等原因,造成这个项目用了大概四个月的时间也只完成了CMS框架的基本功能。

去年冬天开始,我坚持每天早上练习一张纸的楷书,但总觉得硬笔楷书写出的字总差点什么。过年回来后经老同学王天峰的指引开始学习欧楷。先是买本《九成宫》按照全文顺序一个字一个字的写,总觉得自己写的和原帖差的太大;所以改成按照网上讲解开始练习每个笔画的代表字、重点开始练习每个点画的写法,还是觉得写不好;接下来放弃先练整个字、专心练习每个点画(笔画)的写法,这样学习了三个多月还是觉得自己不得其法。直到开始跟着田蕴章的《每日一题、每日一字》开始练习才茅塞顿开。

上图里的这些字都是常用字,你如果有兴趣的话可以把这些字全写一遍,然后对照田老师的视频看一下自己哪几个字写是按正确的点画顺序写的(视频传输门PS:胆小者勿入,否则前五集视频看完就会让你怀疑自己的语文是体育老师教的!!!)。你也可以只写一下其中的“必”字,本文最后画出了田老师给出的这个字正确点画顺序,你可以对照的看一下自己是否写对。自从开始跟着田蕴章的视频开始学习写字后,我觉得自己这么多年的字还不如白写了,基本上一大半的字都写错了。当然,你我学习写字并不是为了当一名书法家,而是把汉字当成一种交流工具,只要能做到写出的字被大家认识就够了。像书法家以写字为专业一样,程序员和软件工程师是以写代码为职业,别人说我们写字是外行可以无所谓,但如果我们写了几年、十几年的程序却在行家眼里还是个外行的话,那就是个问题。所以这也坚定了我要把TPCMS做好的信心。

学写代码很简单

下图是田蕴章老师的侄子写的欧楷点画,有没有感觉每一笔就像是印出的来感觉?

我相信很大一部分人选择学习软件和程序开发是冲着这个行业这些年来的热门和工资高。现在全国每个大学都有计算机专业、校外的培训机构也是数不胜数,这些学校和机构每年毕业的学生有上千万,这千万人中的绝大多数人却在毕业之后放弃干这行(特别是像我们这样三流大学毕业的,第年毕业一百多人但毕业后能有二十个人干这行已经算很好了)。之所以这样是因为很多人经过四年的学习后总结出一句话:“编程太难了、C语言太难学了”。很多人在学习C语言时已经被搞晕,之后再学习C++、JAVA、PHP或C#.NET这些语言时更是全完在听天书,这就像我前面刚开始学习欧楷时不得其法一样。我很庆幸自己在开始学习编程时遇到了一位明师,他帮我们对C语言做了一个很好的总结、为我们学习编程开好了蒙。如同学习汉字、无论笔画多复杂的字都是由横、竖、撇、捺、点、勾这六种点画(也叫笔画)构成一样,他为我们总结出整个C语言其实只学会了赋值(=)、判断(if/else;switch)、循环(for;while;do while)、continue和break等九句。为我们做了一个提纲挈领。

你是否会编程

很多人觉得学习完一门程序语言之后自己会编程,但我觉得当你学会一门程序语言上面那九条语法和基本结构之后,充其量也只能是会写代码、算不上会编程。就如学会了横、竖、撇、捺、点、勾这六种点画后并不代表着会写汉字。真正学会写汉字、最了掌握基本的点画外还要学会每个汉字的结构和点画顺序。如上面讲的“必”字常见的书写点画顺序就有五种,而我们绝大多数人的书写顺序属于那四种错误的书写方式。当然我们在掌握编程语言的基本语法后写代码不会像上面写汉字那样用错误的书写笔顺,但每门程序语言有一个类似汉字笔顺这样的一个基本规则:命名规范。很遗憾的是我们在身边或网上经常看到写了很多年代码却连这门语言最基础的命名规范都没有遵守的“外行人 ”。

MVC和汉字结构

如同只掌握了一个汉字正确的书写笔顺但却在字体的结构和比例不对算不上写对一个字一样。编程不仅要遵守命名规范,还需要按一定的结构来写代码。如我们现在常见的Web后端开发框架绝大多数都是MVC框架、前端项目开发用的是MVVM框架。很遗憾的是就从我看到的用TP2/TP3和TP5开发的项目来讲,还没有一个真正按照MVC框架来写代码的项目。关于MVC,我曾经听过一个很形象的比喻——“MVC三者的关系就像一个饭店的厨师(Model)——顾客(View)和服务员(Controller),顾客点菜后服务员把菜单交给厨师来做,厨师做完菜之后由服务员把菜端给顾客”。但我们看到的代码经常只有View和Controller文件,原本应该写在Model里的代码全写在了Controller里所以很少看到Model文件。这就如同一家饭店里服务员把厨师的活全干了。这也就是好多人TP框架用了多年,但官方文档Model章节里讲的validate、auto不知道怎么用、不能完整的说出用D方法和M方法的区别。

一字见水平

如果当我们掌握了点画、笔顺和文字的结构,拿起毛笔写出一个楷体的字来就说这是欧体,我想稍懂书法的人给你的评价也只能是“呵呵”了。无论一个程序员学的什么语言和框架,当他真正掌握了上面说的语言基本语法、语言和框架的命名规范和框架结构,要做一个CMS系统都不难。但如同田蕴章老师所讲越是常见的字越考验一个书法家的功力。一个“有”字写的好坏就可以看出一个书法家的水平。田蕴章老师在视频中讲整个XX市书法协会的所有会员,估计能写出一个合格的“有”字的人估计不超过20%。这句话对我的触动很深,因为我当年在面试一家公司的Ruby开发时,第一轮面试时面试官曾在问完几个技术问题后,让我发一段自己写的代码到到邮箱,当时我找遍正在做的一个项目的所有代码却很难找到一段自己认为写的很好的代码。最后经过三轮面试,我还是进了那家公司,并在那家公司干了三年多(是除目前这家公司外,待的最长的时间),也确实在那家公司里学到了很多东西。

代码漂不漂亮很重要!!!

如Paul Graham在《黑客与画家》里所说代码就是黑客的作品。代码写成什么样才算漂亮这属于重构的艺术了,已经超出我在这里要讲的内容。但我觉得在追求代码写的漂亮不漂亮之前,我们更应该先关心一下自己写的代码别人是否能看懂,或者半年或一年后自己回过头来看自己写的代码是不是能看懂。说起书法作品,我想大家应该都知道王羲之的《兰亭集序》它在书法史上的地位。但另一件作品的地位比《兰亭集序》还要高——被称为“法帖之祖”的陆机的《平复帖》(如下图)很少有人听说。我个人觉得这件作品最传奇的地方是整帖共84个字,它从西晋传到现在,经过将近两千年,传到明朝时一位收藏家研究了一辈子,才认出了里面的14个字,再往后明、清两朝很多人研究一生也没认出剩下那70个字写的是什么。不过好在,上世纪大咖启功先生终于基本破译了该帖全文(有四个字因为损坏,无法考证),使我们能够知道当年陆机写的什么。

项目开发与中医望闻问切

《孙子兵法》上说“声不过五,五声之变,不可胜听也。色不过五,五色之变,不可胜观也。味不过五,五味之变,不可胜尝也”。而所有的汉字何尝不是由那六个基本的点画组成;所有的程序又何尝不是用那九句写成。所以掌握上面所说的这些内容以后,我们算得上真正懂得编程,但开发一个项目的开发并不仅仅是按框架编程这样简单。明朝的名医张景岳曾说“用药如用兵”,中医大夫看病需要先进行望闻问切、再辩证、再择法,最后遣药处方,处方里的药物更是讲究君、臣、佐、使相互配合。一个项目的开发与中医看病过程也有着很相似的地方。另外,从中医开始到现在已经流传两千多年、治病救人无数,出现过无数名医、名方。东汉末年的张仲景著作《伤寒杂病论》,千百年来被所有医家奉为经典,他被尊称为“医圣”,而《伤寒杂病论》里的药方被称为经方(非《伤寒杂病论》的药方被统称为时方)。后世很多医家仅凭《伤寒杂病论》的几个经方加减化裁,便可行医一生成为名医。一个好的CMS系统就像《伤寒杂病论》里的桂枝汤和柴胡汤一样,可以做为一个基础架构、通过二次开发可用于绝大多数Web项目开发。关于TPMCS和望闻问切、君臣佐使的关系我们下次再聊。

TPCMS地址:http://git.oschina.net/zhanghongbean/tpcms

“必”字书写顺序图

转载于:https://my.oschina.net/laifuzi/blog/920530

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值