Salesforce代碼規範

此貼是轉載,並不是原創,原創地址  https://wenku.baidu.com/view/773966d3d1f34693dbef3e55.html
html

1.命名規範web

命名規範中禁止出現漢語拼音和無實際意義的命名。算法

1.1 對象api設計模式

規範:把對象標籤中的單詞以首字母大寫的方式鏈接起來,每一個單詞以前用「_」下劃線鏈接。api

示例:對象標籤爲Weibo_Account,相對應的api名稱應該爲:Weibo_Account__c,其中後綴「__c」是系統自動爲咱們加上去的,咱們不須要去填寫他。app

注意:若是對象標籤填寫的是中文,那麼咱們在定義對象名的時候應該把標籤用英文翻譯過來在按照上面的規則定義對象名稱,如:模塊化

1.2 字段api函數

規範:用描述字段的英文單詞鏈接,每一個單詞首字母大寫,單詞之間用「_」下劃線鏈接。
性能

示例:字段名稱爲Weibo Account ID,對應字段API名稱爲:Weibo_Account_ID__c另外若是有Lookup(查找)類型的字段,要用被引用的對象名做爲字段名,如:Weibo Account查找的是Account這個對象,那麼字段名就應該爲Account而非其餘值,子級關係名稱就是當前這個對象的名稱Weibo_Account,由於Weibo_Account是Account的子對象。測試

1.3 Class  

規範:單詞連寫,單詞首字母大寫。

示例:OrderItem。

1.4 Trigger

規範:Trigger名稱=對象名+功能名稱單詞連寫,單詞首字母大寫。

示例:Account對象上有一個自動命名的Trigger就應該爲:AccountAutoSetName

1.5 Visualforce

規範:以頁面要實現的功能概要命名,單詞連寫,單詞首字母大寫。

示例:OrderTarcking

1.6 VF頁面控制類

規範:控制類名稱=VF頁面名稱+Controller

示例:OrderTarckingController

1.7 Web Service Class

規範:WebServiceClass名稱=類的功能描述+WS

示例:CalculationPriceWS

1.8 Batch Class

規範:Batch 的功能描述而且以Batch結尾。

示例:AutoUpdateAccountStatusBatch

1.9 Schedule Class

規範:Schedule的功能性描述+Schedule結尾。

示例:AutoUpdateAccountStatusSchedule

1.10 測試類

規範:測試類命名以「Test_」開頭,鏈接上被測試的類名

示例:Test_AutoUpdateAccountStatusBatch

1.11 常量

規範:全部的字符都必須大寫,採用有意義的單詞組合表達式,單詞與單詞之間用「_」下劃線隔開,命名儘可能簡短,不要超過16個字符。

示例:static final integer PAGE_SIZE = 10;

1.12 變量

規範:變量命名通常採用大小寫混和的方式,第一個單詞的首字母小寫,其後單詞的首字母大寫,變量名通常不要用下劃線或美圓符號開頭。變量名應簡短且有意義,即,可以指出其用途。除非是一次性的臨時變量,應儘可能避免單個字符的變量名。

示例:String userName =「 」;

1.13 方法

規範:方法名應是一個動詞或動名結構,採用大小寫混和的方式,其中第一個單詞的首字母用小寫,其後單詞的首字母大寫。

示例:public void checkStatus(){};

注意:每一個方法前必須加說明包括:參數說明、返回值說明、異常說明。若是方法名實在是太長能夠對變量名縮寫,可是必須添加相應的說明。

2. 全部命名一覽表

