Language agnostic 什么是函数的常见且合理的参数顺序?
假设它们都是强制性的:Language agnostic 什么是函数的常见且合理的参数顺序?,language-agnostic,function,coding-style,parameter-passing,Language Agnostic,Function,Coding Style,Parameter Passing,假设它们都是强制性的: function search (haystack, needle) function search (needle, haystack) function placeObject (object, column, row) function placeObject (column, row, object) function newObject (parent, width, height, isVisible) function newObject (isVisi
function search (haystack, needle)
function search (needle, haystack)
function placeObject (object, column, row)
function placeObject (column, row, object)
function newObject (parent, width, height, isVisible)
function newObject (isVisible, width, height, parent)
function newObject (width, height, isVisible, parent)
我认为这通常是个人选择的问题,应该在整个项目中保持一致。但我想知道是否有更深层的逻辑来决定每种情况的顺序。我能想到一些事情,尽管没有一件是“规则”。它们只是我觉得方便的东西
MOV
指令中的操作数顺序或C标准库strcmp
函数的顺序参数)绘制线(画布,x0,y0,x1,y1)
而不是绘制线(x0,y0,x1,y1,画布)
如果您的语言支持关键字参数,通常最好使用它们(除非参数和顺序非常明显)。我感觉通常的逻辑是时间的函数。你看,如果你有一个函数:
public Pizza makePizza(cheese, sauce){}
然后创建一个变量,用于确定数组中的顶部编号:
int toppingNo = 3;
你可能也想把它发送到你的函数中,对吗
public Pizza makePizza(cheese, sauce, topping){}
我的儿子,这就是参数的诞生
撇开讽刺不谈,我总是这么做的,除非你有一些参数因为它们的相似性而需要分组,比如坐标系。试着说出预期的调用
function search (needle, haystack)
大海捞针
function placeObject (object, column, row)
将对象放置在(列、行)
newObject
很难:尽量使它与您的框架保持一致,如果有的话,将公共参数放在第一位。我之所以把isVisible
放在最后,是因为它是布尔型的,而且很难从布尔型文字推断它的作用。对于多个布尔值,我更喜欢将它们组合成整数类型的flags对象,使用位掩码(或键值字典或字符串,取决于语言)构建,以获得可读性:
openFile(path, READ | LOCKED | COMPRESSED | ...)
你说得对,一致性是问题的关键+1。这必须提供见解。