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

1.5 KiB

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を多用する。場合によってはそうするより他にないものもある。