다른 많은 답변은 더 큰 디자인 문제를 해결하거나 다소 추상적입니다. 미래에 일어날 일에 대해 생각한다면 코드를 미래에 대비 하는 명확한 기술을 정의 할 수 있습니다 .
미래에는 누군가가 코드에 기능을 추가하려고 시도하거나 다른 곳에서 코드를 재사용하려고 시도 할 것이라고 생각합니다. 또한 코드의 기능을 수정하려고 할 수도 있습니다. 분명히 좋은 코드를 작성하는 것이 필수 출발점이지만, 수행 할 수있는 특정 기술도 있습니다.
방어 프로그래밍 : 현재 응용 프로그램에서 실제로 필요한 것 이상으로 입력 확인을 수행하십시오. API를 호출 할 때마다 해당 입력이 예상 한 것인지 확인하십시오. 앞으로 사람들은 새로운 버전의 코드를 혼합하여 오류의 범위와 API 반환이 현재 상태에서 변경 될 것입니다.
정의되지 않은 동작 제거 : 많은 코드에는 동작이 전혀없는 동작 이 있습니다. 특정 입력 조합은 실제로 의도하지 않은 특정 출력으로 이어지지 만 실제로는 발생합니다. 이제 누군가는 그 행동에 의존 할 것이지만, 정의되지 않았기 때문에 아무도 그것에 대해 알지 못할 것입니다. 미래에 행동을 바꾸려고 시도하는 사람은 부주의하게 물건을 깰 것입니다. 안전 점검을 지금 사용하고 정의되지 않은 모든 코드 사용을 제거 / 차단하십시오.
Automated Test Suite : 단위 테스트의 필요성에 대해 작성된 책을 찾을 수 있습니다. 그러나 향후 교정과 관련하여 누군가가 코드를 리팩토링하는 데 중요한 포인트입니다. 리팩토링은 깨끗한 코드를 유지하는 데 필수적이지만, 테스트 모음이 부족한 경우 안전하게 리팩토링 할 수 없습니다.
격리 및 분리 : 캡슐화 및 적절한 모듈화는 좋은 디자인 원칙이지만 그 이상을 넘어야합니다. 미래에 문제가있을 수있는 라이브러리 나 API 또는 제품을 사용해야하는 경우가 종종 있습니다. 품질 문제, 라이센스 문제 또는 저자의 지속적인 개발 때문일 수 있습니다. 이 경우 사용자와이 코드 사이에 레이어를 배치하는 데 시간이 더 걸립니다. API를 필요한만큼만 분할하면 커플 링이 매우 낮아 향후 쉽게 교체 할 수 있습니다.