【Rust】静的型付けやnull安全、例外の排除はテストを削減するのか?


Rustの特性に以下の3つがある

  • 静的型付け言語
  • null安全
  • 例外がない

これらはテストを容易にするとかコードの品質をあげるとか言われているが、 具体的に何がさせるのかを自分なりに解釈する

静的型付け

静的型付けの利点は以下

  • 変数や関数の型が事前に宣言または推論されるので、コンパイラがコード内の型エラーや型不一致を検出できる(実行前に気付ける)
  • コードの理解がしやすくテストケースの洗い出し、責任範囲が明確になる
    • 関数やメソッドの型シグネチャが明示されるのでドキュメントとしての役割が期待できる

つまり - コードの 理解がしやすいので実装が捗る - テストケースが明確になり無駄なテストが減る - 静的解析と型推論による高速なコーディング

である

テストというよりもプロセスの向上かな 普通に動的型付け言語でもリンターの充実や静的解析できるようになってるので、特別なメリットではないかも

null安全

null安全であることの利点は以下

  • nullに関連する問題を心配する必要がない
  • コード内でnullチェックにあたる条件分岐を書く必要がない。
  • コード内でnullの可能性が排除され、特定のエラーケースを考慮する必要がなくなる
  • コードがシンプルになり、

つまり、

  • テストが合理的かつ簡素になり、テストコードの保守性が増す。
  • 条件分岐が減り、テストの量とコードカバレッジが向上する
  • 無駄な心配事を排除し、テストの焦点を機能やビジネスロジックに集中させることができる
  • バグの要因が減るから品質向上

のである。

例外がない

例外が代わりに、「回復可能なエラー」と「回復不能なエラー(panic!)」に分けられる。他の言語は区別がない そしてResult型が存在する なので、

  • 何をどうハンドリングするべきかが示唆される
  • エラーが起こる可能性を知ることできる

つまり、

  • コードの設計時にエラー条件とハンドリングを考慮でき、エラーの可能性を限定できる
  • テストの範囲を絞ることができ、テストコード量を削減できルトともに、品質があがる

のである

まとめ

品質とテストが向上する!!