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

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

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

  创建作者:XXX

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

 

本文档是我在阅读《抛弃C程序设计中的谬误与恶习》的一些学习笔记,觉得好的地方值得借鉴和编程,就写了下来,如果你有幸看到,并认为我所写值得你的反思和编程,那我所做的就是一件好事,值得快乐的事。

“以代码会友”

1、一个良好的输入代码

   While(scanf() , n<=0 || n> M)

类似于上面的代码,平时写的比较少,非常有用,在做项目或写算法时完全可以用的到

较之以前的写法,就非常的麻烦或者啰嗦,往往需要用多行语句来完成,而上面代码只需要一句即可。

 

2、从求10个学生的平均成绩这个程序来看编程过程中的一些细节

书中写到的错误叫做”颗粒度不均匀”。什么意思呢?

比如我写这样一段代码:

Int main()

{

       Int a = 0;

       If(a != 0)

{

Printf(“yes\n”);
}

   else

       printf(“no\n”);

return 0;
}

上面的代码就是颗粒度不均匀,意思就是在层次上一样的代码在写法上不一致。,表现就是{}的区别。

而在求10个学生的平均成绩的程序中,同样是这个问题,就是输入10个学生成绩在main()函数中实现,而求平均成绩和打印成绩却在别的函数中实现,这就成为了一种颗粒度不均匀的现象,也叫做“粗中有细”。

而真正的代码风格应该是输入也要封装在一个函数中。

大致过程如下:

以上代码好的地方在于:

数据结构简单,char c , 他不会漏掉统计回车换行符号,另外不用担心gets()带来的越界问题,并且不限于一行的个数

而gets()是有限制条件的。

针对gets()函数:少用,最好不用,取代的可以用fgets()

所以一个字符串的输出可以用ch = getchar()代替


4、舍近求远

比如经常见到的:把一个数组中的字符串拷贝到另一个数组中

问题是经常是代码啰嗦

完全可以这样精简:

While( (*p1++ = *p2++)  !=  ‘\0’)

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值