Русский
Русский
English
Статистика
Реклама

SalesforceApex как первый язык программирования. Плюсы и минусы

Моимпервым языком программирования сталApex.ЭтоJava-подобный язык, который автоматизируетbackend-логику в приложения на платформеSalesforce.com.

Нельзя сказать, что я до этого не был знаком с ООП или другими языками.Мое знакомство ограничивалось теоретическими знаниями,полупройденнымикурсами наCodecademyили лабораторными работами в институте.Естественным образом все тонкости технологии, синтаксис языка,его возможностии ограничениябыстро выветривались из памяти, поскольку практического применения этим навыкам я не находил.

В 2019 годуя пришёлвAccentureкак специалист по поддержке и доработкеCRMSalesforce.Диапазон задач сначала был очерчен недостаточно чётко, поэтому я стал изучатьинструменты как администрирования, так и разработки наSalesforce.

Сейчасмойопыт разработкинаApexокологода, я стал сертифицированным разработчикомSalesforce.Могу подвести первые итоги.

Будет полезно для:

  • новичковв программировании

  • администраторовSalesforce,которые хотят освоить разработку

  • опытных разработчиков, которые хотят узнать о разработке на платформе Salesforce

Ниже я кратко приведу все плюсы и минусы Apex, с точки зрения выбора его как языка для обучения. Затем подробнее рассмотрю каждый пункт.

Плюсы Apex:

  1. Apexприучает к написанию оптимального,ресурсоэффективногокода

  2. Apexприучает кюнит-тестированию и кtest-drivenразработке

  3. Apexимеетединую и обновляемую документацию, собранную на порталеSalesforce

  4. Apexимеетout-of-the-boxдоступкБД(ненужно писать коннекторов)

  5. Apexэто на 90%Java.Вы с легкостью сможетепониматьJava-кодпосле разработки наApex

  6. Salesforceпоставляет собственную онлайнIDEDeveloperConsole,которая позволяет новичку быстро начать программировать без погружения вмиркастомныхIDE

  7. Apexможно осваивать вTrailhead-песочницах,без установки и настройки дополнительного софта.

  8. Trailheadобучает программированию наApexс полного нуля.Trailhead-модули обучают вас концепциям ООП и синтаксисуApexна языке простых смертных (к сожалению, только на английском)

Минусы Apex:

  1. Мало материалов на русском языке (почти нет)

  2. Немногочисленное русскоязычное сообщество

  3. Применимость только для продуктов на платформеSalesforce

Apexприучает к написанию оптимального,ресурсоэффективногокода

Ресурсоэффективныйкод вApexэто не блажь и не рекомендация, а почти необходимое условие.ПосколькуSalesforceэто облачная платформа,программные ресурсыу каждого клиента платформы ограничиваютсялицензией. Иными словами, ресурсы, которые есть у вас враспоряжении, как разработчика, ограничены лимитамиSalesforce.

Код, исполнение которого нарушает лимиты, приведет к системной ошибке и откату транзакции.По этой причине уSalesforceесть рекомендации, которых нужно придерживаться, чтобы писать оптимальный код.

Этот пункт я считаюплюсомApex,поскольку вы с самого начала привыкаете писать оптимальный код, которыйэкономно распоряжается облачными ресурсами. Это формирует полезныйдля разработчика способ мыслить.

Apexприучает к юнит-тестированию и кtest-drivenразработке

Покрытие кода юнит-тестами на 75%обязательное условиедля переноса этого кода наPROD-среду.Поэтомувы с самого начала учитесьсоздавать тест-классы. Это полезный навыкменятьментальный ракурс, с которого вы смотрите на свой код,таким образом, чтобынаписать тест.

Salesforceв этом вопросе идет дальшеи пропагандируетпри разработке начинать с написания юнит-тестов.Это помогает лучше осознать все пользовательские сценарии, которые должен обрабатывать ваш будущий код.ПоэтомуApex,как первый язык программирования,не оставляет вам выбора: вы сразу учитесь лучшим практикам и осознанному подходу к процессу разработки.

Пример класса и тест-классавApex

Класс:

