Delphi的高手、中手、新手都来看看(From csdn 2002.5)(100分)

  • 主题发起人 主题发起人 blue_morning
  • 开始时间 开始时间
算了,不用争了。以后你们都这样写代码的呀:
if Edit1.Enable then

Button1.Enable := True
else
Button1.Enable := False;
可不要写成这种样子哦,真的很难懂的:
Button1.Enable := Edit1.Enable;
{真的很难懂吗?}
还有这篇文章是我写的,要骂就来骂我好了。“ary是猪,猪,猪。”爽了吧。
zlj555,真的是我呀。咱们在QQ上聊过的。
猪当然不知道什么是“ctrl+c”,不过猪知道emacs是没有这种功能的。而且猪能用上什么
好的电脑,当然是很在乎效率的。猪还知道要是写一个千兆交换机、路由器、防火墙之类
东东的软件的时候,猪会想法变成电脑去思考,不会蠢得象人一样的去思考。
你们真的知道猪是怎么思考的?看看下面吧。
http://joke.163.com/jokeshow/1/jokeshow,10347.shtml
 
大家不吵架。OK?
我不想像CSDN一样开始骂街。
 
同意cyhan,
最恨的就是这种人,故意在程序里卖弄技巧,然后就拍拍屁股走人,剩下一大堆
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
莫名其妙的代码等着折磨接班人。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
a==5 和 5==a 只和代码效率无关只是一种避免错误的一种好的风格
因为如果写 a==5 的人可能哪天写成 a=5 编译没问题可结果就有问题了
而写5==a的人永远也不会犯这样的错误,这是C独特的问题,pascal可没这样的问题
我好很少用c,不过前两天用VC就写了一行85分的代码,我是不是该沾沾自喜,
我是高手???瞎。。连我自己都不信
 
第一种:没有任何反应 得分:99分
第二种:将代码更改为以下形式 得分:90分
第三种:将代码更改为以下形式 得分:80分
依次类推:最后一种得零分
现在都什么年代了,还在玩这种小把戏。
要知道,程序不仅用来给机器看得,
更重要得是给人看得。
 
同意鲁小班,试问发贴者能否说出几种方式效率相差多少?做软件不是玩代码,
试问你认为的好的写法经过编译后的产生指令效率会更高吗?或许刚好相反.
 
Ary 能解释一下嘛??
我和同事把代码编译看了:
return(a==5?1:0)//三行
return(a==5)^(1==1)//四行
而且我们做了测试:
a=5返回0
a=1返回1
你晕了??
你的99分答案是错的??
 
5-10年后就再没有人讨论这个问题了,理由:
1:现在的rad开发工具越来越强,什么东西拿来用就可以了,将来的师弟师妹们可能
已经连make,link都不知道是什么了。
2:知道make,link的要么当了老板(当了老板还会要求程序的效率吗,反而好象越耗
资源的软件越值钱),要么就都离开软件行业了
 
玩一玩吧,大家不要认真,就这题本身而言没有意义,就是一种对待问题的态度!
 
有意思,dfw上的朋友越来越悬了。
为了这个问题争论不休,个人觉得不值!
记得在学c的时候,这些问题很重视。
但是在作系统时,这些都不重要了。关键是要写出易懂的代码。
这可为以后的维护工作做好伏笔。为开发团队的其他人想想吧?
 
程序是要重视效率,当什么事情不要太过了!
 
同意楼上,
 
如果只是单纯的提高一点敲击键盘的次数,我还是认为通俗易懂更重要特别是团队开发。就好比为了能少敲键盘就不写注释一样!
 
赞同
if (a == 5)
return 1;
else
return 0;
的人得100分
喜欢 #ifdef CompilerA
return (5 == a) + 1;
#else
return (5 == a);
#endif
的人得0分 要是我是老板 立马把他轰走
 
我要是老板,就让这些喜欢玩这类技巧的自恋者天天专门做代码优化
让他优化到郁闷而死
 
第一种:没有任何反应,觉得很好 得分:100分
第二种:将代码更改为以下形式 得分:90分
第三种:将代码更改为以下形式 得分:80分
依次类推:最后一种得零分
现在都什么年代了,还在玩这种小把戏。
要知道,程序不仅用来给机器看得,
更重要得是给人看得。
我们要的是程序的可读性和可靠性

如果你是参加最难理解的C++大会,可以这么评分
如果是招人,你简直是变态,根本不懂软件工程
如果我是老板,立刻把你开除,否则,由你作出
来的产品一定极其难以维护,错误百出!!
你太玩弄花招了,如果函数返回值定义为int
你返回 (a == 5);
BOOL值,简直是滥用C语言
根据返回值的定义,用软件工程的要求来看
if (a == 5)
return 1;
else
return 0;

