10 основных передовых практик Apex в Salesforce для оптимального развития

Apex — это мощный язык программирования, используемый на платформе Salesforce для настройки и расширения ее возможностей. Чтобы обеспечить эффективный и удобный в сопровождении код, важно следовать передовым практикам при разработке кода Apex. В этой статье мы рассмотрим десять основных рекомендаций Apex, а также примеры кода, которые помогут вам писать высококачественный код в Salesforce.

  1. Используйте методы групповой обработки.
    Одним из ключевых моментов при разработке Apex является написание кода, который может эффективно обрабатывать операции с большими объемами данных. Для этого обязательно используйте коллекции (например, списки или наборы) при работе с операторами DML внутри циклов. Вот пример:
List<Account> accountsToUpdate = new List<Account>();
for (Contact contact : Trigger.new) {
    if (contact.Email != null) {
        Account acc = new Account(Id = contact.AccountId, Last_Contact_Date__c = Date.today());
        accountsToUpdate.add(acc);
    }
}
update accountsToUpdate;
  1. Избегайте операторов SOQL и DML внутри циклов.
    Выполнение запросов SOQL или операций DML внутри циклов может привести к проблемам с производительностью и исключениям из ограничений регулятора. Вместо этого увеличьте объем своего кода, собрав необходимые данные или записи вне цикла и обработав их коллективно. Вот пример:
List<Contact> contactsToUpdate = new List<Contact>();
Set<Id> accountIds = new Set<Id>();
for (Opportunity opp : Trigger.new) {
    accountIds.add(opp.AccountId);
}
contactsToUpdate = [SELECT Id, Name FROM Contact WHERE AccountId IN :accountIds];
// Process the contactsToUpdate list
  1. Внедрите обработку и ведение журнала ошибок.
    Правильная обработка ошибок имеет решающее значение в разработке Apex, поскольку позволяет гарантировать правильное обнаружение и устранение проблем. Используйте блоки try-catch для перехвата исключений и регистрации сообщений об ошибках для упрощения отладки. Вот пример:
try {
    // Code that may throw exceptions
}
catch (Exception ex) {
    System.debug('An error occurred: ' + ex.getMessage());
}
  1. Используйте оптимизацию запросов и поиска.
    При работе с большими наборами данных оптимизируйте запросы SOQL с помощью выборочных фильтров, индексации и оптимизации запросов. Кроме того, рассмотрите возможность использования SOSL (языка поиска объектов Salesforce) для эффективного текстового поиска. Вот пример:
List<Account> accounts = [SELECT Id, Name FROM Account WHERE Name LIKE 'Acme%' LIMIT 100];
  1. Пользуйтесь информацией об ограничениях регулятора.
    Salesforce вводит ограничения регулятора, чтобы предотвратить злоупотребления и обеспечить стабильность платформы. Помните об этих ограничениях и разрабатывайте свой код так, чтобы оставаться в их пределах. Используйте методы ограничения и соответствующие методы для активной обработки ограничений. Вот пример:
if (Limits.getDMLRows() + accountsToUpdate.size() > Limits.getLimitDMLRows()) {
    // Handle limit exceeded scenario
}
  1. Используйте описательные имена переменных и методов.
    Написание кода со значимыми и описательными именами переменных и методов улучшает читаемость и удобство обслуживания. Избегайте использования сокращений или загадочных названий, которые могут сбить с толку других разработчиков. Вот пример:
public void calculateMonthlyRevenue(List<Opportunity> opportunities) {
    // Method logic
}
  1. Следуйте шаблонам проектирования Apex.
    Используйте шаблоны проектирования, такие как Singleton, Factory и Service Layer, для написания модульного, масштабируемого и многократно используемого кода. Шаблоны проектирования обеспечивают структуру и согласованность вашей кодовой базы. Вот пример шаблона Singleton:
public class MySingleton {
    private static MySingleton instance;

    private MySingleton() {}

    public static MySingleton getInstance() {
        if (instance == null) {
            instance = new MySingleton();
        }
        return instance;
    }
}
  1. Реализуйте тестовые классы и модульное тестирование.
    Всегда пишите тестовые классы для проверки кода Apex. Стремитесь к максимальному покрытию кода и тестируйте различные сценарии, чтобы обеспечить стабильность и надежность вашего приложения. Вот пример:
@isTest
public class MyApexTestClass {
    @isTest
    static void testMethod1() {
        // Test logic
    }
}
  1. Используйте пользовательские настройки или пользовательские типы метаданных.
    Вместо жесткого кодирования значений используйте пользовательские настройки или пользовательские типы метаданных для хранения настраиваемых данных. Это упрощает обслуживание и обеспечивает гибкость без изменения кода. Вот пример использования пользовательских типов метаданных:
MyCustomMetadata__mdt config = MyCustomMetadata__mdt.getInstance('Default');
String apiKey = config.API_Key__c;
  1. Следуйте стандартам кодирования и контролю версий.
    Придерживайтесь стандартов кодирования Salesforce и лучших практик для обеспечения согласованности и читаемости кода. Используйте системы контроля версий, такие как Git, для отслеживания изменений и эффективного сотрудничества с другими разработчиками.