Salesforce代码规范

此贴是转载,并非原创,原创地址  https://wenku.baidu.com/view/773966d3d1f34693dbef3e55.html

1.命名规范

命名规范中禁止出现汉语拼音和无实际意义的命名。

1.1 对象api

规范:把对象标签中的单词以首字母大写的方式连接起来,每个单词之前用“_”下划线连接。

示例:对象标签为Weibo_Account,相对应的api名称应该为:Weibo_Account__c,其中后缀“__c”是系统自动为我们加上去的,我们不需要去填写他。

注意:如果对象标签填写的是中文,那么我们在定义对象名的时候应该把标签用英文翻译过来在按照上面的规则定义对象名称,如:

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
TriggerTrigger 名称=对象名+功能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

转载于:https://www.cnblogs.com/d-yw/p/10308179.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值