📄 c programing practice.htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0040)http://www.ddvip.net/program/c/jq/35.htm -->
<HTML><HEAD><TITLE>豆豆技术网--C 编程最佳实践</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312"><LINK
href="豆豆技术网--C 编程最佳实践.files/css.css" type=text/css rel=stylesheet>
<STYLE type=text/css>.style1 {
COLOR: #0000ff
}
</STYLE>
<SCRIPT language=JavaScript>
function GetContentWnd(){ return parent; }
function OnSave(){
var oWnd = GetContentWnd();
window.external.addFavorite( oWnd.location.href, oWnd.document.title );
}
</SCRIPT>
<META content="MSHTML 6.00.2800.1106" name=GENERATOR></HEAD>
<BODY leftMargin=0 topMargin=5 marginheight="5">
<TABLE cellSpacing=0 cellPadding=0 width=750 align=center border=0>
<TBODY>
<TR>
<TD colSpan=8>
<TABLE cellSpacing=0 cellPadding=0 width=750 align=center border=0>
<TBODY>
<TR>
<TD vAlign=top align=right height=30><A class=a01
href="http://www.ddvip.net/">主站首页 </A><SPAN class=point1>●</SPAN> <A
href="http://vip.ddvip.net/"><FONT color=#ff0000>视频下载
</FONT></A><SPAN class=point1>●</SPAN> <A class=a01
href="http://book.ddvip.net/">书籍下载 </A><SPAN class=point1>●</SPAN>
<A class=a01 href="http://soft.ddvip.net/">软件下载 </A><SPAN
class=point1>●</SPAN> <A class=a01 href="http://bbs.ddvip.net/">论坛交流
</A><SPAN class=point1>●</SPAN> <A class=a01
href="http://yl.ddvip.net/">综合娱乐 </A><SPAN class=point1>●</SPAN> <A
class=a01 href="http://www.ddvip.net/search.asp">站内搜索 </A><SPAN
class=point1>●</SPAN> <A class=a01
href="http://www.ddvip.net/map.asp">网站地图</A></TD></TR></TBODY></TABLE></TD></TR>
<TR align=middle>
<TD colSpan=8 height=80>
<OBJECT
codeBase=http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0
height=80 width=750 classid=clsid:D27CDB6E-AE6D-11cf-96B8-444553540000><PARAM NAME="movie" VALUE="../../images/ad.swf"><PARAM NAME="quality" VALUE="high">
<embed src="../../images/ad.swf" quality="high"
pluginspage="http://www.macromedia.com/go/getflashplayer"
type="application/x-shockwave-flash" width="750" height="80"></embed>
</OBJECT></TD></TR>
<TR>
<TD align=left width=85 height=30><IMG height=30
src="豆豆技术网--C 编程最佳实践.files/teachonline.gif" width=85></TD>
<TD align=left width=85><A href="javascript:OnSave();"><IMG height=30
src="豆豆技术网--C 编程最佳实践.files/add.gif" width=85 border=0></A></TD>
<TD vAlign=top align=right width=8><IMG height=8
src="豆豆技术网--C 编程最佳实践.files/bg3-1.gif" width=8></TD>
<TD vAlign=bottom align=left width=8 bgColor=#cbe6fe height=30><IMG
height=8 src="豆豆技术网--C 编程最佳实践.files/bg4-1.gif" width=8></TD>
<TD class="style1 menu" width=448 bgColor=#cbe6fe height=30>
<MARQUEE>豆豆技术网----中国最大的计算机教程网,伴你学习,助你成长的良师益友!</MARQUEE></TD>
<TD vAlign=bottom align=middle width=8 bgColor=#cbe6fe><IMG height=8
src="豆豆技术网--C 编程最佳实践.files/bg4-2.gif" width=8></TD>
<TD vAlign=top align=left width=8><IMG height=8
src="豆豆技术网--C 编程最佳实践.files/bg3-2.gif" width=8></TD>
<TD width=100><A href="http://www.ddvip.net/program/c/index3.asp"><IMG
height=30 src="豆豆技术网--C 编程最佳实践.files/pre.gif" width=100
border=0></A></TD></TR>
<TR>
<TD colSpan=8>
<TABLE cellSpacing=0 cellPadding=0 width=750 border=0>
<TBODY>
<TR>
<TD vAlign=center align=middle height=50><STRONG>C
编程最佳实践</STRONG></TD></TR>
<TR>
<TD>
<TABLE cellSpacing=0 cellPadding=0 width=740 align=right border=0>
<TBODY>
<TR>
<TD width=100 height=20> </TD>
<TD class=top vAlign=bottom align=middle width=620
height=30>作者:未知 更新人:legume 来源:不详 更新时间:2004-06-03 投稿信箱:
tg*ddvip.com </TD>
<TD vAlign=center align=right width=20 height=30><IMG
height=30 src="豆豆技术网--C 编程最佳实践.files/bg1.gif" width=20></TD></TR>
<TR>
<TD width=720 colSpan=2></TD>
<TD width=20 background="豆豆技术网--C 编程最佳实践.files/bg2.htm"></TD></TR>
<TR>
<TD align=left width=720 colSpan=2><BR>级别:中级 <BR><BR>作者 : Shiv
Dutta (<A
href="http://www.ddvip.net/program/c/jq/sdutta@us.ibm.com">http://www.ddvip.net/program/c/jq/sdutta@us.ibm.com</A>
),技术顾问,IBM <BR>Gary Hook (<A
href="http://www.ddvip.net/program/c/jq/ghook@us.ibm.com">http://www.ddvip.net/program/c/jq/ghook@us.ibm.com</A>
),高级技术顾问,IBM <BR><BR>尽管 C 语言问世已近 30 年,但它的魅力仍未减退。C
语言继续吸引着众多的人们,他们为了编写新的应用程序,或者移植或维护现有的应用程序而必须学习新技能。
<BR><BR><B>简介</B>
<BR>本文是为了满足开发人员的需要而写的。我们总结了一套指南,无论作为开发人员还是顾问,这些指南多年来一直都很好地指导着我们,我们把它们作为建议提供给您,希望对您的工作有所帮助。您也许不赞同其中的某些指南,但我们希望您会喜欢其中的一些并在您的编程或移植项目中使用它们。
<BR><BR><B>风格与指南</B>
<BR>使用一种使代码具有可读性和一致性的源代码风格。如果没有团队代码风格或自己的风格,您可以使用与大多数 C 程序员采用的
Kernighan 和 Ritchie 风格相似的风格。然而,举一个极端的例子,有可能最终会写出与下面相似的代码:
<BR><BR>
<TABLE cellSpacing=0 cellPadding=5 width=450 bgColor=#cccccc
border=1>
<TBODY>
<TR>
<TD><PRE>int i;main(){for(;i["]<i;++i){--i;}"];read('-'-'-',i+++"hell\ <BR> o, world!\n",'/'/'/'));}read(j,i,p){write(j/p+p,i---j,i/i);</PRE></TD></TR></TBODY></TABLE><BR><BR>—
1984 年模糊 C 代码大赛“差劲奖”。应代码作者要求匿名。 <BR>通常将主例程定义为 main() 。对应的 ANSI
编写方式是 int main(void) (如果不考虑命令行参数的话)或 int main( int argc, char
**argv ) 。ANSI 以前的编译器会省略 void 声明,或列出变量名以及紧随其后的声明。 <BR><BR>空格
<BR><BR>充分利用水平和垂直空格。缩进和空格间距应反映出代码的块结构。
<BR><BR>应将条件运算符的长字符串分割成单独的几行。例如: <BR><BR>
<TABLE cellSpacing=0 cellPadding=5 width=450 bgColor=#cccccc
border=1>
<TBODY>
<TR>
<TD><PRE>if (foo->next==NULL && number < limit && limit <=SIZE <BR> && node_active(this_input)) {...</PRE></TD></TR></TBODY></TABLE><BR><BR>最好改成:
<BR><BR>
<TABLE cellSpacing=0 cellPadding=5 width=450 bgColor=#cccccc
border=1>
<TBODY>
<TR>
<TD><PRE>if (foo->next == NULL <BR> && number < limit && limit <= SIZE <BR> && node_active(this_input)) <BR> { <BR> ...</PRE></TD></TR></TBODY></TABLE><BR><BR>同样,应将描述得很详细的
for 循环 分割成不同的行: <BR><BR>
<TABLE cellSpacing=0 cellPadding=5 width=450 bgColor=#cccccc
border=1>
<TBODY>
<TR>
<TD><PRE>for (curr = *varp, trail = varp; <BR> curr != NULL; <BR> trail = &(curr->next), curr = curr->next ) <BR> { <BR> ...</PRE></TD></TR></TBODY></TABLE><BR><BR>对于其它复杂表达式(如使用三元运算符
?: 的表达式),最好也将其分割成数行。 <BR><BR>
<TABLE cellSpacing=0 cellPadding=5 width=450 bgColor=#cccccc
border=1>
<TBODY>
<TR>
<TD><PRE>z = (x == y) <BR> ? n + f(x) <BR> : f(y) - n;</PRE></TD></TR></TBODY></TABLE><BR><BR>注释
<BR><BR>注释应描述正在发生什么事、如何完成它、参数表示什么、使用了哪些全局变量以及任何限制或错误。但要避免不必要的注释。如果代码比较清晰,并且使用了良好的变量名,那么它应该能够较好地说明自身。因为编译器不检查注释,所以不保证它们是正确的。与代码不一致的注释会起到相反的作用。过多的注释会使代码混乱。
<BR><BR>下面是一种多余的注释风格: <BR><BR>
<TABLE cellSpacing=0 cellPadding=5 width=450 bgColor=#cccccc
border=1>
<TBODY>
<TR>
<TD><PRE>i=i+1; /* Add one to i */</PRE></TD></TR></TBODY></TABLE><BR><BR>很明显变量
i递增了 1。还有更糟的注释方法: <BR><BR>
<TABLE cellSpacing=0 cellPadding=5 width=450 bgColor=#cccccc
border=1>
<TBODY>
<TR>
<TD><PRE> <BR> /************************************ <BR> * * <BR> * Add one to i * <BR> * * <BR> ************************************/ <BR> <BR> i=i+1;</PRE></TD></TR></TBODY></TABLE><BR><BR>命名约定
<BR><BR>具有前导和尾随下划线的名称是为系统用途而保留的,不应当用于任何用户创建的名称。约定规定:
<BR>#define 常量应全部大写。 <BR>enum 常量应以大写字母开头或全部大写。
<BR>函数、类型定义(typedef)和变量名以及结构(struct)、联合(union)和枚举(enum)标记名称应小写。
<BR><BR>为清晰起见,避免使用仅在大小写上有区别的名称,如 foo 和 Foo。同样,避免使用 foobar 和
foo_bar
这样的名称。避免使用看上去相似的名称。在许多终端和打印机上,“l”、“1”和“I”看上去非常相似。使用名为“l”的变量非常不明智,因为它看上去非常象常量“1”。
<BR>变量名
<BR><BR>选择变量名时,长度不重要,但清晰的表达很重要。长名称可用于全局变量,因为它不常用,而将在每行循环上要使用的数组下标命名为
i
就完全够了。如果使用“index”或“elementnumber”的话,不仅输入得更多,而且会使计算的细节不明确。如果使用长变量名,有时候会使代码更难理解。比较:
<BR><BR>
<TABLE cellSpacing=0 cellPadding=5 width=450 bgColor=#cccccc
border=1>
<TBODY>
<TR>
<TD><PRE>for(i=0 to 100) <BR> array[i]=0</PRE></TD></TR></TBODY></TABLE><BR><BR>和
<BR><BR>
<TABLE cellSpacing=0 cellPadding=5 width=450 bgColor=#cccccc
border=1>
<TBODY>
<TR>
<TD><PRE>for(elementnumber=0 to 100) <BR> array[elementnumber]=0;</PRE></TD></TR></TBODY></TABLE><BR><BR>函数名
<BR><BR>函数名应反映函数执行什么操作以及返回什么内容。函数在表达式中使用,通常用于 if
子句,因此它们的意图应一目了然。例如: <BR><BR>
<TABLE cellSpacing=0 cellPadding=5 width=450 bgColor=#cccccc
border=1>
<TBODY>
<TR>
<TD><PRE>if (checksize(x))</PRE></TD></TR></TBODY></TABLE><BR><BR>没有帮助作用,因为它没有告诉我们
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -