关于C#的那些事(一)
这周是VGE2012研暑期培训的最后一周,今天也是C#培训的第一天。早上听了胡老师的课,再想想这几年上过的所有的关于编程方面的课,有点儿小感慨了,在这里说说。
一、如何学编程
也许,有很多的人会这么认为,学编程,先要打好基础,看上N本入门级的课本,再上机,把书本上的程序代码一个字不落地给敲进去,然后,debug,看看结果,嗯,好,跟课本上给的结果一样。然后对着屏幕,一般笑,“我总算会写代码了”……可是,事实上,这就是真正的会写程序了吗?最多只能说,这是会敲代码了,而不是会写程序了。就拿本科期间用的那本谭浩强的C语言书来说,个人感觉,里面的代码很乱,命名一点儿都不规范,全部是什么i,j,k,l,m,n之类的,试问下,几个月后,你告诉j代表什么,你能说得出来么?(这点周老师也很重视,上次培训的时候,特别强调了对窗体、控件的命名问题)命名的规则,倒不一定要严格根据那些规范,可以结合个人的习惯来命名,但各种控件的名称,需要使用不同的前缀来加以区分。
话说回来,不管是C,C++,C#,VB,java,基本的结构就那么几个,顺序结构、选择结构、循环结构,基本的语法构成有就那么几个。但是这些基本的东西,如何表现出不同的功能,执行不同的命令的呢?这就是设计的思路了,说白了,也就是,如何去组合,去叠加这些基本语法、基本结构。
在我看来,要想编程,最重要的设计思路,比如说要实现一个功能,我该去怎样用程序语言表达;如果出了错,我该如何去容错。而不是,任何语言,从头开始学,一大堆枯燥无味的概念,神马dll、CLR、OCX,这些对于没怎么接触过的人来说,完全就是天书。早上听课的时候,顺便看了下,玩手机的人很多,我想,这也能说明一定的问题吧……
如何来学习软件的设计思路呢?那得先分析需求,看看到底需要些什么功能,知道了需求后,就可以根据这些需求来一步一步构思如何堆代码。
二、是先学基础还是先看代码
我的观点是,先看看书,了解了解下一些基础的东西,比如说,你要用Visual Studio进行编程,就要先知道Visual Studio如何使用等等。知道了这些后,直接看别人的代码就好了,了解别人是如何去实现这个功能的,现在google下,就能出来一大堆优秀的代码。
突然想起来,上次给09级的几个学弟讲如何进行数据编程,我想他们之前肯定看了N遍书了,但就是不知道如何去把数据库、程序给连接起来。我当时,就是直接打开SQL Server Management Studio跟VS,直接告诉他们,先在SQL Server中创建一个用户(角色),再新建一个数据库,添加表。然后再VS中的web.config中添加一个connectstring作为连接字符串,再在程序中调用就好了,边讲边演示,他们学的效果也不错。(此处先省略N个想法)
三、如何写代码
我自己需C#的时候,就是先看的代码,遇到不会的了,直接google,从最基础的拼接代码开始,再到理解代码,最后到自己写代码。自己写完代码了,再看看,这些代码,是不是有公用的部分,这些公用的部分,能不能合在一起,放到同一个类中,以减少代码冗余。类的概念,这时候就出现了,什么叫类,该如何去写类,我认为,还是靠google,搜索一下,了解下相关的资料,再结合实践,深入了解下,好了,这样类就学得差不多了。
看到别人的什么dll,cs开始的那些using,感觉很好奇,那些东东是哪儿来的,我是不是自己也可以DIY个出来玩玩?答案是可以的。先google下,那些东东是神马,得到答案,类库,再google,类库可以在新建项目的时候,选择“类库”,就可以创建一个属于自己的类库。类库里的代码,跟其他的代码没有太大的区别,但要注意的是,只有public的才能被外部程序调用。类库写完了,F5调试下,咚,出来一个错误,说什么“不能启动什么什么的”,这是怎么回事呢?再次Google,原来是这样的,类库无法调试的,在弹出那个错误之前,dll文件已经生成好了,就在debug文件夹里呢。
这个dll,我能用到我的程序中么?当然是可以的。可是呢,在引用前,得先添加下引用,就在“解决资源管理器”中,有个“引用”,右击,添加引用,然后找到刚才那个dll,确定,好了,添加完引用了,可以直接在程序里调用了。
四、几点强调的
窗体、控件、函数的名称一定要按照一定的规范来命名,为了自己,也是为了别人能知道这是实现什么功能的窗体、控件、函数。
注释,能写就写吧,免得自己以后不知道这段代码是用来干嘛的(虽然我的代码里,从来没有注释这东东出现)。
版本控制,使用SVN进行代码托管吧。
五、总结
说了这么多,其实就是对我所经历过的所有的编程课程的一个总结,吸收老师们上课的精华,再结合自己的切身感受。我一直很不认同整节课,老师对着个PPT,照本宣科,老师这样做也可以,只是学生的反应只有两种,睡觉的睡觉,玩手机的玩手机(不对,还有种,逃课的逃课)……我觉得教编程的老师,最重要的,还是要把自己的经验讲授给学生,自己是怎么学的,在学习的过程中,遇到过哪些困难,又是如何去解决这些问题的。只有这样,才能启发学生,激发学生的兴趣,有了兴趣,什么都好办了。
PS。 还有好多想说,下次吧,敬请期待。下一篇说说怎么去吸收一个完整的程序,去学习别人的思路。
支持支持!很久没来看你
2012-12-17 07:52