많은 매개변수가 필요한 유틸리티에 권장되는 인터페이스는 무엇입니까?

많은 매개변수가 필요한 유틸리티에 권장되는 인터페이스는 무엇입니까?

올바르게 작동하려면 6가지 정보가 필요한 명령줄 유틸리티를 작성 중입니다. 다음과 같습니다.

fm-git filename repository path comment username password

그러나 모든 개별 시스템에서는 일정 username합니다 password.

유틸리티를 실행할 때 빌드가 어렵다는 것을 알게 되었습니다. 예를 들어 다음은 유틸리티에 대한 테스트 호출입니다(가독성을 위해 여러 줄로 구분).

/Users/chuck/Projects/fm-git/fm-git.py chiv-lib
/Users/chuck/Projects/chiv-lib/ Chivalry/ "continued testing"
Administrator abc1234

저는 이러한 주장을 전달하기 위한 다양한 방법을 고려하고 있습니다. 예를 들어, fm-git -f filename -r repository ...또는 fm-git --filename filename --repository repository.... 또한 username및 인수 구성 설정을 만드는 것도 고려 중입니다 password. 일반적으로 변경되지 않고 유틸리티 호출에서 제거될 수 있기 때문입니다.

유틸리티 인수가 많지만 필수인 경우 유틸리티 호출 가독성을 유지하기 위해 허용되는 방식은 무엇입니까?

답변1

일반적으로 유닉스 응용 프로그램은 이 정보를 제공하는 다양한 방법을 허용하며, 보다 "구체적인" 방법이 덜 구체적인 방법보다 우선합니다.

그래서 당신은:

  • 그래픽 응용 프로그램의 경우 거의 항상 사용되는 툴킷은 리소스를 확보하는 방법(예: xrdb일반 X의 스타일 등) 을 제공합니다.

  • 툴킷이 아직 제공하지 않은 경우 구성 파일.

  • 짧은 형식과 긴 형식의 명령줄 옵션( getoptC에서는 쉬움)

  • 정보가 제공되지 않은 경우 합리적인 기본값(예: 경로의 현재 디렉터리)

위치 매개변수는 몇 가지 필수 매개변수에 대해서만 의미가 있으며 파일 목록이 뒤따를 수 있습니다(와일드카드 사양이 여러 매개변수로 확장되기 때문입니다). 6개의 개별 조각은 너무 많습니다. 순서를 기억하기 어려우므로 이에 대한 옵션을 사용하세요.

--password -비밀번호의 경우 특수 값(예: 또는 ) 을 사용하여 애플리케이션이 stdin에서 비밀번호를 읽도록 하는 방법을 제공하는 것이 도움이 될 수 있습니다 -p -.

애플리케이션을 사용하는 사람은 하드코딩된 비밀번호, 구성 파일의 비밀번호 또는 사용자가 비밀번호를 입력하도록 허용하는 것이 특정 사용 사례에 가장 적합한 옵션인지 선택할 수 있습니다.

답변2

일반적으로 다음을 수행하는 것이 좋습니다.

  1. 종속 인수를 계산하지만 재정의할 수 있습니다. 예를 들어 귀하의 예에서는 filename와 동일 $(basename repository)하므로 저장소만 필요할 수 있지만 --filename대체 파일 이름을 제공할 수 있는 옵션이 있습니다.
  2. 명령줄 및 ps출력에서 ​​인증을 숨깁니다. 일부 파일에 넣으십시오. 아마도 $HOME/.fm-git.conf파일에 더 많은 제한을 부여 chmod 600 $HOME/.fm-git.conf하고 파일에서 읽으십시오. 때로는 환경 변수에서 사용자 이름과 비밀번호를 가져오는 옵션이기도 하지만(예: 기본 사용자 이름은 시스템 사용자 이름이거나 SUDO_USER) 귀하의 경우가 아닐 수도 있습니다.

따라서 두 가지 최적화 후에는 cli 매개변수가 3개만 있으므로 허용 가능하다고 생각합니다. 자유롭게 위치 매개변수로 사용하거나 다음과 같은 일부 플래그를 제공하십시오 --comment. 긴 플래그를 제공하면 스크립트에서 프로그램을 추가로 사용하는 경우 가독성이 향상되지만 대부분 cli에서 직접 프로그램을 실행하는 경우에는 더 많은 것을 입력해야 합니다.

어쨌든, Python으로 프로그램을 작성할 때 다음을 사용하는 것이 좋습니다.인수 모듈-- 매개변수를 구문 분석하고 나중에 변경하려는 경우 변경하는 데 도움이 됩니다.

관련 정보