프로그래밍
Table of Contents
2. Rust
GitHub - utilForever/2024-DEVCON-Rust-Safety: DEVCON 2024 - Rust는 어떻게 안전한 프로그… Extending Rust's Effect System GitHub - mainmatter/100-exercises-to-learn-rust: A self-paced course to learn…
2.1. Rust의 에러 핸들링 전략 rust
The Rustonomicon에 멋진 말이 있다
Rust는 오류 처리를 계층적으로 한다:
- 무언가 없을 수 있다면 “Option”을 쓴다.
- 무엇가 잘못될 수 있지만 처리할 수 있다면 “Result”를 쓴다.
- 무언가 잘못될 수 있고, 처리할 수 없다면 쓰레드 패닉을 일으켜라
- 무언가 단단히 잘못된다면 프로그램을 종료하라
4. 참고할 글
4.1. Alexis King, Parse, don’t validate.
- 검증(validate)
- 맞는지 틀린지 확인만 함
- 파싱
- 맞는 데이터는 받아서 “확인한 데이터”로 바꿈. 따라서 확인한 데이터로 추가적인 작업을 할 수 있고, 여기서 2차 검증이 이뤄짐
- (no term)
- 어떻게? 잘못된 상태를 표현할 수 없는 자료구조를 반환하라.
- 리스트를 받아 중복이 없는 리스트를 반환하기보다
- 리스트를 받아 중복이 있을 수가 없는
NoDuplicatedList이런 걸 반환하면 더 좋다
아래 번역글이 번역이 잘 되어 있다:
- 잇창명, 검증하지 말고 파싱하라.
4.2. Alexis King, No, dynamic type systems are not inherently more open.
- “정적 타입은 못 하는데, 동적 타입은 할 수 있는 일” 같은 건 없다.
- 동적 타입 언어를 쓰더라도 중요한 이야기. 위의 같은 저자의 Parse, don’t validate와 일맥하는 이야기
- 리플렉션이든 외부 데이터는 시스템에서 처리하려면 미리 그 데이터의 구조를 알아야만 한다.
- 스키마가 없는 게 아니라 명시하지 않은 것 뿐이다.
- 정적 타입 언어도 모든 스키마를 명시해야 하는 게 아니라, 설계에 따라 그 수준을 바꿀 수 있다.
- 서동휘, 동적 타입 시스템은 더 개방적인 시스템이 아닙니다.