return (a == 5);
是绝对不可以互换的!
如果函数返回值定义为int
if (a == 5)
return 1;
else
return 0;
是最好的代码!!!!!!!!!!!!!
如果函数返回值定义为BOOL
return (a == 5);
是最好的代码!!!!!!!!!!!!!
至于return (5 == a);不是所有人都认同的,这里还有一个
是否符合正常逻辑思维的问题

return (5 == a) + 1;
是禁止的,BOOL和整数相加,什么意思?
难道是靠TRUE为1吗?那干吗还定义BOOL类型、TRUE宏定义呀!!
我心目中的标准答案: 得分:99分
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
return (5 == a) ^ (1 == 1);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
这个答案很有意思,到底返回值是什么呢?
如果是BOOL,return (5 == a) 就可以,
如果是int显然应该是
if (a == 5)
return 1;
else
return 0;
顶多是
return (a == 5 ? 1:0);
各位想必现在也糊涂了吧,我也糊涂了。
1==1肯定是TRUE,当 a=5时,a==5也是TRUE,TURE ^ TURE = ?
1^1=0这个我知道,那TURE ^ TURE 应该也等于0吧?!可是
if(a == 5)
return 1;
else
return 0;
这段代码很明白,这是和return (5 == a) ^ (1 == 1);矛盾的呀?
我彻底糊涂了,99分的代码就是这样呀?
lldhz其实已经告诉大家这个99分的答案是错误的,看来他又在玩阴招了
你是在编软件,还是玩人呀?你的水平太低了(在软件工程上)!!!!
你顶多作个代码编写员(给我我还不要,这么难读的代码,风格这么差的
代码,逻辑思维这么混乱的的代码,我哪里敢要?我可不想找死)

你想玩花招?我问你,看到以下代码你是什么反应?
char * pChar = &8["You are Pig!"];
不懂吧,别在那里卖弄花招,我们要的不是华而不实的程序!!
 
我还是喜欢 return (5==a) 的风格,其实习惯了更容易看,就象你现在敲键盘想输入a字符
还需要想一下a在哪里吗?难道我们不能得出一个结论:不用想的比要想的在敲键盘的水平
上稍高一筹吗?这个问题换在这里也是一样的道理,这里强调:这也是一种很普通和常规的
写法,从可读性来说,有谁愿意看冗长的程序呢?说这种格式不容易阅读就好象你敲键盘还
要想一下,你所需要的是多多练习了.
 
看来我的心态越来越坏了,其实我应该对blue_morning的话一笑了之,
如果我觉得blue_morning说的是屁话,却去驳斥他,那也是屁话,因为
屁话是不需要驳斥的。可是我还是去驳斥他,还认为我的不是屁话,那
就是我有问题了。不过想想这家伙跑到Delphi这里来发表C的屁话,让
好多DFW上当(因为好多DFW是Delphi高手,而对C/C++不熟悉,所以被
他搞晕上当),就义愤填胸,就算是帮我们的DFW看清blue_morning的
本来面目吧!blue_morning说他玩了16年C,实际编了2年,我呢是玩了
12年C,编了10年,想想,你的看法和认识有点像10年前的我的看法,不
过我没有你那么变态,走极端,因为我始终把程序风格,可读性摆到很
重要的位置,效率问题主要体现在算法上,而不是这些花招,这些花招
对整个系统的效率没有任何意义,节约1个CPU时钟的时间,有意义吗?!
一个整数除以256,怎么写,10年前我会写
int b = a >> 8;
可是现在我绝对写成
int b = a / 256;
有两个原因,第一个是可读性更强,第二个就不说了。
各位大富翁,一定不要被他的思维带入歪门邪道,一定要清楚,我们代码的
好坏评价的标准是什么!!我们优先考虑是什么?当代码的可读性和效率冲
突时,我们的选择标准是什么?只有在这些前提下,才可以评价代码的好坏!!
 
to Tuatara:
至于return (5 == a);不是所有人都认同的,这里还有一个是否符合正常逻辑思维的问题
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
其实我的本意是return (a == 5);基本上所有的人都能看懂
而return (5 == a);并不是所有的人都习惯,当然,有一部分人是
习惯的,比如你。所以从这个角度出发return (5 == a);并不是一定
比return (a == 5);当如,从避免错误的角度说return (5 == a);肯定
比return (a == 5);更好些,我不会强迫你用return (a == 5);但你也
不可能让所有的人都认同return (a == 5);所谓你用你的,我用我的。
你可以看看VC++的源代码,这两种风格都大量同时存在
 
玩弄技巧可不是一种好的编程风格
你可以懂这些技巧, 但是在程序中搞这么花哨的技巧就是极其错误的编程风格
 
后退
顶部