抛弃C程序设计中的谬误与恶习(5)

//*****************************************

  创建时间:2014年9月28日星期日

  创建作者:XXX

//*****************************************


1、宏定义通常用在哪里:

//更多的是用在有常量的地方

比如#define N  10

Int  num[N] ;

2、函数接口的定义

比如这样写 search( int  name[10])

上面的10写的就没有意义,

Char name[N][8]这个参数中的N毫无意义,函数内的N则来的无缘无故,这是一个很大的毛病,它使得函数丧失通用性,而没有通用性的函数基本上就是废品函数。


3、函数内代码的变量定义的写法

Int func()

{

Int a = 0,b = 0,c = 0,d = 0; //注意变量定义最好写一排
}


4、针对一般代码的常见毛病

1) 标志变量的毛病,诸如上面的写法需要注意;

2) 函数设计的基本原则就是:完成单一的任务,不要让它企图有更多的作用,比如查找和输出

 

程序实例如下:


还是有关flag标志的使用,在代码中轻率的使用flag之类的标志变量只会败坏代码的风格,使得代码变馊。

使用flag标志变量的前提首先是解决问题的算法要求使用这样的变量,离开了这个前提,使用flag标志变量就不好。其次,更不应该生硬的为标志变量命名为flag ,

下面是大师写的经典代码,实现统计输入的行数、单词和字符数



4、鸡窝里飞出金凤凰

 

一般调用的函数接口声明要在main()函数的外面,如下所示:

#include <stdio.h>

Void inv( int x[]  ,  int  n) ;

Int main()

{

       //…….

}


代码中经常犯的错误,“一地鸡毛”!

在main()函数这样重要的地方忙活鸡毛蒜皮是庸人最擅长的事情。其原因在于:思想一直是在代码层面上爬行,而又缺乏代码重构的意识。这是违背结构化程序设计原则的一个报应。结构化程序设计要求“自顶向下”的思考,要达到这个境界,前提是要“站直了,别趴下”。一直趴着绝对写不出优雅,简洁的代码。优秀的代码首先要站得高,其次很讳忌把事情做“绝”。

下面代码的作用是:将数组中的n个整数按相反顺序存放


5、含糊之过、多做之过及乱做之过

孟子有句话:“以其昏昏,使人昭昭”。

 

比如这样一个程序:

有15个数按照由小到大的顺序存在一个数组中,输入一个数,要求用折半查找法找出该数是数组中的第几个元素的值。如果不存在该数组中,则输出“无此数”。

这里的数没有明确的定义,是整数还是分数还是小数?

 

二分法的核心思想在于每次只检查数组中间的元素是否是所查找的数据,如果不是则舍弃数组中的一半,另一半则构成了一个新的数组,再按照同样的步骤进行查找。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值