Apex内のハードコードをどのようにして回避するか

前書き

雑に書きます。

「選択リスト値」・「レコードID」辺りを念頭にしています。

あり得る選択肢

  • コード内にべた書き(=ハードコード)
  • 定数を当該クラスの上の方にまとめる
  • 定数クラスを作る
  • SOQLで取ってくる
  • カスタム設定
  • カスタムメタデータ

選択リスト値の場合

原則、定数クラスを用いる。

開発規模が小さければ、クラス上部で定数を定義。

レコードIDの場合

■利用するレコードがリリース後に変更される可能性がゼロ

→DevelopeNameなどを条件としたSOQLで取得する

※定数化はSandboxとのレコードIDの差異への対応として不適切

■利用するレコードがリリース後に変更される可能性があるが、利用するレコードの数が変動する可能性がゼロ

→カスタム設定

■利用するレコードがリリース後に変更される可能性があり、また利用するレコードの数に関しても動的に増減する可能性がある

→カスタムメタデータ(にSOQLをかける実装)

Salesforce

Posted by regardie