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