有关程序员水平的是一个很敏感的话题,我们常常碰到会听人说,某某编程水平很高,某某编程水平很低。似乎水平是靠听出来的。有的时候,朋友单位招人也会请我看看应聘者的水平如何。说真的,看一个人的编程水平不是一件容易的。程序员有两类,一类是能吹的,一类是不言的。吹的人往往海天湖地,容易给人看出破绽;而不声不响的人,你却很难判断其水平的高低。但是,程序员水平还是有一定规律的,水平高的人,必定是开发过许多大的项目,并且编程时间一定要在两年以上的。这个规律反过来是不正确的,很多时候你会发现那些参与过大项目的人、编程时间超过两年的人水平平平。
程序员的水平通过听其说,观其作,这两个方面就能大致来确定了。听比较简单,只要听他讲从事编程时间有多长,参加过多少大的项目,就能基本判定程序员的水平了。编程时间在两年以下的程序员只能是入门级的,没有做过大项目,也一定是水平一般,那些以兴趣编程者,水平更是一般。另外,听的过程中也可以判断出这个程序员头脑是否清晰,说话是否有条理,逻辑是否严密。这些也是程序员水平的重要方面。
看要相对比较复杂些。我要看一个人的水平如何,往往会请他把自己最得意的程序,拿出来。因为自己满意的程序或自己认为很重要的程序,往往反映他的编程水平。
我看别人程序比较快,下拉程序速度大约在1秒2行。如果程序在300行的话也就是3分钟左右。我看程序主要看一下几个方面:
1、 程序名命名
如果是主程序,则要看命名是否能反应项目主要特质?程序名是否中文?程序名是否是英文?程序名是否英文缩写?程序名是否为拼音?程序名是否无意义?程序名是否包含程序员姓名?程序名是否包含版本信息?如果是非主程序,则要看程序名是否和项目、模块有关联?
2、 函数命名
函数名是否是英文命名?函数名是否中文命名?函数名是否拼音命名?函数名是否英文拼音混合命名?如果是英文命名,英文是否准确?缩写是否正确?读者是否能够看懂。函数名是否能表示函数所要提供的功能?所有函数命名的风格是否一致?
3、 变量命名
变量名是否是英文命名?变量名是否中文命名?变量名是否拼音命名?变量名是否英文拼音混合命名?如果是英文命名,英文是否准确?缩写是否正确?读者是否能够看懂。变量名是否能表示变量要代表的内容?通过查看变量名能否确定变量的数据类型。所有变量命名风格是否一致?
4、 函数中的参数
函数中是否有参数?参数的次序是否具有逻辑性?参数命名如同变量命名。所有函数中的参数命名是否具有相同的风格?
5、 程序中全局变量
程序中有无全局变量?全局变量个数有多少?全局变量的是否以参数方式代入调用?
6、 函数中常量、变量值
在包含调用功能的函数中是否有常量和变量值?被调用函数中是否有常量和变量值。一个函数中是否有超过10行的变量赋值语句?
7、 函数的行数
一个函数的程序行数大于20-30行吗?
8、 函数的格式
函数有统一编写风格吗?函数头的格式一致吗?函数体风格一致吗?函数尾风格一致吗?语句开头对齐吗?语句的缩进空格一致吗?语句左右括号上下对齐吗?
9、 注释
程序中是否有注释?程序开头是否有注释?注释是否用英文?注释是否有用中文?是否每个函数开头都有注释?是否程序重要之处都有注释?
10、 可读性
读者必须需要程序员亲自解释才能看懂程序主要功能吗?读者有在看不懂情况下请程序员进行解释吗?读者是否不需要程序员亲自解释就能看懂程序的主要功能?
通过这个方面考察,在心里边给这个程序员打打分,基本上可以断定这个程序员的水平是高、是中、是低。至于这个程序做什么,有什么特别的技巧在这里就不太重要了。当然综合的评判还要结合听的结果。