Architecture Decision Record

Active theme: Light

← 의사결정 기록 예시

아키텍처 의사결정 기록: 프로그래밍 코드 편집기

맥락

프로그래밍 코드 편집기는 개발자가 코드를 작성하고 편집하는 데 필수적인 도구입니다. 사용 가능한 코드 편집기는 수없이 많으며, 각각 고유한 기능, 장점, 단점을 가지고 있습니다. 이 ADR의 목적은 프로그래밍 코드 편집기에 대해 내려진 아키텍처 결정을 문서화하는 것입니다.

우선순위

프로그래밍 코드 편집기의 아키텍처는 다음을 우선해야 합니다:

  • 모듈성: 코드 편집기는 개발자가 필요에 따라 사용자 정의하고 확장할 수 있도록 모듈식으로 설계되어야 합니다. 이는 서로 다른 개발자와 팀의 요구에 적응할 수 있는 유연한 아키텍처를 가능하게 합니다.

  • 성능: 코드 편집기는 성능이 좋고 반응이 빨라야 하며, 개발자가 사용하는 도구 때문에 느려지지 않고 효율적으로 작업할 수 있게 해야 합니다.

  • 사용자 인터페이스: 사용자 인터페이스는 직관적이고 사용하기 쉬워야 하며, 개발자가 편집기와 씨름하는 대신 코드에 집중할 수 있게 해야 합니다.

  • 확장성: 코드 편집기는 서드파티 플러그인과 통합으로 쉽게 확장할 수 있도록 설계되어야 합니다.

  • 호환성: 코드 편집기는 광범위한 프로그래밍 언어와 기술에 호환되어 폭넓은 개발자에게 유용한 도구가 되어야 합니다.

결정

이러한 우선순위를 바탕으로 프로그래밍 코드 편집기의 아키텍처는 다음 컴포넌트로 설계되어야 합니다:

  • 코어: 이 컴포넌트는 구문 강조, 텍스트 편집, 파일 관리 같은 코드 편집기의 기본 기능을 제공합니다.

  • UI: 이 컴포넌트는 메뉴, 도구 모음, 키보드 단축키를 포함한 코드 편집기의 사용자 인터페이스를 제공합니다.

  • 플러그인: 이 컴포넌트는 개발자가 서드파티 플러그인을 설치하여 코드 편집기의 기능을 확장할 수 있게 합니다. 플러그인은 코드 완성, 린팅, 디버깅 같은 추가 기능을 제공할 수 있습니다.

  • 통합: 이 컴포넌트는 코드 편집기가 버전 관리 시스템, 빌드 시스템, 디버깅 도구 같은 다른 도구 및 기술과 통합될 수 있게 합니다.

근거

코드 편집기의 모듈성은 개발자가 필요에 따라 사용자 정의하고 확장할 수 있게 합니다. 이는 서로 다른 개발자와 팀이 서로 다른 요구와 워크플로를 가지고 있으며 유연한 아키텍처가 이러한 차이를 수용할 수 있기 때문에 중요합니다.

  • 성능: 개발자가 도구 때문에 느려지지 않고 효율적으로 작업할 수 있어야 하므로 결정적입니다. 성능이 좋은 코드 편집기는 생산성에 필수적이며 개발자가 집중력을 유지하는 데 도움이 될 수 있습니다.

  • UI: 개발자가 편집기와 씨름하는 대신 코드에 집중할 수 있게 하므로 중요합니다. 이는 더 나은 생산성과 개발자의 좌절감 감소로 이어질 수 있습니다.

  • 확장성: 코드 편집기를 서로 다른 요구와 워크플로에 맞게 조정할 수 있게 하므로 강력합니다. 서드파티 플러그인과 통합은 코어 편집기에 포함되지 않은 추가 기능과 역량을 제공할 수 있습니다.

  • 호환성: 코드 편집기를 광범위한 프로그래밍 언어와 기술에서 사용할 수 있게 하므로 가치가 있습니다. 이는 편집기를 폭넓은 개발자에게 더 유용한 도구로 만듭니다.

코어, 플러그인, 통합, UI 컴포넌트는 관심사를 명확히 분리하고 쉽게 확장하고 사용자 정의할 수 있는 모듈식 아키텍처를 가능하게 합니다. 이 아키텍처는 유연하고, 성능이 좋으며, 광범위한 프로그래밍 언어와 기술에 호환되어 개발자에게 유용한 도구가 됩니다.