類型 規範 示例
對象 API 對象名稱單詞用下劃線鏈接 Weibo_Account__c
字段 API 字段名稱單詞用下劃線鏈接 Weibo_Account_ID__c
Class 單詞連寫,首字母大寫 OrderItem
Trigger Trigger 名稱=對象名+功能 AccountAutoSetName
Visualforce頁面 頁面功能描述 OrderTracking
VF 頁面控制類 VF 頁面的名+Controller 結尾 OrderTrackingController
WebService Class 類功能描述+WS 結尾 CalculationPriceWS
Batch Class 功能描述+Batch 結尾 AutoUpdateAccountStatusBatch
Schedule Class 功能描述+Schedule 結尾 AutoUpdateAccountStatusSch
測試類 Test_+Class 名或 Trigger 名 Test_OrderItem

 

3.代碼規範

3.1代碼格式

規範:代碼縮進要保持一致的縮進量,if、for、while、do 等語句儘可能自佔一行,執行語句不得緊隨其後,不論執行語句有多少都要加{},這樣能夠美觀易讀防止書寫失誤;

示例:若是用這種寫法代碼以下感受很亂,如:If (….) {

                     }

          這種寫法可讀性較好,如:if (….) 

                     {

                     }

3.2 代碼嵌套

  儘量的使用淺嵌套,禁用深嵌套

  以下爲深嵌套:

  

這段代碼中在for循環中有好多判斷,因此致使了,代碼嵌套很深,這段代碼能夠憂化成以下寫法,先判斷不符合條件的,利用continue語句來控制嵌套層次,以下:

3.3代碼註釋

3.3.1 組件註釋

在類和Trigger的頭部添加做者、建立時間、功能描述和約束信息,若是此類須要修改,那麼要記錄修改時間,修改人,修改內容簡介其中:做者、建立時間、功能描述是必需的,結束信息可選,修改人,修改時間,修改內容是必需的。

/*

做者:Michael

建立時間:2017-7-11

功能:(主要功能簡介,核心功能,複雜算法)

約束:(可選)

修改人:Sunny

修改時間:2018-01-02

修改內容:

*/

public class ClsMiddlewareServiceWrapper implements lMiddlewareServiceWrapper

{

}

3.3.2 方法註釋

對幾乎每一個方法都應有適當的說明,位於方法聲明以前,包括:說明,參數說明、異常說明、返回值說明和特別說明等,如:

3.3.3 變量與關鍵代碼塊註釋

變量要有註釋,關鍵的代碼塊也要有相應的註釋說明。

//用戶部門

string strRepDepartName =‘it’;

//根據部門查詢用戶信息

List<User> users = [select Id,Department,UserRoleId from User where Department=:strRepDepartName];

代碼塊註釋

4.最佳實踐

4.1 ApexCode 最佳實踐

4.1.1 避免在for循環中使用SOQL 查詢和 DML 操做

Salesforce有限制一次請求中不容許超過100個SOQL查詢,和150個DML 操做,因此避免在for循環中作這些操做,儘可能使用集合的方式批量操做看下面的代碼能夠發現,查詢語句和更新語句都放在了循環裏,若是一次性插入200條數據的話就會超出上面的限制。

修改爲批量執行的寫法:

在上面的代碼中還發現一點就是我在查詢客戶的時候只查詢了一個「Name」字段,由於我須要更新這個字段的值,沒用到其餘的字段。因此,在咱們寫查詢語句的時候要用到哪些字段,查詢哪些字段,以便提升性能。

4.1.2 測試類

測試類有三部分:

1,準備數據

2,執行測試類

3,驗證

有三個要求

1,代碼覆蓋率75%

2,Case 分支覆蓋85%

3,測試結果和預期一致

4.1.3 運算符

賦值操做符、比較操做符、算術操做符、邏輯操做符、位域操做符,如「=」、「+=」、「>=」、「<=」、「+」、「*」、「%」、「&&」、「||」、「<<」、「^」等二元操做符的先後應當加空格 美觀,易讀;

儘可能不這樣寫:

要這樣寫:

每個運算符先後要加一個空格,美觀易讀。

4.1.4代碼長度控制

