此贴是转载,并不是原创,原创地址 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 硬码
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 页面最佳实践
详细内容请见:
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的数据,详细信息查看:
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