Apexクラス
- IDのハードコーディングはどんなクラスでも容認できない
- 空のcatchブロックを書かないこと
- プロダクションコードでsystem.debugのコードを削除しないこと
- 明確な共有ルールの強制実行しないユースケースがない限り、with sharing句ですべてのクラスを宣言する
- FORループ内にSOQLクエリまたはDMLステートメントがないこと(それらを実行する他のメソッドの呼び出しを含む)
- データを適切に抽出する(特に大量データの場合)
- 汎用機能をUtilに保存する
- ガバナ制限を超えないようにするため、ApexのLimitsメソッドの使用
- クラスの主要機能ではない補助メソッドなどを追加する場合はHelperクラスを使用する
- 全てのhelperクラスとメソッドはBulkifyする - エラーを監視して対処する場合は、未処理エラーはエラーログオブジェクトにレコードを記録する - WSDLから作成されたWebサービスクラスは、WSDLを生成したシステム名で始まりWebServiceで終わる名前をつける。また、WSDLがスキーマも定義している場合、それらのクラスの名前はSchemaで終る - WebサービスおよびFutureメソッドでは、ビジネスロジックを明示的に書かない - Webサービスは常に成功または失敗の通知を返す必要があるため、無効にすることはできず、強力なエラー処理が必要 - エラーなどのメッセージは、アプリで共通のカスタムラベルに定数で定義する - Selectした全内容をfor文でチェックする場合は、ヒープサイズ制限を回避するため、極力SOQL forループを使用する