Apex開発で気をつけていることSalesforce自分がApexでの開発で気をつけていることのメモです。IDの項目はID型で定義する。IDの項目はID型で定義する。IDが入る項目ということは明確になります。IDなのかそれとも別のユニークキーなのか明確にならないので、複数人数で開発する際に認識が違ってしまうこともあります。気をつけたいのがID型で定義すると、文字列がIDとして正しくないとエラーになってしまいますが、後でエラーになるよりは最初でエラーとなった方が苦労しなくてすむと思います。トリガでの他オブジェクトの作成/更新処理を作り過ぎないトリガで、ある条件によって他のオブジェクトの作成/更新を行いすぎると、後々ガバナ制限の問題がでたり、データパッチを当てるときに注意が必要になったりします。(気をつけて作成/更新をする分にはいいのですが、知らなくて勝手に他のオブジェクトが作成されたり、更新されたりすることで障害になったりするのが問題です)利用者の理解が得られるなら、項目の作成/更新時に自動で動くのではなく、項目を更新後にボタンをクリックしてもらいボタンの処理として実装するのが安全だと考えています。※もちろん時と場合によるので、その時その時で判断は必要ですが。項目自動更新とトリガを混在させないトリガの作成が見えているオブジェクトならば、項目自動更新は設定せずに、トリガの中にロジックを全て持っていくのが良いと考えています。updateも走るので、トランザクションの中の処理量が増え、ガバナ制限や、性能への影響が出てくる可能性があります。項目自動更新だと実行される順番が制御できないので、トリガの方が実装が簡単な場合があります。そこでしか使わない処理は無名ブロックで囲み変数のスコープを限定する一時的な変数を使って制御をしたい時があります。次のようなコードがあります。=:contactset]);上記の「contactset」は「contactMap」を作成するためだけの一時的なSetで、後続では使わないものとします。その場合、次のように無名ブロックで囲むのはどうでしょうか。}こうすることで、処理で使いたい変数と、一時的な変数のインデントが分かれるのと、ブロック内で変数のスコープが限定されるので、後続の処理でうっかり「contactset」を使ってしまうことがなくなります。catchで囲ってしまうと、最初の作成/更新は正常で、次の作成/更新でエラーの場合、最初の作成/更新が実行されてしまいます。そのため、きちんとcatchの中でロールバックする処理を忘れないようにします。トリガのテンプレートは必ず使うちょっとしたトリガだとトリガ内にロジック書きたくなるのですが、一律テンプレートを使うことで統一した方が後々楽になります。}}1つつのオブジェクトに1つのトリガが推奨されていますが、1つのトリガに1つのハンドラクラスである必要はありません。トリガのロジックが膨大で複数人で開発する際には、最初に人数分のハンドラクラスを作れば効率はあがります。クラスを作ることでSOQLの発行回数が気になる場合は、static変数を使ってSOQLの発行回数を下げるやり方が効果的です。(開発を始める前にstatic変数でキャッシュするレコードを決め、あらかじめstaticメソッドを準備しておけば開発は楽になります)static変数を使う方法は次の記事に書いています。開発でちょっと便利になる関数のメモ(トリガ用:参照項目をSet<Id>で取得...いくつか関数を作ったのでメモです。showToastイベント(e.force:showToast)について調べたこと月別アーカイブ参加グループプログラミングはてなブログをはじめよう!crmprogrammer38さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。