この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

コントローラおよびコントローラ拡張のためのベストプラクティス

コントローラでの共有ルールの適用
他の Apex クラスと同様に、カスタムコントローラおよびコントローラ拡張はシステムモードで実行されます。
通常、コントローラまたはコントローラ拡張ではユーザの組織の共有設定、ロール階層および共有ルールを遵守する必要があります。これは、クラス定義で with sharing キーワードを使用することにより実行できます。詳細は、『Apex コード開発者ガイド』の「with sharing または without sharing キーワードの使用」を参照してください。

コントローラ拡張が標準コントローラを拡張する場合、標準コントローラのロジックはシステムモードで実行されません。代わりに、ユーザモードで実行されます。このモードでは現在のユーザの権限、項目レベルのセキュリティ、共有ルールが適用されます。

メモ

コントローラのコンストラクタを setter メソッドの前に評価
コンストラクタの前に評価される setter メソッドには依存しないでください。たとえば、次のコンポーネントでは、コンポーネントのコントローラがコンストラクタメソッドの前にコールされる selectedValue の setter に依存しています。
1<apex:component controller="CustCmpCtrl">
2      <apex:attribute name="value" description="" 
3                      type="String" required="true" 
4                      assignTo="{!selectedValue}">
5      </apex:attribute>
6      //...
7      //...
8</apex:component>
1public class CustCmpCtrl {
2      
3      // Constructor method
4      public CustCmpCtrl() {
5            if (selectedValue != null) {
6                EditMode = true;
7            }
8      }
9      
10      private Boolean EditMode = false;
11
12      // Setter method
13      public String selectedValue { get;set; }
14}
コンストラクタが setter の前にコールされるため、コンストラクタがコールされると selectedValue は常に null になります。このため、EditMode が true に設定されることはありません。
メソッドは複数回評価される場合がある (副���的影響を使用しない)
controller、action 属性および式のメソッドを含むメソッドは複数回コールできます。コントローラまたはコントローラ拡張でカスタムメソッドを作成するときの評価の順序または副次的影響には依存しないでください。