【发布时间】:2016-03-12 15:02:08
【问题描述】:
我正在重构一个大过程,现在我得到了很多小过程,函数有很多来回传递的参数。由于我想保持相同/相似的性能和可维护的重构,我试图了解什么是最好的方法,这样我就不会破坏代码。
这是这些新功能最常见的外观:
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 参数的信息。我是否应该先将它们全部订购 const,然后全部订购正常,然后 var 并最后...
它们的顺序重要吗?
编辑:
为了澄清问题的原因或是否有人使用相同的 this,我使用了 IDE 的 Refactor/Extract Method 功能,该功能做得很好,但它对放置的参数没有任何意义。因此,当我重新排序和更改参数名称时,我发现了参数类型没有标准顺序的问题。
【问题讨论】:
-
顺序并不重要。但是,您希望某些参数首先出现通常是有原因的。例如,您可能需要在输出参数之前输入参数。这取决于你。
-
具有默认值的常量和值参数必须出现在参数列表的末尾。否则你可以随心所欲。
-
@DavidHeffernan 是的,这也是我的想法,首先输入然后混合(var)并最后输出。我使用 Refactor/Extract 方法 来帮助我,我每次都需要对参数进行排序,因为它只是混淆了输入、输出参数,不好。所以,我想让它变得有意义和标准化。
-
顺序在某种程度上确实很重要,因为它会影响使用 CPU 寄存器传递的参数以及使用调用堆栈传递的参数。性能差异很小,但可能很重要,具体取决于调用的上下文。
-
@MikeTorrettinni:如果您搜索该信息,则很容易获得。 Embarcadero 的文档中有一些信息:Calling Conventions
标签: delphi delphi-xe7