美文网首页
Salesforce开发如何写出可维护、高扩展性的代码?

Salesforce开发如何写出可维护、高扩展性的代码?

作者: 自由侠Salesforce学习 | 来源:发表于2023-03-28 11:29 被阅读0次

当达到Salesforce中的配置限制时,可以通过代码扩展功能。编写良好的代码是可扩展的,能够随着业务的发展而增长。

但现实情况是,在许多系统中,遗留代码非常复杂,以至于很难在无风险的情况下对其进行更新。当代码又长又难读时,更新造成的不良影响往往无法预测。究竟该如何解决这个问题呢?

01

如何编写可维护的代码?

没有开发人员会故意写出糟糕的代码,大多数代码一开始都是运行良好的。但代码通常总是在变化。随着不断的更改,生成的代码会变得东拼西凑。随着更多更改被添加到同一代码库,方法和类开始变得越来越长,最后只能导致更改变得困难。

为了编写可维护的代码,可以遵循一些基本规则:第一,保持方法和类的小型化和模块化;第二,规范类和方法的名称,使代码更具可读性。

02

保持方法和类的小规模

将任何问题分解成小块,可以更便于处理,代码也是如此。要使代码易于管理,第一件事就是保持方法和类的小规模。例如,有一个名为updateContact的method,不要让它既更新业务机会,又向联系人发送电子邮件。确保一个method只做一件事。

如果一个method只做一件事,并且它有100%的测试覆盖率,除非该method封装的业务逻辑发生变化,否则永远不需要再次更改。将它们视为创建和收藏起来的小构建块,它们将始终按预期工作。

以下是一个long method的示例:

