상수 대 구성 파일을 사용하여 구성을 유지하는 경우


20

나는 종종 특정 키를 내 web.config 또는 Constants.cs 클래스 또는 이와 비슷한 것에 넣을 것인지에 대해 스스로 싸우고 있습니다.

예를 들어 어떤 경우에도 응용 프로그램 특정 키를 저장하려는 경우 사용자 정의 키를 통해 웹 구성에서 저장하고 가져 와서 상수 클래스에서 상수를 참조하여 사용할 수 있습니다.

구성 키를 통해 상수를 언제 사용 하시겠습니까?

이 질문은 내가 생각하는 모든 언어에 실제로 적용됩니다.

답변:


20

개인적으로 상수 만 기본값으로 사용하고 구성 파일의 값으로 재정의합니다.

응용 프로그램이 명령 행 인수를 사용하면 구성 파일 매개 변수를 대체합니다.


3

구성 파일의 값은 상수 클래스의 값보다 유지하기가 어렵습니다. 컴파일러가 존재하지 않고 올바른 유형인지 확인하기 때문에 IDE는 일반적으로 코드 지원을 제공하지 않으며 또한 전환 해야하는 또 다른 구문이기 때문에 프로그래밍하는 동안.

그래서 나는 넣어 두는 것이 좋습니다.

  • 모든 설치에서 코드 상수와 동일한 값입니다. 그것들을 하나의 상수 클래스에 두는 것 (작동 방법을보기 위해 다양한 값을 쉽게 시도 할 수 있음)과 그것들을 사용하는 모듈에 넣는 것 (해당 모듈을 수정할 때 다른 파일을 열 필요가 없습니다. 모두가 편집하여 버전 제어에 충돌을 일으키는 파일 하나를 피하십시오).
  • 설치마다 구성 파일로 변경해야하는 값입니다. 그리고 어쨌든 코드에 기본값을 넣고 싶을 수도 있습니다. 따라서 설정에 값이 설정되어 있지 않으면 응용 프로그램이 여전히 작동합니다.

올바른 유형 ... 구성 키 ... 그것은 XML입니다 ...
WeDoTDD.com

@CoffeeAddict : 올바른 유형은 숫자가 필요한 옵션이 있고 구성 파일에 숫자가 아닌 문자열이 있으면 런타임까지 찾을 수 없다는 것을 의미합니다. "config key"는 XML이 요소 경로 인 경우 구성 파일에서 값을 검색하는 데 사용하는 모든 것입니다. 좋아, 스키마와 해당 클래스 (다른 클래스 xsd에서 생성하는 도구가 있음)를 사용하고 구성을 사용할 XMLSerializer수 있습니다 (어쨌든 C #에서 XML을 처리하는 가장 현명한 방법). 따라서 사전에 유효성을 검사 할 수 있지만 여전히 추가 사항입니다. 작업.
Jan Hudec

의견 불일치 : "구성 파일의 값은 상수 클래스의 값보다 유지하기가 어렵습니다."-구성을 코딩 한 방법과 구성 가능한 항목 수에 따라 다릅니다. 반복하지 마십시오!
엔지니어

3

상수를 변경하면 대부분의 경우 응용 프로그램을 다시 빌드해야합니다. 달리 말하면, 누군가 코드에 액세스 할 수 없을 때 상수는 상수로 유지됩니다.

따라서 최종 사용자가 제공해야하고 변경해야하는 정보는 구성 파일로 이동해야합니다. 대부분의 다른 사람들은 상수를 받아야합니다. 그러나 구성 파일이 손상된 경우 올바른 기본값 또는 오류 예외 처리가 있어야합니다.

객체 추상화의 일부가 아닌 요소 (즉, 외부 (호출) 객체에 의해 수정되지 않는 상수가 숨겨져 본질적으로 구성 파일보다 개인 상수로 더 나을 것입니다).

서로 관련이없는 다른 객체와 관련된 많은 구성 요소가 있고 너무 많은 객체가 (동일하거나 자체의) 구성 파일을 가져와야 할 경우 이러한 것들이 일정해야 할 가능성이 있습니다.


1

간단한 경험 법칙은 변경하지 않고도 주어진 컨텍스트에 적용 할 수있는 고정 된 값 세트로 작업 할 경우 상수를 작성하는 것입니다. 다른 모든 것에 대한 외부 구성을 제공합니다.

상수의 좋은 예는 작업 한 모든 모양이 SQUARE또는 일 수있는 경우 ROUND입니다. 대부분의 언어에서이 값은 한 번만 할당하고 액세스 방법을 최적화하여 시간이 지나도 변하지 않는다는 사실을 활용할 수 있습니다.

작업 할 값을 사전에 가정 할 수 없기 때문에 값을 동적으로 검색해야하는 경우 외부 구성이 필요하지만 이는 성능상의 균형을 유지해야한다는 의미는 아닙니다. 현재, 올바르게 완료되면, 당신은 그들을 한 번만 검색의 가격을 지불하고 여전히 모든 혜택을받을 수 있습니다.



0

정의상 상수는 PI와 같이 변경해서는 안되는 값의 메모리 위치입니다.

나는 당신이 상수가 아니라 '매개 변수'를 의미한다고 가정합니다.

언급 한 내용 외에도 구성 파일에서 사용자 입력에 변수를 노출하면 응용 프로그램이 손상 될 수 있습니다.

가능하면 구성 파일에서 값을 유효성 검사없이 검증하지 않고 노출시키지 마십시오. 또한 비즈니스 규칙 매개 변수 (예 : 최대 급여 등)를 구성 파일에 배치하지 않고 상수도 사용하지 않는 것이 좋습니다. 이러한 값은 적절한 테이블 정의를 사용하여 데이터베이스에 저장해야 변경 될 때 일부 보안이 적용되고 저장된 값 또는 db 로그를 사용하여 데이터 값의 버전을 자동으로 작성할 수 있습니다. 물론 이것은 응용 프로그램의 민감도에 따라 다릅니다.

구성 파일을 사용하여 데이터를 저장 한 경우 버전을 확인하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.