Google의 Rust 스타일 가이드

2 hours ago 3

Google은 Rust 코드의 가독성과 유지보수성, 코드베이스 전반의 일관성을 위해 포맷뿐 아니라 API와 구현 설계까지 규정함 일반적인 Rust 관례를 따르되, 도구를 활용한 대규모 변경(LSC) 이 쉽도록 임포트, 모듈 구성, 매크로 사용 등에 별도 기준을 둠 API 설계 규칙은 라이브러리에 의무로 적용하고 애플리케이션에는 강하게 권고하되, 애플리케이션에서는 단순성과 당장의 요구를 우선함 메모리 관리는 단독 소유권과 빌림을 우선하고, 불필요한 복사와 공유 소유권을 피하되 구조가 지나치게 복잡해지는 경우에는 예외를 허용함 Chromium 전용 규칙에는 작은 크레이트와 평평한 파일 배치 선호, async / .await 금지 등이 있으며, 이를 모든 Google Rust 코드에 적용되는 규칙과 구분해야 함 적용 범위와 설계 목표 Google은 google3, Android, ChromeOS, Fuchsia, Chrome 등에서 사용하는 Rust 코드에 일관성과 품질 기준을 마련하고자 함 Android, Chromium 등은 가이드 개발에 협의했고 적용을 시작할 예정이나, 적용의 엄격함은 코드베이스별 규칙에 따라 달라질 수 있음 규칙은 작성 편의보다 가독성과 유지보수성을 우선함 오래 유지될 코드라면 작성 시 추가 노력을 들일 가치가 있음 자동화와 대규모 변경을 돕고, 가능한 한 Rust 생태계의 관례와 일치해야 함 개발자와 리뷰어가 기억해야 하는 비용에 걸맞은 실질적 이점이 있어야 하며, 사소한 스타일 논쟁만 줄이는 규칙은 최소화함 이 가이드와 충돌하지 않는 범위에서 공식 Rust Style Guide와 Rust API Guidelines를 따름 일반적인 일관성, 가독성, 좋은 API 설계뿐 아니라 도구 친화적인 리팩터링 패턴도 중요하게 취급함 라이브러리 코드는 다른 프로젝트가 사용할 일반적인 문제를 해결하므로 API 설계 규칙이 의무임 단일 애플리케이션의 구체적인 문제를 해결하는 코드에는 API 설계 규칙을 강하게 권고함 애플리케이션에서는 폭넓은 재사용성보다 단순하고 직접적인 구현을 선호하며, 성급한 일반화와 추상화를 피함 크레이트와 모듈 구성 크레이트는 컴파일 단위이며 이름 없는 루트 모듈을 포함하고, 모듈은 크레이트 내부의 코드 구성과 이름 가시성을 제어함 Chromium에서는 한 추상화에 집중하는 작은 크레이트를 선호하며, 가능하면 단일 파일로 구성함 크레이트 하나는 하나의 rust_static_libra...

Read Entire Article




피플앤툴즈 네트워크
🛍 샵