public void handleBeforeUpdate(List<Sale__C> newSales, Map<Id,Sale__C> oldMap){ 

 // update audit fieldsfor(Sale__c s : newSales) {if(oldMap !=null){// this is an update Sale__c oldRec = oldMap.get(s.id); if( oldRec.Audit_Completed__c ==true&& s.Audit_Completed__c ==false) {boolean canAudit =false; Id currentProfileId= userinfo.getProfileId(); Profile curUserProfile = [Select Id,NamefromProfilewhereId = :currentProfileId LIMIT1]; for(String pname: allowedProfileNames){if(curUserProfile.name == pname){canAudit =true; } }if(!canAudit){s.addError('Audit Box cannot be unchecked once checked'); } }elseif(s.Audit_Completed__c ==true){ s.Audit_Completed_Time__c = system.now(); s.Auditor__c = UserInfo.getUserId(); }else{// an admin is unchecking the checkboxsystem.debug('an admin is unchecking the sales audit checkbox');s.Audit_Completed_Time__c =null;s.Auditor__c =null; }}// insert - there is no oldmapelseif(s.Audit_Completed__c ==true){ s.Audit_Completed_Time__c = system.now(); s.Auditor__c = UserInfo.getUserId(); } } for(Sale__c s : newSales) { String category;if(s.Amount__c <1000){s.Sale_Category__c ='Small'; }elseif( s.Amount__c <10000){s.Sale_Category__c ='Medium'; }elseif(s.Amount__c <50000){s.Sale_Category__c ='Large'; }elseif(s.Amount__c >50000){s.Sale_Category__c ='Extra Large'; } }       }

这种代码样式可能会变得复杂,而且会变得很快。这里有一个使代码更具可读性的例子,你能看出区别吗?

public void handleBeforeUpdate(List<Sale__C> newSales, Map<Id,Sale__C> oldMap){ addErrorForUnauthorizedAuditChanges(newSales, oldMap);  

handleAuditFieldChanges(newSales, oldMap);  setSaleCategory(newSales);

}  

private void addErrorForUnauthorizedAuditChanges(List<Sale__C> newSales, Map<Id,Sale__C> oldMap){// error code here

}  

private void handleAuditFieldChanges(List<Sale__C> newSales, Map<Id,Sale__C> oldMap){// audit field change code here}  private void setSaleCategory(List<Sale__c> newSales){// sale category code here

}

03

保持类的内部工作私有

许多代码都公开了所有method,这使部分工作变得非常轻松。尤其是在为代码覆盖率编写测试类时,只需从测试类中调用所有method即可获取代码。但这是正确的做法吗?

试想一下,有一个验证地址的类。它调用其他三个具有基本逻辑的method来确保街道、城市和邮政编码的有效性。这些method是公开的。这个类被组织中需要验证邮政编码的其他开发人员注意到,因此他们决定在代码中使用该method。

public class AddressValidator{  

public Boolean isAddressValid(String address){

return(isStreetValid() && isCityValid() &&   isPostalCodeValid) 

 }  

public Boolean isStreetValid(){// validation code  

 } 

public Boolean isCityValid(){// validation code  

 }  

public Boolean isPostalCodeValid(){// validation code  }

}

后来,该企业决定购买一项服务,以更准确地验证地址。因此,这三个method可以被删除,并替换为对服务的调用。但是,无法删除isPostalCodeValid()方法,因为它正在其他地方使用。如果这些method一开始就是私有的,那么就不会被公开,也不会导致代码依赖。

public class AddressValidator{ 

 public Boolean isAddressValid(String address){

return PostalAddressValidationService.validateAddress(); 

 } 

 }

因此,只公开需要从编写的类之外看到的内容。将所有内容公开会产生意想不到的依赖性。任何内部工作都应该是私有的,这样就可以根据需要进行更改,而不会破坏类之外的任何东西。

04

规范method的命名

如果规范了method的命名,代码就不需要过多的注释。当你过段时间再阅读代码时,代码也会变得更容易阅读和理解。例如:

总之,为了保持代码的可维护性,开发人员应该努力保持小规模的方法和类。这意味着method应该一次只做一件事,method名称应该反映method中实际发生的内容。使用public修饰符仅显示必要的内容,并将其他所有设置私有。

🐯点击跳转salesforce开发《高薪岗位》

相关文章

  • 浅谈iOS编程思想

    编程思想的目的是写出可维护性高,扩展性高的代码,本质是降低系统复杂度,减少重复,减少代码的变更。 面向对象编程:一...

  • 谈谈如何写好单元测试?

    一 首先什么是好代码? Q1:好代码应具备可读性,可测试性,可扩展性等等,那么如何写出好代码? A:设计思想 & ...

  • 标准lims系统有哪些核心功能

    模块1-门户管理 门户管理组件具备灵活的可开发与维护功能,内置高速缓存,代码开源。框架具备扩展性、安全性、高效性、...

  • 从哪些维度评判代码质量的好坏?如何具备写出高质量代码的能力?

    代码描述常用词汇:灵活性(flexibility)、可扩展性(extensibility)、可维护性(mainta...

  • 高质量的代码

    高质量的代码具有:可维护性、可读性、可扩展性、灵活性、简洁性(简单、复杂)、可复用性、可测试性。 可维护性(mai...

  • 架构原则

    1、考虑可维护性、可测试性、可扩展性 2、重构 3、学习成本 4、减少代码量,代码量减少直接导致出问题的风险降低 ...

  • jmeter(一)基础介绍

    一,优点 开源工具,可扩展性非常好 高可扩展性,用户可自定义调试相关模块代码 精心简单的GUI,小巧灵活 完全的可...

  • 设计模式

    设计模式的概念 被反复使用的一种代码设计经验。使用设计模式的目的是为了可重用代码,提高代码的可扩展性和可维护性。使...

  • 移动开发中的软件架构

    在移动开发领域,我们往往会遇到软件的可扩展性、可复用性以及可维护性等问题,这就涉及到如何做好软件的架构设计或者重构...

  • iOS代码规范

    iOS编程规范0规范 0.1前言 为?高产品代码质量,指导广大软件开发人员编写出简洁、可维护、可靠、可 测试、高效...

网友评论

      本文标题:Salesforce开发如何写出可维护、高扩展性的代码?

      本文链接:https://www.haomeiwen.com/subject/giwtddtx.html