为什么 过程和函数 不都使用function做关键字 ( 积分: 3 )

  • 主题发起人 主题发起人 winni
  • 开始时间 开始时间
W

winni

Unregistered / Unconfirmed
GUEST, unregistred user!
过程和函数 的差别就是有没有返回值了, 都用 function 做关键字不是跟方便吗?

有返回值的叫函数,没有的叫过程。
 
过程和函数 的差别就是有没有返回值了, 都用 function 做关键字不是跟方便吗?

有返回值的叫函数,没有的叫过程。
 
晕,C++里面没返回值的还叫VOID呢!!!!!不区分怎么行?
 
百思不得其问。
 
这样就不够规范了,Pascal和C都是比较严谨,编译执行效率较高的语言
比如变量要事先声明类型,而在basic里就可以动态识别,但也会带来既不利于机器的编译执行效率,也不利于程序员的阅读(仅仅方便编写时),因为偷懒而造成混乱,并养成不好的编程习惯。
如果仅仅为了编写时的方便,而造成概念模糊,编译执行效率降低,是不可取的。
另外,既然有了这两种,就要养成良好的编程习惯,尽量不要在function里执行操作,主要用于计算。这样你的程序阅读和维护起来才会更加方便
 
百思不得其解。

为什么要区分? 难道“过程”和“函数”的差别不是有否返回值吗
 
既然有了这两种,就要养成良好的编程习惯,尽量不要在function里执行操作,主要用于计算。这样你的程序阅读和维护起来才会更加方便
混到一起了反而会造成程序结构混乱,既不利于阅读和维护,也不利于机器的编译执行效率

如果这都不能理解,你的皮包干嘛要分成几个袋子,全混到一起算了,这样在往里放东西时还更方便。
 
有名称了怎么会不好区分呢, procedure 难写啊。
分成两种有利于编译效率? 那分成3种不是更好了。
 
都用function统一了,更容易识别
 
而且有时候function不需要返回值了,上下都要改成procedure,极不方便
 
function主要用于计算的,你都不返回值了,说明一开始你的程序就可以分成函数和过程几部分,而你把他混到一个function里了,所以才会造成后来的不方便
 
你只考虑了你自己,甚至不考虑别人。许多程序在编写的时候都不是一个人完成的,是大家集体完成的。对于函数和过程,如果不区分字符,你在调用的时候,难道都去检查下哪些函数返回哪些没有?那对于分开写程序的人来说,是不是太麻烦了?特别是在项目开发过程中,不同小组都是分头工作的,他们可能只是约定了一个调用规范,但是你如果都统一了名称,我怎么知道你这个声明为function ABC的函数到底有没有返回值啊?难道我还得随时问你?区分后,你那边有变动我这边就编译不过,我就知道该修改了。比如,我的代码
if abc=true then
但如果这个function你哪天决定不让他有返回值了,你只要删除你function里面的return语句(比如说)可是我缺不知道你做了这个更改啊。另外你虽然不返回返回值,但是编译器就没法做安全检查了,显然上面的语句会造成混淆!
不要那么想当然的考虑问题,难道写VCL的程序员不如你这么聪明,不能想出来统一关键字这个“破”想法吗?

回家多学习下吧!!!!!!!
 
你可以不使用 procedure 这个关键字啊, 只用function 是没有问题的
 
to zqw0117
只用function也可以实现啊。 function(xxx):string; , 不只是去掉return语句,声明也要改,我把“:string”去掉,你那边也不能编译了。 一样嘛。


to lich
就是不能只用function,function强制需要返回值
 
procedure function 完全可以统一的
 
是可以统一的, 但更方便编译器发现错误
再者是历史原因, 大家习惯的东西是不能随便改的
 
那你直接用procedure啊,没什么不好的。
有返回值就这样写
procedure ABC(Arg1,Arg2: Integer; var Result: Boolean);
没有就
procedure Abc(Arg1,Arg2:Integer);
不就多改下var Result: Boolean;和你的删除:String异曲同工啊!如果你愿意,没人阻止你这么做。不过你既然可以去删除:string为什么就怕多一个步骤改function为procedure呢?

如果你的程序经常要修改某些函数要返回值不要返回值的话,我只能说,你的设计当初就是混乱的!我实在想不出我会经常做这个工作!呵呵
 
另外,建议你把你的建议发送给borland的工程师,也许他们觉得你的建议非常棒,奖励你一个正版delphi也说不定啊。[:)]祝你好运。
 
接受答案了.
 
后退
顶部