Browsing category

Apex

Refactoring

Demorou, mas enfim saiu o nosso primeiro Podcast, e já estamos com o segundo na fila de edição :) O nosso primeiro episódio foi com meu grande amigo Lucas Caton, e falamos um pouco sobre Refactoring. Quando fazer, porque fazer e  como fazer. Fique livre para fazer os seus comentários sobre o tema abordado. Escute também seu aplicativo de podcast preferido: Apple iTunes | Android ——— Blog do Lucas Caton: https://www.lucascaton.com.br/ Lint para Lightning Components: https://developer.salesforce.com/docs/atlas.en-us.lightning.meta/lightning/cli_usage.htm Lint para Apex Code: https://pmd.github.io/pmd-5.5.7/index.html IDE que uso para desenvolver para o Salesforce: https://www.jetbrains.com/idea/download/ Plugin que uso na IDE: JetForcer  (Sim, é paga, mas vale cada Trump! Acredite!!!) https://plugins.jetbrains.com/plugin/9238-jetforcer–the-smartest-force-com-ide CLI para Salesforce (It’s free): https://developer.salesforce.com/tools/sfdxcli   Até o próximo podcast :)  

Por que devemos evitar instruções DML e SOQL em Loop

Hoje iremos entender o porque devemos evitar o uso instruções DML e SOQL dentro de laços de iteração no Apex. Como vocês sabem o Salesforce é uma plataforma completamente WEB, ou seja, temos que sempre otimizar o funcionamento para que tenhamos um bom desempenho e sempre proporcionar uma boa experiência ao usuário. Durante esse período de quase 2 anos atuando com desenvolvimento Salesforce me deparei muitas vezes com um “erro” comum e grave por parte de desenvolvedores que é o uso de instruções SOQL e DML dentro de laços ou loops, como preferirem chamar. Você saberia me dizer o por que não devemos adotar essa prática em nossos desenvolvimentos? Caso saiba, parabéns você é uma pessoa que vai deixar o próximo Desenvolvedor da sua organização muito feliz, aos que não sabem, chegou a hora de descobrir. Limitações de “Banco” Salesforce e onde isso se aplica? Dentro do Salesforce temos diversas limitações, e algumas delas são referentes às operações DML e SOQL por transações do Apex. Abaixo uma tabela com as limitações que iremos abordar nesse post: Limitação Quantidade Erro (Exceder o Limite) Number of SOQL queries(Quantidade de operações SOQL que podemos executar em uma transação) 100 Too many SOQL queries: […]

Construindo Lightning Components Baseado em Dados

Lightning Components = f(dados);   Lightning Components foi uma aposta muito boa da salesforce ( Minha opinião ), porque podemos montar componentes reutilizáveis, minimizando o famoso “Copia daquela tela e faz igual”, porém é uma forma diferente de pensar ao desenvolver e em algumas situações fica difícil definir como e o que componentizar. Estarei mostrando como desenvolver Lightning Components baseado em dados, mas antes darei uma breve explicação de um conceito importante que citarei aqui. Já ouvir falar em programação funcional ou programação declarativa? Se sim, maravilha, você entenderá isso de forma bem simples, mas para quem não conhece vamos la… Para exemplificar usarei Javascript (Que é uma linguagem funcional). Quando falamos de programação funcional estamos querendo dizer isso aqui:  y = f(x). Sim, estamos usando o que aprendemos na escola, mas o que isso significa? Significa que não devemos nos preocupar em como as dados são tratados, mas sim com o que queremos que seja retornado. Exemplo: var array = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]; var primeNumbers = array.filter(n =>  n < 4 || (n % 2 !== 0) && (n % 3 !== 0)); console.log(primeNumbers);   Neste exemplo temos um array com números de 1 a 20 e depois iteramos item a item […]

Trabalhando com Cookies em Páginas Visualforce

