먼저 약간의 배경 지식. Age-> Rate에서 조회를 코딩하고 있습니다. 7 개의 에이지 대괄호가 있으므로 조회 테이블은 7 개의 행이있는 3 개의 열 (From | To | Rate)입니다. 값은 거의 변하지 않습니다 . 3 년 동안 동일하게 유지 된 입 법률 (첫 번째 및 세 번째 열)입니다. 이 테이블을 하드 코딩하지 않고 저장하는 가장 쉬운 방법은 전역 구성 테이블의 데이터베이스에 CSV를 포함하는 단일 텍스트 값이므로 "65,69,0.05,70,74,0.06" 65-69 및 70-74 계층이 저장됩니다). 분석하고 사용하기가 비교적 쉽습니다.
그런 다음이를 구현하려면 새 테이블, 래핑 할 리포지토리, 리포지토리에 대한 데이터 계층 테스트, CSV를 테이블로 확장하는 코드에 대한 단위 테스트 및 조회 자체를 테스트해야한다는 것을 깨달았습니다. 이 모든 작업의 유일한 장점은 조회 테이블을 하드 코딩하지 않는 것입니다.
현재 조회 테이블을 직접 사용하는 사용자 (하드 카피를보고)와 대화 할 때는 "요금이 절대 변하지 않는다"는 의견이 나옵니다. 실제로는 정확하지 않습니다. 요율은 3 년 전에 만 만들어졌고 과거에는 "변경하지 않음"으로 인해 변경되는 습관이있었습니다. 따라서 방어 적으로 프로그래밍하려면 룩업 테이블을 저장해서는 안됩니다. 응용 프로그램.
내가 YAGNI 생각할 때를 제외하고 . 내가 구현하는 기능은 요율이 변경되도록 지정하지 않습니다. 요율이 변경되는 경우에도 유지 보수를 고려할 정도로 요율이 거의 변경되지 않으며, 요율 변경과 업데이트 된 응용 프로그램 사이에 지연이있을 경우이 기능이 실제로 영향을 미칠 정도로 중요하지 않습니다.
조회를 하드 코딩하면 가치가 전혀 없어지지 않기로 결정 했으며이 특정 기능에 대한 접근 방식에 대해 너무 걱정하지 않습니다. 제 질문은 전문가로서 그 결정을 올바르게 정당화 했습니까? 하드 코딩 값은 설계가 좋지 않지만 응용 프로그램에서 값을 제거하는 데 어려움을 겪는 것은 YAGNI 원칙을 위반하는 것 같습니다.
편집 질문을 명확히하기 위해 실제 구현에 대해서는 신경 쓰지 않습니다. 나는 YAGNI를 말함으로써 신속하고 나쁜 일을하고 그것을 정당화 할 수 있는지, 또는 최선의 경우에도 궁극적으로 낮은 혜택을주는보다 방어적이고 노력이 많은 접근법을 취할 수 있을까 걱정하고 있습니다. 전문 프로그래머로서 결함이 있다고 생각되는 디자인을 구현하기로 한 결정은 단순히 비용 / 이익 분석으로 귀결됩니까?
EDIT 모든 해답은 매우 흥미 있었다 나는 이것이 개인의 디자인 선택에 온다 생각하는, 내가 가장 좋은 답변라고 생각하지만 코빈의 @ 와 @EZ 하트의 그들은 내가이 질문을 고려하지 않은 것들을 가지고 같이
- 하드 코딩을 사용하여 'YAGNI를 효율적으로 적용하는 것'과 데이터베이스로 이동하여 '하드 코딩 된 값을 정확하게 제거'하는 잘못된 이분법. 룩업 테이블을 앱 구성에 배치하는 세 번째 옵션이 있는데, 올바른 방법으로 오버 헤드를 발생시키지 않으며 YAGNI의 효율성이 없습니다. 우리는 일반적으로 의사 결정에만 국한되지 않으며 비용 / 혜택 결정으로 이어집니다.
- 코드 생성은 하드 코딩 된 값을 데이터베이스로 이동하는 오버 헤드를 줄이고 CSV를 테이블로 처리하려는 과도한 엔지니어링 결정을 제거하는 방식입니다. 기본 요구 사항이 조회 방법에 대해 변경되는 경우 생성 된 코드에 장기적인 유지 보수 문제가 추가 될 수도 있습니다. 이것은 비용 / 혜택 분석에만 영향을 미치며, 자동화를 사용할 수 있다면 이와 같은 하드 코딩조차 고려하지 않았을 것입니다.
@Corbin의 대답은 개발 비용에 대한 가정을 변경하기 때문에 올바른 것으로 표시하고 있으며 가까운 시일 내에 무기고에 코드 생성 도구를 추가 할 것입니다.