File tree Expand file tree Collapse file tree 1 file changed +4
-0
lines changed
docs/dev-notes/2025-09-23/contest-task-pair-mapping Expand file tree Collapse file tree 1 file changed +4
-0
lines changed Original file line number Diff line number Diff line change @@ -243,18 +243,22 @@ type TaskResultMapByContestTaskPair = Map<ContestTaskPairKey, TaskResult>;
243243以下は、実装中に得られた教訓を一般化したものです。今後の開発においても参考にしてください。
244244
245245### 1. 防御的なチェックの再考
246+
246247- ** 教訓** : Prisma のエラーハンドリング(例: ` P2002 ` や ` P2025 ` )を活用することで、事前チェックを省略し、TOCTOU(Time-of-Check to Time-of-Use)競合を回避できる。
247248- ** 推奨** : 事前チェックを行う代わりに、データベース操作の結果を直接利用し、エラーを適切に処理する。
248249
249250### 2. 戻り値の活用
251+
250252- ** 教訓** : CRUD メソッドで作成・更新されたレコードを返すことで、呼び出し元が追加のクエリを実行せずに結果を利用できる。
251253- ** 推奨** : ` create ` や ` update ` メソッドでは、` void ` を返すのではなく、作成・更新されたレコードを返すようにする。
252254
253255### 3. 型定義の明確化
256+
254257- ** 教訓** : Prisma の自動生成型を活用しつつ、必要に応じて独自の型を定義することで、型安全性と可読性を向上できる。
255258- ** 推奨** : CRUD 操作用の型(例: ` Create ` , ` Update ` , ` Read ` )を明確に分離し、それぞれの目的に応じた型を定義する。
256259
257260### 4. ログとエラーハンドリング
261+
258262- ** 教訓** : エラー発生時には、適切なログを出力し、問題の特定を容易にする。
259263- ** 推奨** : Prisma のエラーコード(例: ` P2002 ` , ` P2025 ` )を活用して、エラー内容に応じた具体的なメッセージを出力する。
260264
You can’t perform that action at this time.
0 commit comments