Trabalhando com Cookies em Páginas Visualforce nos permitirá manter um controle de estado/conexão no Salesforce, permitindo guardar informações no Navegador do usuário e recuperar essas informações quando recebermos uma requisição na Controller, bom, falando assim pode até parecer complicado, mas fique tranquilo, porque tudo isso é mais fácil do que parece. Para que serve os Cookies O protocolo HTTP é stateless, ou seja, ele não mantém um estado/conexão. Toda Requisição Get que o usuário faz ao servidor do Salesforce, acarretará em uma nova requisição e resposta. Temos uma excessão nos casos de uma Requisição Postback, que falei no post anterior onde falamos sobre o Ciclo de Vida de uma Página Visualforce e sua ViewState, sugiro que de uma olhada se ainda não leu o post. As requisições são independentes e possuem um tempo de vida (conexão, troca de mensagem, encerramento da conexão). O servidor do Salesforce não é capaz de identificar se duas requisições vieram de um mesmo navegador, e o mesmo não faz nenhum gerenciamento em memória para que mensagens sejam compartilhadas entre requisições. É para suprir esta necessidade que entra por exemplo o uso de cookies. Mas afinal, o que é um Cookies Através de cookies o servidor do Salesforce é capaz de trocar informações de estado com o […]

Entendendo o Ciclo de Vida de uma Página Visualforce

Quando um usuário visualiza uma Página do Visualforce, as instâncias da Controller e Components associados à página são criados pelo servidor do Salesforce. A ordem em que esses elementos são executados pode afetar a forma como a página é exibida para o usuário. Por isso é importante entendermos exatamente como funciona o ciclo de vida de uma Página Visualforce e assim, tirar o melhor proveito disso

Entendendo os Testes Unitários

Se você é um desenvolvedor Salesforce, posso afirmar que você já sofreu com a cobertura de 75% dos testes unitários exigidas pelo Salesforce, não é mesmo? O Apex nos fornece uma estrutura de teste que nos permite escrever testes unitários, executar os testes, verificar resultados dos testes unitários e também ver o resultados de cobertura de código.   Entendendo os Testes Unitários Testes são sem dúvidas a chave para o sucesso da sua aplicação. Os testes unitários nos permite validar que tudo funciona como esperado, evitando assim comportamentos inesperados, recomento fortemente que você use um processo de desenvolvimento orientado a testes, ou seja, faça o desenvolvimento dos seus testes unitários ao mesmo tempo que realiza o desenvolvimento dos seus códigos, evitando ao máximo deixar tudo para última hora. Existem duas maneiras de realizar um teste na sua aplicação. Uma delas é através da interface do usuário do Salesforce, que sem dúvida é muito importante, mas apenas o teste através da interface do usuário não irá capturar todos os casos de uso do seu sistema. O outro caminho é testar a funcionalidade de forma automatizada, ou seja, escrever um código de testes que passe por todo o código que você escreveu, ou ao menos […]

Conheça o novo caminho para a Platform Developer II

Recentemente foi anunciado pela Salesforce um novo caminho para a certificação Platform Developer II, como mostra o infográfico acima. O que muito me agrada ver que estamos evoluindo em termos de exercícios práticos fazendo parte deste caminho e envolvendo o Trailhead também. Esta certificação tem como objetivo mostrar proficiência nas formas programáticas em Force.com e modelagem de dados para atender soluções de negócio complexas. Antigamente, após completar o teste múltipla escolha e passar, o Trailblazer precisava completar uma tarefa técnica que seria avaliada. Contudo, o maior problema era o tempo que isto levava para acontecer, pois imaginem inúmeras reviews para serem feitas e enquanto isso ficávamos esperando, não parece ser muito bom não é ? QUAL O NOVO CAMINHO ? Conceitualmente existem alguns pontos que o Trailblazer precisa alcançar para ter sucesso em seu teste, que são: Design, develop, test e deploy de forma programática que sejam geríveis e reutilizáveis. Apex design patterns e best practices de programação orientada a objeto. Além disso, de forma prática vamos precisar do exame múltipla escolha e as tarefas para serem cumpridas estarão no Trailhead como Superbadges. Atualmente já temos dois deles, que são Apex Specialist e Data Integration Specialist. Os novos estão em desenvolvimento e […]