2011-08-13 86 views
6

我的問題是語言超越,我經常發現「複製」函數的原型按順序定義參數:參數1:「目標」然後參數2:「源」。 這是在C例如memcpy的情況下,但它不是在bash上的文件複製的情況!你說,例如:「$ cp file file2」,其中file2是新文件。 這對我來說更有意義,我們總是說「請複製這裏的文字」而不是「拷貝在那裏」,這是尤達式的。哪個更適合「目的地,來源」或「來源,目的地」?

所以真正的問題是:一個好的API應該使用什麼形式(順序)?也許還有一個附屬問題:如果有的話,每個人都期待什麼形式?

+0

此問題已在此處提出。不過,我試圖找到它,幫助我。 :) – Shi

+0

我再也找不到答案了,所以我給出一個簡短的總結:x86彙編使用「mnemocode destination,source」,比如「mov ah,17h」,在學校我們學習到「y = 17 * x」,說話時我們說「y是17倍x」。在大多數(自然)語言中,主語都出現在動詞之前。再次,「y是17倍x」。但同時,如果你移動一個盒子,你會說,「把這個盒子移到牆壁旁邊」。在這種情況下,來源(「what」= subject)是第一個,而目的地是第二個。 – Shi

+0

@shi,注意當使用gas(GNU彙編器)時,它被顛倒了:'mv $ 17,%ah',所以我不確定這個彙編是否是一個好的參數。 –

回答

3

我期望消息來源先來,然後去目的地。

如果您可以在語言中消除歧義,那會更好。例如,在一個面向對象的語言:

source.copyTo(destination); 

在語言與命名參數:

copy(source: s, destination: d); 

重要的是使明確這是怎麼回事的人閱讀代碼。代碼通常比它寫的更多。

0

我一直比較喜歡source-destination(我從這裏推到這裏),但它也可能取決於調用。如果它只是你所指的'複製',我認爲這是有效的。我敢肯定還有其他的面向電話的來源將更適用於。