public class TVRemoteControl {     // Volume to be modified     Integer volume;     // Constant for maximum volume value     static final Integer MAX_VOLUME = 50;              // Constructor     public TVRemoteControl(Integer v) {         // Set initial value for volume         volume = v;     }              public Integer increaseVolume(Integer amount) {         volume += amount;         if (volume > MAX_VOLUME) {             volume = MAX_VOLUME;         }          return volume;     }          public Integer decreaseVolume(Integer amount) {         volume -= amount;         if (volume < 0) {             volume = 0;         }           return volume;     }              public static String getMenuOptions() {         return 'AUDIO SETTINGS - VIDEO SETTINGS';     }         } 

Тест-класс:

@isTest class TVRemoteControlTest {     @isTest static void testVolumeIncrease() {         TVRemoteControl rc = new TVRemoteControl(10);         Integer newVolume = rc.increaseVolume(15);         System.assertEquals(25, newVolume);     }          @isTest static void testVolumeDecrease() {         TVRemoteControl rc = new TVRemoteControl(20);         Integer newVolume = rc.decreaseVolume(15);         System.assertEquals(5, newVolume);             }               @isTest static void testVolumeIncreaseOverMax() {         TVRemoteControl rc = new TVRemoteControl(10);         Integer newVolume = rc.increaseVolume(100);         System.assertEquals(50, newVolume);             }          @isTest static void testVolumeDecreaseUnderMin() {         TVRemoteControl rc = new TVRemoteControl(10);         Integer newVolume = rc.decreaseVolume(100);         System.assertEquals(0, newVolume);             }          @isTest static void testGetMenuOptions() {         // Static method call. No need to create a class instance.         String menu = TVRemoteControl.getMenuOptions();         System.assertNotEquals(null, menu);         System.assertNotEquals('', menu);     } } 

Apexимеетединуюиобновляемуюдокументацию,собраннуюнапорталеSalesforce

SalesforceразвиваетApexкак основной язык для разработки на своей проприетарной платформе, поэтому всеобновления и вся документация содержатся на едином официальном порталеApex DeveloperGuide.

На ней собраны всесистемные классы и методы, подробно описано их назначениеи применение.Можно найти однозначный ответ на большинство вопросов. А вопросов при обучениивсегда много.

Apexимеетout-of-the-boxдоступкбазе данных

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

Вот несколько примеровобращения к базе данных из кода:

Account A = new Account(Name='xxx');insert A;Account B;// A simple bindB = [SELECT Id FROM Account WHERE Id = :A.Id];// A bind with arithmeticB = [SELECT Id FROM Account      WHERE Name = :('x' + 'xx')];String s = 'XXX';// A bind with expressionsB = [SELECT Id FROM Account      WHERE Name = :'XXXX'.substring(0,3)];// A bind with an expression that is itself a query resultB = [SELECT Id FROM Account     WHERE Name = :[SELECT Name FROM Account                    WHERE Id = :A.Id].Name];Contact C = new Contact(LastName='xxx', AccountId=A.Id);insert new Contact[]{C, new Contact(LastName='yyy',                                     accountId=A.id)};// Binds in both the parent and aggregate queriesB = [SELECT Id, (SELECT Id FROM Contacts                 WHERE Id = :C.Id)     FROM Account     WHERE Id = :A.Id];// One contact returnedContact D = B.Contacts;// A limit bindInteger i = 1;B = [SELECT Id FROM Account LIMIT :i];// An OFFSET bindInteger offsetVal = 10;List<Account> offsetList = [SELECT Id FROM Account OFFSET :offsetVal];// An IN-bind with an Id list. Note that a list of sObjects// can also be used--the Ids of the objects are used for // the bindContact[] cc = [SELECT Id FROM Contact LIMIT 2];Task[] tt = [SELECT Id FROM Task WHERE WhoId IN :cc];// An IN-bind with a String listString[] ss = new String[]{'a', 'b'};Account[] aa = [SELECT Id FROM Account                 WHERE AccountNumber IN :ss];

Apexэтона90%Java.Вы с легкостью сможете пониматьJava-код после разработки наApex

SalesforceсоздавалаApexна основе синтаксисаJava.Есть небольшие исключения, обусловленные спецификойSalesforce.Все отличия собраны на этой странице.

Но,если посмотреть на методы работы с примитивамии коллекциями, то они работают аналогичноJava.

Сравните, к примеру, методы работы соStringвApexиString в Java.

Выходит, что обучаясьApexвы во многом обучаетесь иJava.Это правило работает и наоборот.

Если вы решите перейти вJava-разработчики,вам не придется начинать с нуля. А полезные парадигмы мышления изApex-разработки дадут вам хороший фундамент длянаписанияресурсоэффективногоJava-кода.

Salesforceпоставляет собственную онлайн IDEDeveloperConsole

Developer Console позволяет новичку быстро начать программировать без погружения в миркастомныхIDE.

Я помню,какраньше делал попытки самостоятельноучитьPython,C#. Иначинать нужно было с установкиIDE, ее настройки. Разобраться,как работает этаIDEотдельнаяистория. Много папок, много кнопок, много пунктов меню, много панелей.Это было серьёзным барьером на пути начинающего разработчика.

СApexничего подобного не было, поскольку любой инстансSalesforceсодержит в себевстроеннуюIDE, которая называетсяDeveloperConsole.Устанавливать ничего не нужно, достаточно открытьв браузереDeveloperConsoleи сразу писать код.Код можно запустить сразу и проверить его работу в реальном(или песочном)приложении.

Да, более опытные разработчикиSalesforceпредпочитают работать вVisualStudioCodeилиEclipse,но дляначинающихDeveloperConsoleто, что нужно.

DeveloperConsoleвыглядит так:

Apexможно осваивать вTrailhead-песочницах, без установки и настройки дополнительного софта

Salesforceразработал собственную платформу для обученияtrailhead.salesforce.com.Она великолепна геймификацией процессаобучения и тем, что создавать тестовые среды можно непосредственно со страницы практического задания:

В рамках обучения можно иметь одновременно до 10 (!) активных песочниц.Песочницы можно удалять и создавать новыедля каждой следующей задачи, а можно работать в одной песочнице по нескольким заданиям сразу.Любая новая песочница создаётся с ужепредзаполненнымиданными, чтобы вы могли сразу начатьэксперементироватьи не тратить время на заполнение тестовыми данными.

Trailheadобучает программированию наApexс полного нуля

ВTrailheadмножество обучающих модулей и троп (последовательностей модулей).Главный плюс для начинающего в том, чтодля обучения программированию можно выбрать тропу,которая предназначена дляучеников с нулевым опытом или только садминскимопытом.В таком случае обучение начнется с самых основ ООП,а в качестве примеров будет использоватьсяApex-код.

Примеры обучающих модулей по разработке на Apex для администраторовПримеры обучающих модулей по разработке на Apex для администраторов

Все модулиTrailheadнаписаны на английском языке.Авторы модулей стараются максимально просто описывать концепции, поэтому языковой барьер быстро перестает чувствоваться.

Текст часто снабжается забавными примерами и просто шутками. Типичный пример на рисунке ниже:

В изученииApexесть и минусы.Ниже рассмотрю их подробнее.

Мало материалов на русском языке (почти нет)

На русский язык не переведенытакие официальные ресурсы, как:

