法雷序列的c语言程序,程序设计实践(一).PDF

本文探讨了程序设计中的风格原则及其重要性,包括命名规范、表达式和语句的清晰书写等,通过实例展示了如何使用C、Java及C++实现良好的编程风格。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

程序设计实践(一)

程序设计实践(一):

风格、设计和实现

王新宇

2004.10.16

Outline

风格

原则

示例

设计和实践

马尔可夫链(Markov Chain)

C, JAVA, C++实现

风格

风格的主要作用就是使代码容易读,无

论是对程序员本人,还是对其他人。

好的风格对于好的程序设计具有关键性

作用。

风格

好程序

符合语法规则

修正错误

运行得足够快

实际应该做的远比这多

原则

根源于实际经验

不是随意的规则或者处方

应该

直截了当的逻辑

自然的表达式

通行的语言使用方式

有意义的名字

有帮助作用的注释

一致性

不应该

小聪明的花招

非正规的结构

名字

名字应该是非形式的、简练的、容易记

忆的,最好是能够拼读的

一个变量的作用域越大,名字所携带的

信息就应该越多

全局变量使用具有说明性的名字

名字

局部变量用短名字

按常规方式使用则可以采用极短的名字

i,j循环变量 p,q指针s,t字符串

for(theElementIndex=0;theElementIndex<

numberOfElements;theElementIndex++)

elementArray[theElementIndex]=

theElementIndex;//不好

for(i=0;i

elem[i]=i;

名字

匈牙利命名法

Char chGrade

BOOL bEnable

Int nLength

WORD wPos

LONG lOffset

DWORD dwRange

指针 pDoc

远指针 lpszName

32位字符串指针 lpszName

32位常量字符串指针 lpszName

Windows对象句柄 hWnd

名字

保持一致性

Class UserQueue{

int noOfItemsInQ, frontOfTheQueue,

queueCapacity;

public int noOfUsersInQueue(){…}

}//不一致

Class userQueue{

int nitems,front,capacity;

public int nusers(){…}

}

名字

函数采用动作性的名字(一般来说)

getTime()

名字

名字要准确

Public bool inTable(Object obj){

int j =this.getIndex(obj);

return (j==nTable);

}//返回结果与名字不符

名字

法雷序列实习中不好的名字

分子fenzi,分母fenmu

函数不采用动作形式

panduan(), judge(), huzhi(), yuefen(),

dividecheck(), gongyue()

表达式和语句

写最清晰的代码

通过给运算符两边加空格的方式说明分

组情况

通过格式化的方式来帮助阅读

表达式和语句

用缩行显示程序的结构

for(n=0;n<100;field[n++]=‘\0’);

*i=‘\0’;return(‘\n’);//不要在一行写多个语句

for(n=0;n<100;field[n++]=‘\0’)

;

*i=‘\0’;

return(‘\n’);

for(n=0;n<100; n++)

field[n]=‘\0’;

*i=‘\0’;

re

目 录 译者序 前言 第1章 风格 1 1.1 名字 2 1.2 表达式和语句 4 1.3 致性和习惯用 8 1.4 函数宏 14 1.5 神秘的数 15 1.6 注释 18 1.7 为何对此费心 22 第2章 算与数据结构 23 2.1 检索 23 2.2 排序 25 2.3 库 27 2.4 个Java快速排序 29 2.5 大O记 31 2.6 可增长数组 33 2.7 表 35 2.8 树 39 2.9 散列表 43 2.10 小结 46 第3章 设计与实现 48 3.1 马尔可夫链算 48 3.2 数据结构的选择 50 3.3 在C中构造数据结构 51 3.4 生成输出 54 3.5 Java 56 3.6 C++ 59 3.7 Awk和Perl 61 3.8 性能 63 3.9 经验教训 64 第4章 界面 67 4.1 逗号分隔的值 67 4.2 个原型库 69 4.3 为别人用的库 72 4.4 C++实现 79 4.5 界面原则 82 4.6 资源管理 84 4.7 终止、重试或失败 86 4.8 用户界面 90 第5章 排错 93 5.1 排错系统 94 5.2 好线索,简单错误 95 5.3 无线索,难办的错误 98 5.4 最后的手段 101 5.5 不可重现的错误 103 5.6 排错工具 105 5.7 其他人的程序错误 107 5.8 小结 108 第6章 测试 110 6.1 在编码过程中测试 110 6.2 系统化测试 114 6.3 测试自动化 118 6.4 测试台 120 6.5 应力测试 123 6.6 测试秘诀 125 6.7 谁来测试 126 6.8 测试马尔可夫程序 127 6.9 小结 129 第7章 性能 130 7.1 瓶颈 130 7.2 计时和轮廓 135 7.3 加速策略 138 7.4 代码调整 140 7.5 空间效率 144 7.6 估计 145 7.7 小结 147 第8章 可移植性 149 8.1 语言 149 8.2 头文件和库 154 8.3 程序组织 156 8.4 隔离 159 8.5 数据交换 160 8.6 字节序 161 8.7 可移植性和升级 164 8.8 国际化 165 8.9 小结 167 第9章 记 169 9.1 数据格式 169 9.2 正则表达式 174 9.3 可编程工具 180 9.4 解释器、编译器和虚拟机 182 9.5 写程序程序 186 9.6 用宏生成代码 189 9.7 运行中编译 190 后记 195 附录:规则汇编 197 索引 200
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值