| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5108 人关注过本帖
标题:代码的可读性和效率之间,哪个更重要
只看楼主 加入收藏
snailqiu
Rank: 2
等 级:论坛游民
帖 子:59
专家分:45
注 册:2007-9-26
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:23 
代码的可读性和效率之间,哪个更重要
例如:while (*p++=*q++);这样的代码除了装逼之外,是不是没有什么用
是不是不如换成: while(*p = *q)
                    {
                       p++;
                       q++;
                     }
虽然繁琐一些,但看着是那么一目了然,清楚明白。
2016-02-23 19:52
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
收藏
得分:2 
我个人觉得可读性更重要,学习东西要知其然后知所以然,才能更进一步,这样利于理解学习。不过中国的应试教育就搞那些乱七八糟的东西,没办法。

   唯实惟新 至诚致志
2016-02-23 19:57
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:2 
学得太少,想得太多
初学者要谦虚,这两段代码不等价
2016-02-23 22:19
q201q5
Rank: 1
等 级:新手上路
帖 子:14
专家分:3
注 册:2016-2-23
收藏
得分:2 
我个人觉得while ((*p++ = *q++)); 好些,这代码一眼就能看出是做什么的,下面那段也是一眼就能看出来的,但是要好几行,没有前面的紧凑。含有确实2段代码是不等价的。
2016-02-23 22:23
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:2 
可以尽力做到既有效率又有可读性的

如果必然相悖的话,优先可读性。

ps:个人认为前面那段代码可读性并不差,一眼就看得懂。


[此贴子已经被作者于2016-2-24 09:12编辑过]



[fly]存在即是合理[/fly]
2016-02-24 09:10
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:2 
以下是引用rjsp在2016-2-23 22:19:14的发言:


这两段代码不等价



我觉得代码好像基本上差不多吧  看看ida抓拍下来的反代码

代码A
程序代码:
do
  {
    *(_DWORD *)p = *(_DWORD *)q;
    v1 = *(_DWORD *)p;
    p = (char *)p + 4;
    q = (char *)q + 4;
  }
  while ( v1 );

 



代码B

程序代码:

 while ( 1 )
  {
    *(_DWORD *)p = *(_DWORD *)q;
    if ( !*(_DWORD *)p )
      break;
    p = (char *)p + 4;
    q = (char *)q + 4;
  }



DO IT YOURSELF !
2016-02-24 10:08
拉链
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:107
专家分:534
注 册:2016-1-22
收藏
得分:2 
1,没有什么代码可读性强。即使是自己写的,没注释也要看半天。
2,代码简练不等于执行效率高。
3,等你熟练掌握了,你也会使用精练的完成同样功能的语句,你就会明白这不是装逼。
个人观点,欢迎指正!
2016-02-24 10:18
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
回复 6楼 wp231957
“差不多”也是不等价呀^_^
前者,无论表达式值为多少,都导致p/q自增;而后者则不
2016-02-24 10:54
拉链
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:107
专家分:534
注 册:2016-1-22
收藏
得分:0 
回复 8楼 rjsp
2016-02-24 11:09
书生牛犊
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:星夜征程
等 级:贵宾
威 望:10
帖 子:1101
专家分:5265
注 册:2015-10-27
收藏
得分:2 
回复 8楼 rjsp
我想知道一下这里的while(*p++=*q++),while的判断条件是什么?是不是先把*q赋值给*p,在判断*p!=0

φ(゜▽゜*)♪
2016-02-24 13:28
快速回复:代码的可读性和效率之间,哪个更重要
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025015 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved