2013-11-23 2 views
0

나는 긴 인수 목록이 자바 프로그램이 :쉘에서 자바 프로그램을 호출 할 경우, 인수를 전달하는 것이 더 나은 방법일까요?

public class MyTool { 
    public static void main(String[] args) { 
     String aaa = args[0]; 
     String bbb = args[1]; 
     String ccc = args[2]; 
     String ddd = args[3]; 
     String eee = args[4]; 
     String fff = args[5]; 
     String ggg = args[6]; 
    } 
} 

내 동료가 그것을 사용할 때, 그는 인수 목록 그가 인수 이런 식으로 통과해야한다는, 너무 긴 불평 :

java MyTool someArg someArg someArg someArg someArg someArg someArg 

그는 소스 코드를 반복해서 확인하지 않고 각 인수의 의미를 혼동합니다.

그는 나를 인수를 전달하는 -Daaa=bbb 스타일을 사용하는 것이 좋습니다, 내 코드는해야 의미로 그에게 훨씬 더

java -Daaa=someArg -Dbbb=someArg -Dccc=someArg \ 
    -Dddd=someArg -Deee=someArg -Dfff=someArg -Dggg=someArg \ 
    MyTool 

:

public class MyTool { 
    public static void main(String[] args) { 
     String aaa = System.getProperty("aaa"); 
     String bbb = System.getProperty("bbb"); 
     String ccc = System.getProperty("ccc"); 
     String ddd = System.getProperty("ddd"); 
     String eee = System.getProperty("eee"); 
     String fff = System.getProperty("fff"); 
     String ggg = System.getProperty("ggg"); 
    } 
} 

그래서 그가로 호출 할 수 있습니다 소스 코드를 확인하지 않고 각 인수의 의미를 알아야합니다.

어느 쪽이 더 좋고 혼란 스럽습니까?

+0

처럼 뭔가에 endet? – Rogue

답변

2

하나 또는 두 개의 위치 매개 변수는 정상이지만 선택 사항이 많은 경우 이름 (의미)을 부여하고 다음과 같은 명령 행 옵션 라이브러리 (http://www.gnu.org/software/gnuprologjava/api/gnu/getopt/Getopt.html)를 사용해야합니다.

당신은 단지 그가 .... 더 이상 입력 할 수있는 금액을 만들 것이

java MyTool -xyz -a someArg --aaa=someArg --bbb=someArg --ccc=someArg 
+0

... 그리고 GNU getopt가 마음에 들지 않는다면 [더 많은 것들이 있습니다] (http://stackoverflow.com/questions/367706/is-there-a-good-command-line-argument-parser-for- 자바) – Dan

2

모든 정직한면에서 main 메소드에 대한 인수를 정기적으로 전달해야합니다. 필자의 경험에 따르면, 메인 메소드를 통해 인수에 액세스 할 수 없거나 여러 프로그램에서 필요로 할 때 -D*argument* 스타일을 사용하는 것이 가장 좋습니다.

편집 : 이제는 단일 프로젝트에 특정한 특정 용도의 전역 속성을 설정한다는 사실도 마찬가지입니다.

1

자신의 길을 사용하면 더 많이 입력해야하지만, 그가하고있는 일을 더 잘 이해할 수 있습니다. 너의 길은 더 빠르지 만 조금은 어설프다. 따라서 디자인 선택과 모든 사람들이 여기에서 다르게 조언 할 것입니다.

내 취향은 원래 방식대로 할 것입니다. 나는 항상 '--help'호출 매개 변수를 추가하여 사용할 수있는 인수를 출력하므로 사용자가 필요로하지 않아야하는 소스 코드를 확인할 필요가 없으며 모든 것이 덜 복잡해집니다.

관련 문제