コード CR テンプレート#
基礎編#
-
コーディングスタイルはアリババ Java 開発ガイドに従うこと
-
大規模で複雑なフロープログラムは、フローチャートとシーケンス図を提供する必要があります
- CR の開始時に、プロジェクトの規模と背景を簡単に説明する必要があります。複雑なフローでは、CR が実装ロジックと技術的なギャップを一致させるかどうかを確認する必要があります。
-
ビジネスロジックの分割が適切か、または結合しているかどうかを確認します
- ビジネスロジックには、ドメインロジックが関与しており、明示的または結合したビジネスロジックは分割することをお勧めします。
-
コードのロジックが明確かどうかを確認します
- CR の同僚は、メインのロジックを明確に説明する必要があります。
-
適切で効果的なコメント
- 複雑なロジックや CR に疑問があるロジックには、適切で効果的なコメントを追加するように要求されます。
-
冗長なコードが存在するかどうかを確認します
- 不要なコードや参照されていないコードは削除することをお勧めします。
-
潜在的な NPE が存在するかどうかを確認します
-
NPE は日常的に発生するバグです
コンテキストフィールドの使用時に null チェックが行われない、getXX () 操作、プリミティブ型のアンボクシングなど、防御的な判断または Optional が必要です。
-
-
ログの出力規則
-
ログの出力にはプレースホルダを使用することを強制します。文字列の連結には StringBuilder の append () メソッドが使用され、パフォーマンスの低下が発生する可能性があります。
logger.info("are u ok : oid 1", oid);
logger.info("are u ok : oid 1", oid);
-
-
Maven の依存関係の競合があるかどうかを確認します
- 多くの場合、実行時の不可解なバグは依存関係の競合によって引き起こされます。CR は pom の変更を確認することをお勧めします。
-
リソースの解放
- ネットワーク I/O またはファイル I/O、リソースの解放ロジックは CR によって確認される必要があります。
-
統一されたエラーコード
- -1、500 などのエラーコードの統一返却は禁止されています。できるだけ列挙型を定義し、問題の追跡を容易にすることをお勧めします。
-
例外の処理
- 例外が発生する場所では、直接返却、例外のスロー、再試行処理、復旧処理、サーキットブレーカー処理、ダウングレード処理、ビジネスの終了など、必要な操作を確認する必要があります。
初級編#
-
データベースのインデックス設計が適切か、有効かどうかを確認します
- インデックスの設計理由と効果を明確に説明する必要があります。
-
コードにデザインパターンを使用できるか、またはデザインパタンが過度に使用されているかどうかを確認します
- if/else が多すぎる場合や、シーン分配クラスのロジックでは、ストラテジーパタンを使用することをお勧めします。
- 小規模な要件に対して複雑な継承抽象ロジックを行うことはお勧めしません。良い設計はモデルの合理的なものです。
- 単純な問題を解決するために複雑なフレームワークを導入することはお勧めしません。一部の学生は、1 つのフレームワークですべてのアーキテクチャを解決することに熱心です(例:ddd cola)。コードの歴史や複雑さは評価できず、良いビジネスフレームワークのスケルトンはこのような考え方で問題を解決する傾向があります。
-
ミドルウェアの使用がベストプラクティスになっているかどうかを確認します
- たとえば、MQ の消費が正しく ACK されているか、またはリトライが必要か、または破棄が必要かを確認します。
- たとえば、Redis に大きなキーの設計が存在するか、適切な設計が必要かを確認します。
- たとえば、ES のクエリに適切なタイムアウトが設定されているかどうかを確認します。
-
スレッドプールの使用、パラメータの正確性、ビジネスの分離が正しいかどうかを確認します
- 会社のフレームワークまたは JDK の組み込みパラメータ付きスレッドプールの構築方法を使用しているかどうかを確認します。
- スレッド数やキューサイズが適切に設定されているかどうかを確認します。
- 複数のビジネスまたは呼び出し元に対して、分離されたスレッドプールが設定されているかどうかを確認します。
-
ロックを使用する場合、ロックの範囲や粒度が適切かどうかを確認します
- 分散ロックのロック範囲が他の影響を受けないかどうかをチェックする必要があります。
-
トランザクション処理:トランザクションが必要かどうか、トランザクションが有効かどうかを確認します
- 永続化操作にトランザクションが追加されていないかを確認します。
- クラス内での呼び出しによってトランザクションが有効になっていないかを確認します。
上級編#
パフォーマンスの最適化#
-
キャッシュが必要な場所にキャッシュを追加する必要があります
- 依存する外部インターフェースのパフォーマンスが低い場合、適切なキャッシュを追加してクエリ問題を解決します。
-
悲観的ロックの代わりに楽観的ロックを使用します
-
複数のインターフェースの集約にはマルチスレッドを使用して加速します
一貫性#
幂等性#
-
ステータスベースの幂等性
- ステータスベースとは、このインターフェースの呼び出しによって状態が変化し、状態が既に変化している場合は、以前の結果を直接返します。
-
特定のキーに基づく幂等性
- 通常、個別のフィールドをバインドするか、ログテーブルを使用して記録します。存在する場合は、直接返します。
リトライ#
- インターフェース呼び出しの失敗時にリトライします
- 書き込み操作がある外部インターフェースでは、リトライを行わず、外部からの再リクエストを待つことをお勧めします。
- 提供されたインターフェースが幂等な返却をサポートしているかどうかを確認します。