计算机等级考试四级网络工程师|计算机等级考试四级上机编程修养(中)
【shitiku.jxxyjl.com--学习资料】
1、版权和版本———————
好的程序员会给自己的每个函数,每个文件,都注上版权和版本。
对于c/c 的文件,文件头应该有类似这样的注释:
/************************************************************************
*
* 文件名:network.c
*
* 文件描述:网络通讯函数集
*
* 创建人: hao chen, 2003年2月3日
*
* 版本号:1.0
*
* 修改记录:
*
*
************************************************************************/
而对于函数来说,应该也有类似于这样的注释:
/*================================================================
*
* 函 数 名:xxx
*
* 参 数:
*
* type name [in] : descripts
*
* 功能描述:
*
* ..............
*
* 返 回 值:成功true,失败false
*
* 抛出异常:
*
* 作 者:chenhao 2003/4/2
*
*
================================================================*/
这样的描述可以让人对一个函数,一个文件有一个总体的认识,对代码的易读性和易维护
性有很大的好处。这是好的作品产生的开始。
2、缩进、空格、换行、空行、对齐
————————————————
i) 缩进应该是每个程序都会做的,只要学程序过程序就应该知道这个,但是我仍然看过不
缩进的程序,或是乱缩进的程序,如果你的公司还有写程序不缩进的程序员,请毫不犹豫
的开除他吧,并以破坏源码罪起诉他,还要他赔偿读过他程序的人的精神损失费。缩进,
这是不成文规矩,我再重提一下吧,一个缩进一般是一个tab键或是4个空格。(最好用tab
键)
ii) 空格。空格能给程序代来什么损失吗?没有,有效的利用空格可以让你的程序读进来
更加赏心悦目。而不一堆表达式挤在一起。看看下面的代码:
ha=(ha*128 *key )%tabptr->size;
ha = ( ha * 128 *key ) % tabptr->size;
有空格和没有空格的感觉不一样吧。一般来说,语句中要在各个操作符间加空格,函
数调用时,要以各个参数间加空格。如下面这种加空格的和不加的:
if ((hproc=openprocess(process_all_access,false,pid))==null){
}
if ( ( hproc = openprocess(process_all_access, false, pid) ) == null ){
}
iii) 换行。不要把语句都写在一行上,这样很不好。如:
for(i=0;i<len;i ) if((a[i]<’0’||a[i]>’9’)&&(a[i]<’a’||a[i]>’z’)) break;
我拷,这种即无空格,又无换行的程序在写什么啊?加上空格和换行吧。
for ( i=0; i<len; i ) {
if ( ( a[i] < ’0’ || a[i] > ’9’ ) &&
( a[i] < ’a’ || a[i] > ’z’ ) ) {
break;
}
}
好多了吧?有时候,函数参数多的时候,最好也换行,如:
createprocess(
null,
cmdbuf,
null,
null,
binhh,
dwcrtflags,
envbuf,
null,
&sistartinfo,
&prinfo
);
条件语句也应该在必要时换行:
if ( ch >= ’0’ || ch <= ’9’ ||
ch >= ’a’ || ch <= ’z’ ||
ch >= ’a’ || ch <= ’z’ )
iv) 空行。不要不加空行,空行可以区分不同的程序块,程序块间,最好加上空行。如:
handle hprocess;
process_t procinfo;
/* open the process handle */
if((hprocess = openprocess(process_all_access, false, pid)) == null)
{
return lse_misc_sys;
}
memset(&procinfo, 0, sizeof(procinfo));
procinfo.idproc = pid;
procinfo.hdproc = hprocess;
procinfo.misc |= msc***a_proc;
return(0);
v) 对齐。用tab键对齐你的一些变量的声明或注释,一样会让你的程序好看一些。如:
typedef struct _pt_man_t_ {
int numproc; /* number of processes */
int maxproc; /* max number of processes */
int maxproc; /* max number of processes */
int numevnt; /* number of events */
int maxevnt; /* max number of events */
handle* phndevnt; /* array of events */
dword timeout; /* time out interval */
handle hpipe; /* namedpipe */
tchar usr[maxusr];/* user name of the process */
int nummsg; /* number of message */
int msg[maxmsg];/* space for intro process communicate */
} pt_man_t;
怎么样?感觉不错吧。
这里主要讲述了如果写出让人赏心悦目的代码,好看的代码会让人的心情愉快,读起代码
也就不累,工整、整洁的程序代码,通常更让人欢迎,也更让人称道。现在的硬盘空间这
么大,不要让你的代码挤在一起,这样它们会抱怨你虐待它们的。好了,用“缩进、空格
、换行、空行、对齐”装饰你的代码吧,让他们从没有秩序的土匪中变成一排排整齐有秩
序的正规部队吧。
3、程序注释
——————
养成写程序注释的习惯,这是每个程序员所必须要做的工作。我看过那种几千行,却居然
没有一行注释的程序。这就如同在公路上驾车却没有路标一样。用不了多久,连自己都不
知道自己的意图了,还要花上几倍的时 间才看明白,这种浪费别人和自己的时 间的人,是
最为可耻的人。
是的,你也许会说,你会写注释,真的吗?注释的书写也能看出一个程序员的功底。一般
来说你需要至少写这些地方的注释:文件的注释、函数的注释、变量的注释、算法的注释
、功能块的程序注释。主要就是记录你这段程序是干什么的?你的意图是什么?你这个变
量是用来做什么的?等等。
不要以为注释好写,有一些算法是很难说或写出来的,只能意会,我承认有这种情况的时
候,但你也要写出来,正好可以训练一下自己的表达能力。而表达能力正是那种闷头搞技
术的技术人员最缺的,你有再高的技术,如果你表达能力不行,你的技术将不能得到充分
的发挥。因为,这是一个团队的时代。
好了,说几个注释的技术细节:
i) 对于行注释(“//”)比块注释(“/* */”)要好的说法,我并不是很同意。因为一
些老版本的c编译器并不支持行注释,所以为了你的程序的移植性,请你还是尽量使用块注
释。
ii) 你也许会为块注释的不能嵌套而不爽,那么你可以用预编译来完成这个功能。使用“#
if 0”和“#endif”括起来的代码,将不被编译,而且还可以嵌套。
4、函数的[in][out]参数
———————————
我经常看到这样的程序:
funcname(char* str)
{
int len = strlen(str);
.....
}
char*
getusername(struct user* puser)
{
return puser->name;
}
不!请不要这样做。
你应该先判断一下传进来的那个指针是不是为空。如果传进来的指针为空的话,那么,你
的一个大的系统就会因为这一个小的函数而崩溃。一种更好的技术是使用断言(assert)
,这里我就不多说这些技术细节了。当然,如果是在c 中,引用要比指针好得多,但你也
需要对各个参数进行检查。
写有参数的函数时,首要工作,就是要对传进来的所有参数进行合法性检查。而对于传出
的参数也应该进行检查,这个动作当然应该在函数的外部,也就是说,调用完一个函数后
,应该对其传出的值进行检查。
当然,检查会浪费一点时 间,但为了整个系统不至于出现“非法操作”或是“core dump”
的系统级的错误,多花这点时 间还是很值得的。
5、对系统调用的返回进行判断
——————————————
继续上一条,对于一些系统调用,比如打开文件,我经常看到,许多程序员对fopen返回的
指针不做任何判断,就直接使用了。然后发现文件的内容怎么也读出不,或是怎么也写不
进去。还是判断一下吧:
fp = fopen("log.txt", "a");
if ( fp == null ){
printf("error: open file error\n");
return false;
}
其它还有许多啦,比如:socket返回的socket号,malloc返回的内存。请对这些系统调用
返回的东西进行判断。
1、版权和版本
———————
好的程序员会给自己的每个函数,每个文件,都注上版权和版本。
对于c/c 的文件,文件头应该有类似这样的注释:
/************************************************************************
*
* 文件名:network.c
*
* 文件描述:网络通讯函数集
*
* 创建人: hao chen, 2003年2月3日
*
* 版本号:1.0
*
* 修改记录:
*
*
************************************************************************/
而对于函数来说,应该也有类似于这样的注释:
/*================================================================
*
* 函 数 名:xxx
*
* 参 数:
*
* type name [in] : descripts
*
* 功能描述:
*
* ..............
*
* 返 回 值:成功true,失败false
*
* 抛出异常:
*
* 作 者:chenhao 2003/4/2
*
*
================================================================*/
相关试题
- 计算机等级考试三级数据库好考吗|计算机等级考试(三级数据库管理)考试大纲
- 全国计算机等级考试二级python考试大纲_全国计算机等级考试(二级QB)考试大纲
- 计算机四级操作系统教材|计算机四级:操作系统整章问题及解答
- 关于word的实用小技巧|实用小技巧:解决Word页码设置问题
- 计算机等级考试一级ms office真题|计算机等级考试(一级MS Office)考试大纲
- 2016年毛笔等级考试|06年等级考试VB纲
- [计算机三级信息管理技术考什么]等级考试(三级信息管理技术)考试大纲
- 计算机等级考试四级网络工程师_计算机等级考试四级上机编程修养(上)
- [计算机等级考试一级考试内容]计算机等级考试一级考试练习(新大纲)(一)
- [创世纪100道问答题]软件工程的100道问答题
-
[计算机等级考试一级考试内容]计算机等级考试一级考试练习(新大纲)(一)详细阅读
一、选择题 1、在计算机领域中通常用mips来描述______。 a、计算机的运算速度 b、计算机的可靠性 c、计算机的可运行性 d、计算机的可扩充性 2、微型计算机存储系统中,prom是______。 a、可读写存储器 b、动态随机存取存储器 c、只读存储器 d、可编程只读存储器 3、按1616点...
-
[创世纪100道问答题]软件工程的100道问答题详细阅读
1、 什么是软件危机?产生软件危机的原因?怎样消除? 2、 什么是软件工程?包括哪些内容? 3、 软件生存周期包含哪些内容? 4、 软件开发模型有几种?各有什么特点? 7、 在软件开发的早期阶段,为什么要进行可行性研究?应该从哪些方面研究目标系统的可行性? 8、 一个软件开发系统的可行性研究报告应如...
-
计算机等级考试一级考试大纲|计算机等级考试(二级Fortran)考试大纲详细阅读
基本要求 1.具有计算机的基础知识。 2.了解操作系统的基本概念,掌握常用操作系统的使用。 3.掌握基本数据结构和常用算法,熟悉算法描述工具一流程图的使用。 4.能熟练地使用一种高级语言或数据库语言编写程序、调试程序。 考试内容 一、基础知识与基本操作 (一)基础知识 1.计算机系统...
-
【全国计算机等级考试真题(上机考试)】全国计算机等级考试上机考试应试技巧详细阅读
掌握好上机考试的应试技巧,可以使考生的实际水平在考试时得到充分发挥,从而取得较为理想的成绩。历次考试均有考生因为忽略了这一点,加之较为紧张的考场气氛影响了水平的发挥,致使考试成绩大大低于实际水平。因此每个考生在应试前,都应有充分的准备。 下面是本人从历次考试实践中总结出来的几点经验,...
-
[计算机等级考试三级考什么]计算机等级考试(三级PC技术)考试大纲详细阅读
基本要求 1 具有计算机及其应用的基础知识。 2 熟悉80x86微处理器的结构、原理及其宏汇编语言程序设计。 3 掌握个人计算机的工作原理及逻辑组成和物理结构。 4 掌握windows操作系统的主要功能、原理、配置及其维护管理。 5 熟悉个人计算机常用的外部设备的性能、原理及结构。...
-
[2021年全国计算机等级考试考试大纲目录]全国计算机等级考试(一级B)考试大纲详细阅读
基本要求 1 具有计算机的基础知识。 2 了解微型计算机系统的基本组成。 3 了解操作系统的基本功能,掌握windows的使用方法。 4 了解字表处理的基本知识,掌握windows环境下word和excel(或wps)的基本操作,熟练掌握一种汉字输入方法。 5 了解计算机网络的基本概念和...
-
【四级笔试分值分配】四级笔试复习重点分值分布详细阅读
计算机系统组成及工作原理 3 数据结构与算法 6 离散函数 8 操作系统 12 软件工程 11 数据库 12 计算机体系结构 7 计算机网络与通信 11 论述题一般都出现在以下四章(30分): 操作系统 软件工程 数据库 计算机网络与通信...
-
计算机等级考试一级考试内容_计算机等级考试一级考试练习(新大纲含答案)(二)详细阅读
一、选择题 1、下列软件中____一定是系统软件。 a、自编的一个c程序,功能是求解一个一元二次方程 b、windows操作系统 c、用汇编语言编写的一个练习程序 d、存储有计算机基本输入输出系统的rom芯片 2、在存储一个汉字内码的两个字节中,每个字节的最高位是_______。 a、1和1 b、1...
-
【2007年写字等级考试】2007年4月等级考试二级ACCESS考前密卷二(1)详细阅读
一、选择题(1)栈和队列的共同特点是a)都是先进先出b)都是先进后出c)只允许在端点处插入和删除元素d)没有共同点(2)已知二叉树后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是a)acbedb)decabc)deabcd)cedba(3)链表不具有的特点是a)...
-
【2007年写字等级考试】2007年4月等级考试二级ACCESS考前密卷二(2)详细阅读
(6)算法的时间复杂度是指 a)执行算法程序所需要的时间b)算法程序的长度c)算法执行过程中所需要的基本运算次数d)算法程序中的指令条数(7)软件生命周期中所花费用最多的阶段是a)详细设计b)软件编码c)软件测试d)软件维护(8)数据库管理系统dbms中用来定义模式、内模式和外模式的语言为a)cb...