  1. Trailhead

  2. Apex Developer Guide

Это затрудняет обучение ребятам, которые не знают английский язык.

Немногочисленное русскоязычное сообщество

Количестворазработчиков из России и СНГ относительнонебольшое, поэтому достаточно трудно найтиблоги и обсуждениеApexна русском языке.Вот,например,как выглядят профессиональные сообществаSalesforce-специалистовВКонтакте

Надо заметить, чтов Беларуси разработка наSalesforceстремительно популяризуется. В русскоязычномYoutubeпоявляется всё больше качественных видео проSalesforceиApex(пример). Количествоспециалистов растёт, но работы всё ещё больше, чем людей.

Этот минус можноконвертировать в преимущество вас как специалиста на рынке труда. Чем меньшеспециалистов, тем они дороже.

Применимость только для продуктов на платформеSalesforce

В отличие отJava,Pythonи других кроссплатформенных языков,Apexможет использоваться только для разработки на платформеSalesforce.com.Несмотря на многообразие продуктовSalesforce, вы ограничены этим стеком.

Заключение

Apexпрекрасно подходитдля обучения программированию.Правила и рекомендацииSalesforceс самого начала научат вас лучшим практикам ООП, которыеприменимы к коду на любом другом языке.

Однако,лучшепосмотреть в сторону других языков для старта, если:

  • Вы не планируете профессионально развиваться вкачестве специалистаSalesforce;

  • Вы плохо владеете английским языком. Это затруднит вам изучение любого языка программирования, ноApex- в особенности.

Источник: habr.com
К списку статей
Опубликовано: 18.01.2021 18:09:31
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Блог компании accenture

Облачные вычисления

Crm-системы

Apex

Salesforce

Salesforce.com

Accenture

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru