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的文档中有一些信息:很高兴指出这一点,我将确保按照设计使用它!