Api “哪个更好?”;“目的地、来源”;或;来源、目的地;?

Api “哪个更好?”;“目的地、来源”;或;来源、目的地;?,api,copy,Api,Copy,我的问题是语言超越性,我经常发现“复制”函数的原型按顺序定义参数:argument1:“目的地”然后argument2:“源”。 例如,在C中是memcpy的情况,但在bash上不是文件复制的情况!您可以说,例如:“$cp file file2”,其中file2是新文件。 这对我来说更有意义,我们总是说“请在这里复制文本”,而不是“在这里复制文本”,这是尤达式的 所以真正的问题是:一个好的API应该使用什么形式(顺序)?也许还有另一个附属问题:如果有,每个人都期望什么样的形式?我希望源放在第一位

我的问题是语言超越性,我经常发现“复制”函数的原型按顺序定义参数:argument1:“目的地”然后argument2:“源”。 例如,在C中是memcpy的情况,但在bash上不是文件复制的情况!您可以说,例如:“$cp file file2”,其中file2是新文件。 这对我来说更有意义,我们总是说“请在这里复制文本”,而不是“在这里复制文本”,这是尤达式的


所以真正的问题是:一个好的API应该使用什么形式(顺序)?也许还有另一个附属问题:如果有,每个人都期望什么样的形式?

我希望源放在第一位,目标放在第二位

如果你能在语言中消除歧义,那就更好了。例如,在OO语言中:

source.copyTo(destination);
在具有命名参数的语言中:

copy(source: s, destination: d);

重要的是要弄清楚阅读代码的人在做什么。代码读起来比写起来更频繁。

我一直更喜欢源目的地(我从这里推到这里),但它可能也取决于调用。如果你指的只是“复制品”,我认为这很有效。我相信dest source会更好地应用其他面向拉的调用。

这里已经提出了这个问题。不过,我正在努力找到它,请帮帮我。:)我再也找不到答案了,所以我给出了一个简短的总结:x86汇编使用“mnemocodedestination,source”,比如“mov-ah,17h”,在学校里我们知道“y=17*x”,在说话时我们说“y是17乘以x”。在大多数(自然)语言中,主语在动词之前。同样,“y是x的17倍”。但同时,如果你移动一个盒子,你会说,“把这个盒子移到墙边。”。在这种情况下,源(“what”=subject)是第一个,目标是第二个。@shi,请注意,当使用gas(GNU汇编程序)时,它是反向的:
mv$17,%ah
,所以我不确定汇编是否是一个好的参数。