C语言的掌握情况,在于以下的分界线,
20行 200行 2000行 20000行 200000行,还有别的
attention:这个行数,不是你写了多少行程序决定的,而是大概这么长的一份源代码,你会写成什么样子。
1、20行,了解C语言基本的关键字,操作符.
这个大小的程序,体现不出来程序员的水平
2、200行,了解C语言的程序结构,就可以写出200行。
只要懂了ifelse,就可以写出200行的程序来。
这个级别的程序里,我见过200多行的一个函数,void进,void 出,程序里满了全局变量和
if,else ,&& ,||
这个时候就大概能看出一个人对C语言的掌握情况了,
PS:我个人认为,一个函数的长度应该控制在50行左右,因为一旦超过了这个长度,我们就无法清晰完成的考虑到
特殊情况的出现,但是50行以内的程序,我们基本可以考虑的周到,最重要的是不会遗漏条件。
稍微掌握好的,会对变量进行封装(哪怕只是简单的结构体),
整体程序能分成几个不同函数来进行。
你自己可以评估一下,20行和200行的程序,如果只是函数代码行数的差异,那你的水平就限定在200行。
程序越大,你的逻辑性就越复杂,只掌握这些基本用法的程序员,我不建议写超过200行的程序,因为一旦出现bug,
根本没有办法去定位错误点,后人也根本不敢更改你的程序。
3、2000行,了解C语言的数据封装,参数传递。
这个2000行,不是整个工程是2000行的,而是一个模块,一个单独的程序模块是2000行的规模。
其实在200行的和基础上,知道使用函数去完成基本简单的功能,哪怕是void Function(void),那你也可以把这2000行的程序去写完,
但是就像只有if else写的200行的程序,一旦出现问题,就没法定位,后人也没法更改。
这个级别的程序,必须学会掌握使用结构体进行相关变量的封装,合理使用函数的参数值和返回值,各种指针还有关键的对程序的分层次处理。
再复杂的问题,都可以拆分成简单的逻辑去完成,如何去组合和运用这些逻辑,就体现出来你能否驾驭2000行的程序,
PS:我个人认为,一个模块的基本长度应该在500行左右,超过这个长度,人就很难整体的去理解这个模块了,就像TCPIP协议一样,你是没有办法很快搞清楚七层协议的,但是你可以专门搞其中的一层,你可以搞的清楚。因为在那一层你只关心那一层)
所以你写了2000行的程序,整体至少分出三个层次来,各个层次之前有很清楚很明了的调用关系(这个地方的控制方式你可以理解为函数的参数和返回值,一般来说这个规模的函数传递就要使用指针了,因为内容太多了,必须封装,后面我会解释为何函数的参数尽量不要超过三个)。
4、20000行,这个规模的程序,都是为了给后人维护的。
一旦通过了2000函数的限制,20000的程序可以轻松写出来,200000行的程序也可以写出来,而且逻辑上并不会比2000行难理解多少,那我为何会把20000行作为一个里程碑提出来呢,因为这就涉及到了维护和扩展的问题。
能把2000行的程序写好(我说的不是能写出来),20000行的程序你自己可以维护,但是一个新人怎么维护,一个新人怎么借用你的程序,怎么扩展你的程序,20000行就会体现出差异来。
如果你要在20000行的程序上增加一个功能(大概2000行吧),有多少轮子需要他自己造,有多少内容他可以借鉴,这就看你能否把你的接口设计的合理了(如果能在2000行上得心应手,我觉得这也不会是问题)
那么问题来了,现在新人需要对你的20000行进行更改移植,这个时候,就能看出来你设计的20000行的好坏了,他需要更改那些内容,他更改的地方有多少,有多少相同的地方。
如果你能解决掉这些问题,那么你就可以轻松应对2万,20万行了。
5、最后一点
这一点不是通过你驾驭多少行代码决定的,而是你的算法,20000行能决定你是否是高手,但算法才是你高手的真正武器。