使用注释、空白符会影响程序的速度、大小或效率吗?
使用注释会影响程序的速度、大小或效率吗?
不会。当你的程序被编译时,所有的注释都会被忽略掉,只有可执行的语句才会被分析,并且被放入最终编译所得的程序版本中。因为注释并不会给程序的速度、大小或效率带来负担,所以你应该尽量多使用注释。你应该在每一个程序模块的头部都加上一段注释,以解释该模块的作用和有关的特殊事项。同样,你也要为每一个函数加上注释,其中应包括作者姓名、编写日期、修改日期和原因、参数使用指导、函数描述等信息。这些信息将帮助其它程序员更好地理解你的程序,也有助于你以后回忆起一些关键的实现思想。
在源代码中也应该使用注释(在语句之间)。例如,如果有一部分代码比较复杂,或者你觉得有些地方要进一步说明,你就应该毫不犹豫地在这些代码中加入注释。这样做可能会花费一点时间,但这将为你或其它人节省几个小时的宝贵时间,因为只需看一下注释,人们就能马上知道你的意图。
在19.4中有一个例子,它表明了使用注释、空白符和下划线命名规则是如伺使程序更清晰、更易懂的。
使用空白符会影响程序的速度、大小或效率吗?
不会。与注释一样,所有的空白符都会被编译程序忽略掉。当你的程序被编译时,所有的空白符都会忽略掉,只有可执行的语句才会被分析,并且被放入最终编译所得的程序版本中。在C程序中用空白符隔开可执行语句、函数和注释等,将有助于提高程序的可读性和清晰度。许多时候,只要在语句之间加入空行,就可提高程序的可读性。请看下面的这段代码:
/ * clcpy by GBlansten * /
void clcpy(EMP * e,int rh,int ot)
{ e->grspy= (e->rt * rh)+ (e->rt * ot * 1.5) ;
e->txamt = e->grspy * e->txrt ;
e->ntpy = e->grspy-e->txamt ;
updacctdata (e);
if (e->dd= =false) cutpyck(e) ;
else prtstb (e) ; }
你可以看到,这个函数确实是一团糟。尽管这个函数显然是正确的,但恐怕这个世界上没有一个程序员愿意去维护这样的代码。如果采用本章中的一些命名规则(例如使用下划线,少用一些短而模糊的名字),使用一些大括号技巧,加入一些空白符和注释,那么这个函数将会是下面这个样子:
/********************************************************************************/
Function Name: calc_pay
Parameters: emp -EMPLOYEE pointer that points to employee data
reg-hours -The number of regular hours (<=40) employee
has worked
ot-hours -The number of overtime hours (>40) employee
has worked
Author : Gern Blansten
Date Written: 13 dec 1993
Modification: 04 sep 1994 by Lloyd E. Work
-Rewrote function to make it readable by human beings.
Description: This function calculates an employee's gross bay ,tax
amount, and net pay, and either prints a paycheck for the
employee or (in the case of those who have direct deposit)
prints a paycheck stub.
/*********************************************************************************/
void calc_pay (EMPLOYEE * emp, int reg hours, int or_hours)
{
/ * gross_pay = (employee rate * regular hours)+
(employee rate * overtime hours * 1.5) * /
emp->gross_pay= (emp->rate * reg_hours) +
(emp->rate * ot hours* 1.5);
/ * tax amount=gross_pay * employee's tax rate * /
emp->tax amount=emp->gross_pay * emp->tax-rate ;
/ * net pay=gross pay-tax amount * /
emp->net-pay=emp->gross pay-emp->tax_amount ;
/ * update the accounting data * /
update accounting data(emp);
/ * check for direct deposit * /
if (emp->direct_deposit= =false)
cut_ paycheck(emp); / * print a paycheck * /
else
print_paystub(emp); /* print a paycheck stub * /
}
你可以看到,Lloyd版本(该版本中使用了大量的注释、空行、描述性变量名等)的可读性比糟糕的Gern版本要强得多。你应该尽量在你认为合适的地方使用空白符(和注释符等),这将大大提高程序的可读性一一当然,这可能会延长你的工作时间。