代碼行最大長度宜控制在70至80個字符之內;長表達式要在低優先級操做符處拆分紅新行,操做符放在新行之首(以便突出操做符),拆分出的新行要進行適當的縮進,使排版整齊,語句可讀。

如:這樣的寫法太長了,不容易看

能夠換行來控制一下長度,如下寫法爲推薦的方式:

4.1.5 硬碼

  • 禁止在代碼中出現硬碼Id,RecordTypeID,簡檔id,用戶id。
  • 禁止在代碼中出現硬碼引用記錄名稱,用戶名稱,簡檔名稱,角色名稱
  • 若是特殊狀況必需要引用的話,建議考慮用CusomeSetting解決,這樣也避免了硬碼引用的問題,由於CusomeSetting是可配置能夠修改的。

4.1.6模塊化

不推薦一個方法內超過100行以上代碼,除非特殊狀況,要把大的代碼塊拆分功能到不一樣的方法中。

若是多個組件應用相似邏輯,考慮分離公用方法。

4.2 Force.com Apex Code Best Practices

http://wiki.developerforce.com/page/Apex_Code_Best_Practices

4.3 Force.com Developer Resource

HomePage: http://developer.force.com/

Document: http://wiki.developerforce.com/page/Documentation

4.4 Visualforce 頁面最佳實踐

詳細內容請見:

 http://www.salesforce.com/us/developer/docs/pages/index_Left.htm#CSHID=pages_best_practices_performance.htm|StartTopic=Content%2Fpages_best_practices_performance.htm|SkinName=webhelp

4.5 字段集

在Salesforce的每一個業務對象中都有一個叫字段集的功能,咱們能夠動態綁定一個字段集顯示在VF頁面上,這樣的好處是,當咱們須要調整須要顯示的字段時,不須要去修改任何VF頁面標籤和Apex Code,只須要調整字段集中的字段和擺放順序就能夠實現。

例:以下圖所示是一個Account詳細信息頁面下的一個VF頁面,顯示的內容是這個客戶下全部的聯繫人信息:

咱們看到有好多列,當咱們須要調整這些列的時候不須要去改任何代碼,只去到聯繫人這個對象上找到這個頁面上綁定的字段集來調整就OK了。

此例中綁定的是DisplayColumns這個字段集,咱們能夠打開它來編輯它,編輯頁面上顯示出了聯繫人上全部的字段,和一個FieldsSet,若是咱們須要哪些字段就把它們拖到下面的字段集中就行了,而後保存在刷新頁面就能夠了,最多限制爲50個字段,詳細官方解說請見:http://www.salesforce.com/us/developer/docs/pages/Content/pages_dynamic_vf_field_sets.htm

4.6 SOQL查詢和SOSL查詢

使用Salesforce Object Query Language(SOQL)來查詢Salesforce的數據,詳細信息查看:http://www.salesforce.com/us/developer/docs/soql_sosl/index_Left.htm#StartTopic=Content/sforce_api_calls_soql.htm

其中包含了語法、聚合函數,關係查詢等等。使用Salesforce Object Search Language(SOSL)查詢Salesforce的數據,詳細信息查看:

http://www.salesforce.com/us/developer/docs/soql_sosl/index_Left.htm#StartTopic=Content/sforce_api_calls_sosl.htm

4.7 最佳實踐參考文章

ApexCode 最佳實踐:http://wiki.developerforce.com/page/Apex_Code_Best_Practices

Visualforce 最佳實踐:http://www.salesforce.com/us/developer/docs/pages/index_Left.htm#CSHID=pages_compref_additional_render_pdf.htm|Start

Topic=Content%2Fpages_compref_additional_render_pdf.htm|SkinName=webhelp

Force.com 集成設計模式與最佳實踐:http://www.salesforce.com/us/developer/docs/integration_patterns/integration_patterns_and_practices.pdf

Force.com 大數據最佳實踐:http://www.salesforce.com/us/developer/docs/ldv/salesforce_large_data_volumes_bp.pdf

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息