kaist-cp / hafnium-verification

Apache License 2.0
1 stars 4 forks source link

Refactoring: big picture. #11

Open efenniht opened 5 years ago

efenniht commented 5 years ago

본격적으로 Refactoring을 하기에 앞서서 어떻게 하면 좋을 지 나름의 생각을 정리해 보았습니다:

목표

여기서 목표는, 평가 수단이자 refactoring 방향의 이정표입니다.

unsafe block의 수와 양 줄이기

궁극적으로 모든 unsafe 코드를 고칠 수는 없지만, 줄이는 것은 검증에 도움이 됩니다. 어떤 코드가 unsafe Rust인지는 Rust book에 나와 있습니다: https://doc.rust-lang.org/book/ch19-01-unsafe-rust.html

좀 더 공격적으로 unsafe한 코드를 fine graining 해 봅시다!

Encapsulation

현재 코드를 많은 부분 OOP스럽게 만들 수 있습니다:

Use rich type system

방법

쉬움

중간

어려움

각각의 항목에 대해서 세부 issue를 만들 예정입니다. 또 다른 제안 사항이 있으시면 말씀해 주세요~

efenniht commented 5 years ago

api.rs 에 있는 goto 문, 그리고 if blah { return -1; } 과 같은 코드를 RAII와 ? 로 깔끔하게 만들기 - 이걸 먼저 하지 않으면 다른 api.rs 리팩토링을 할 때 실수할 가능성이 높아집니다!