未然にバグを防ぐ方法
どの言語にも当てはまるもの
重要度順
関数ごとにドキュメンテーションする
自動テスト
注意:異常系もテストする
VimユーザーはNeovimにしてLSPを整える
各言語用テクニック
Java
TypeScript
anyは絶対に使わない
代わりにunknownを使う
アサーションは次の場合以外使わない
DOM操作
REST API呼び出し
可能ならwrapperを作るべき
最低限、以下の設定は有効にする
他にも必要なのあるかも
以下のようなcase処理を禁止する
code:exampleForNoFallthroughCasesInSwitch.ts
switch (foo) {
case 1:
case 2:
// 処理
break
// 1と2をまとめているけれど、連続している(個別の処理はない)のでエラーにはならない
case 3:
// 処理
// 処理の後にbreakが無いのでエラーになる
case 4:
// 処理
break
default:
break
}
これはお好みで
意図的にfallthroughしたいときに困るんだよな~bsahd.icon
コメントがあった方がそれが意図的なのかわかりやすくなるので、検知する設定自体は有効にしたままで良いかと
awaitし忘れやPromise非対応の引数に非同期コールバックを渡してしまうことはよくあるので、対策する
awaitし忘れを防止するルール
一手間あるけれどコメントがあった方が意図的なのかがわかって良い
Promiseに対応していない引数に非同期関数を渡すことを防止するルール
試したことないからほんとに効果あるかはわからないけどMijinko_SD.icon
結構簡単に導入できて効果もありました
人の目にあまり触れられていない、もしくは直近2年間以内に更新されていないパッケージを使わない
PRを溜め込んでいるリポジトリはメンテナンスが間に合っていない可能性が高い
最低限repoがdecrepartedになっていないことを確認する