2011-08-13 5 views
6

제 질문은 초월한 언어입니다. "copy"함수의 프로토 타입이 argument1 : "destination", "argument2 :"source "순서로 매개 변수를 정의하는 경우가 많습니다. 예를 들어 C에서 memcpy의 경우입니다.하지만 bash에서 파일 복사의 경우는 아닙니다! 예를 들면 다음과 같습니다. "$ cp file2"여기서 file2는 새 파일입니다. 나에게 훨씬 더 의미있는 것은, 우리는 항상 "그 텍스트를 여기에 복사하십시오"라고 말하고 "여기에 텍스트를 복사하지 마십시오"는 요다 식으로 말합니다."대상, 소스"또는 "소스, 대상"이 더 낫습니까?

그렇다면 좋은 API는 어떤 형식 (순서)을 사용해야합니까? 어쩌면 또 다른 부수적 인 질문이있을 것입니다.

+0

이 질문은 이미 여기에 요청되었습니다. 그래도 그것을 찾으려고 노력하고 있습니다. :) – Shi

+0

나는 대답을 더 이상 찾지 못한다. 그래서 나는 x86 어셈블리가 "mov ah, 17h"와 같이 "mnemocode destination, source"를 학교에서 "y = 17 * x" 말할 때 우리는 "y는 17 배 x"라고 말합니다. 그리고 대부분의 (자연스러운) 언어에서, 주제는 동사 앞에옵니다. 그래서 다시, "y는 17 배 x"입니다. 그러나 동시에, 상자를 움직이면이 상자를 벽 옆으로 옮겨 놓으십시오. 이 경우 소스 ("what"= subject)가 첫 번째이고 대상이 두 번째입니다. – Shi

+0

@shi, 가스 (GNU 어셈블러)를 사용할 때 그것은 뒤집어 져 있습니다 :'mv $ 17, % ah', 그래서 나는 그 어셈블리가 좋은 논거라고 확신하지 못합니다. –

답변

3

소스가 먼저오고 나중에 대상을 기대합니다.

언어로 모호성을 제거 할 수 있다면 더 좋을 것입니다. 예를 들어, OO 언어 : 명명 된 매개 변수와 언어에서

source.copyTo(destination); 

:

copy(source: s, destination: d); 

중요한 것은 무엇 코드를 읽는 사람 을 위해 무슨 일 명확을 확인하는 것입니다. 코드는 작성된 것보다 더 자주 읽 힙니다.

0

나는 항상 소스 - 목적지를 선호했다. (나는 여기에서 여기로 나아가고있다.) 그러나 이것은 또한 호출에 의존 할 것이다. 당신이 말하는 '사본'일 뿐이라면, 나는 이것이 효과가 있다고 생각합니다. 나는 거기에 다른 지향 호출을 더 잘 적용 할 것이라고 확신 해요.

관련 문제