나는 간단한 암호화 연습을 위해 루비 코드를 작성하고 있으며이 딜레마를 자주 겪고있다 (연습은 알고 있어야만하는 솔리테어 암호이다). 간결하고 밀도가 높은 반복문을 제거하거나 오류 가능성을 최소화하는 간결한 문장 대신 함수를 읽을 수 있도록 설명 변수와 단일 단계 명령문으로 논리를 채워야하는지 여부에 대한 질문입니다.
가장 최근의 예 : 내 프로그램은 입력을 받고 엄격한 형식 지침으로 인해 입력을 암호화 또는 해독 해야하는지 쉽게 결정할 수 있습니다. 암호화 키와 메시지가 호환되도록 변환 / 생성되면 암호화 된 메시지에서 키를 빼거나 암호화되지 않은 메시지에 키를 추가하여 원하는 출력 (키를 암호화로 생각) 메시지 + 암호화 = 코드; 코드-암호화 = 메시지). DRY 위치는 암호화 된 메시지를 암호화되지 않은 메시지와 다르게 변환하여 암호화 키를 사용하여 메시지에 적용하는 기능을 구별 할 필요가 없다고 나에게 말합니다. 나는 이것이 함수에 중첩 된 if 문이 필요하지만 논리가 견고하다는 것을 의미한다는 것을 알았습니다. 그러나이 코드는 쉽게 읽을 수 없습니다.
반면에 응용 프로그램이 암호화 또는 암호 해독을 결정할 때 설정되는 플래그를 기반으로 호출되는 두 가지 다른 함수를 작성할 수 있습니다. 이것은 읽기는 쉽지만 암호화 키를 메시지에 적용하는 높은 수준의 기능을 복제하거나 해독합니다.
읽을 수있는 코드 나 간결한 코드를 사용해야합니까? 아니면이 기능을 사용하고 두 원칙을 모두 충족시키는 다른 방법을 놓쳤습니까? 프로젝트의 목적을 고려하고 그 목적을 달성하기 위해 최선의 결정을 내려야하는 규모에 따른 위치인가?
지금까지는 읽을 수있는 코드보다 간결하고 건조한 코드를 강조하는 경향이 있습니다.