Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 常量、var、out参数的顺序重要吗?_Delphi_Delphi Xe7 - Fatal编程技术网

Delphi 常量、var、out参数的顺序重要吗?

Delphi 常量、var、out参数的顺序重要吗?,delphi,delphi-xe7,Delphi,Delphi Xe7,我正在重构一个大的过程,现在我得到了很多小的过程,函数和很多来回传递的参数。由于我希望保持相同/相似的性能和可维护的重构,我试图理解什么是最好的方法,这样我就不会破坏代码 这是这些新功能最常见的外观: function ProcessA(const ProjName,ProjPath:string; ProjID:integer; var ProjDest:string):string; function ProcessB(const ProjName,ProjPath:str

我正在重构一个大的过程,现在我得到了很多小的过程,函数和很多来回传递的参数。由于我希望保持相同/相似的性能和可维护的重构,我试图理解什么是最好的方法,这样我就不会破坏代码

这是这些新功能最常见的外观:

function ProcessA(const ProjName,ProjPath:string; 
   ProjID:integer; 
   var ProjDest:string):string;

function ProcessB(const ProjName,ProjPath:string; 
   const ProjID,ProjHID,ProjGID:integer; 
   var ProjDest:string; 
   out ProjDelPath:string):string;
我读了很多关于const,var,out参数的书。我应该先订购所有常量,然后订购所有正常值,然后订购var,最后订购

它们的顺序重要吗?


编辑:


为了澄清为什么会出现这个问题,或者是否有人使用了相同的方法,我使用了IDE的重构/提取方法功能,它做得很好,但它没有意义的参数。因此,当我重新排序和更改参数名称时,我看到了参数类型没有标准顺序的问题;默认参数(如
fn(浮动:单一;AInt:integer=0):整数;
),这意味着如果您对默认值满意,就不必为
AInt
传递任何内容。这些参数必须位于参数列表的末尾,并且只能从末尾省略。
您可以阅读更多有关参数的信息。

顺序并不重要,只需简单化即可。但您希望某些参数首先出现的原因往往是多方面的。例如,您可能希望输入参数先于输出参数。由您决定。具有默认值的常量和值参数必须出现在参数列表的末尾。否则你可以随心所欲。@DavidHeffernan是的,这也是我的想法,先输入,然后混合(var),最后输出。我使用重构/提取方法来帮助我做到这一点,每次我都需要对参数进行排序,因为它只是混淆了输入、输出参数,不好。所以,我想让它变得有意义,并且有点标准化。顺序在某种程度上确实很重要,因为它会影响哪些参数是使用CPU寄存器传递的,哪些参数是使用调用堆栈传递的。性能差异很小,但这可能很重要,具体取决于调用的上下文。@MikeTorrettinni:如果您搜索这些信息,这些信息很容易获得。Embarcadero的文档中有一些信息:很高兴指出这一点,我将确保按照设计使用它!