erg/doc/JA/dev_guide/rust_code_guideline.md
2022-08-18 00:06:46 +09:00

24 lines
1.5 KiB
Markdown

# Rustコードに関するガイドライン
## ローカルルール
* デバッグ用の出力には`log!`を使用する(release時にも必要な出力処理は`println!`等を使用する)。
* 未使用・または内部用の(privateかつ特定の機能のみに使用する)変数・メソッドは先頭に`_`を1つ付ける。予約語との衝突を回避したい場合は後ろに`_`を1つ付ける。
## 奨励されるコード
* 数値の列挙やboolの代わりにドメイン固有のEnumを定義する。
* アクセス修飾子は必要最小限のものとする。公開する場合でも`pub(mod)``pub(crate)`を優先的に使用する。
* for式でのiterableオブジェクトは明示的にイテレータに変換する(`for i in x`ではなく`for i in x.iter()`)。
* 遅延評価。例えば、`default`がリテラル以外の場合は`unwrap_or`ではなく`unwrap_or_else`を使用する。
## 奨励されないコード
* return type overloadingを多用する。具体的には自明でない`.into`を多用するコード。これは型推論結果が直感に反する場合があるためである。この場合は代わりに`from`を使うことを推奨する。
* `Deref`を多用する。これは実質的に継承と同じ問題を引き起こす。
## 文脈により判断が変わるコード
* 未使用のヘルパーメソッドを定義する。
* `unwrap`, `clone`を多用する。場合によってはそうするより他にないものもある。