Entender o Power Fx

Concluído

Após esse rápido histórico de desenvolvimento de código baixo, você e Kiana notaram semelhanças e diferenças entre as linguagens de programação que você tradicionalmente usa para criar aplicativos, como C#, JavaScript e o Power FX usado no Power Apps.

O Microsoft Power Fx é a linguagem de baixo código para expressar a lógica dentro do Power Apps baseado em telas. O Power Fx é inspirado no Microsoft Excel e segue muitos dos padrões encontrados nas expressões do Excel.

Expressões e fórmulas

Mas você não escreve expressões no Excel, você escreve fórmulas ou receitas para calcular o valor de uma célula específica. A1 = B2 * 2 é uma fórmula que define o valor de A1 a qualquer momento e é recalculado automaticamente conforme B2 é alterado.

O Power Fx segue esse mesmo padrão de fórmula. As células são substituídas pelas propriedades de controles ou objetos. Aqui está um exemplo de onde tiramos esta fórmula do Excel do Stack Overflow para pesquisa de cadeia de caracteres reversa:

Excel com a fórmula: =RIGHT(A1,LEN(A1)-FIND(

E criou uma fórmula do Power Fx com base nela. A diferença é que as referências às células foram substituídas por referências às propriedades de controle:

Power Fx executado no Power Apps com a fórmula: =RIGHT(Input.Text,LEN(Input.Text)-FIND(

Não apenas a mesma sintaxe e as mesmas funções funcionam no Power Fx, mas observe algo mais na animação. À medida que Input.Text (a caixa superior) muda, Label.Text (a caixa inferior) é recalculado automaticamente. O aplicativo está se comportando como uma planilha, recalculando o tempo todo, sem exigir que o desenvolvedor do aplicativo adicione um código que especifique como fazer isso acontecer.

Um modelo de aplicativo declarativo

Muitas pilhas tradicionais de desenvolvimento de aplicativos apresentam um modelo imperativo para o desenvolvimento em toda a pilha. Em outras palavras, o desenvolvedor do aplicativo deve escrever código para tudo o que acontece no aplicativo: autenticação e autorização, lógica de negócios, interface do usuário, configuração do servidor ou serviço de nuvem e assim por diante.

O Power Fx é uma linguagem declarativa, assim como o Excel. O desenvolvedor define o comportamento desejado, mas o sistema pode decidir como e quando realizá-lo. Para tornar isso prático, a maior parte do trabalho é feita por meio de funções puras sem efeitos colaterais, tornando o Power Fx também uma linguagem funcional.

Aqui está outro exemplo mais colorido que usa uma fórmula para a cor de preenchimento da tela. Como os controles deslizantes que controlam vermelho, verde e azul são alterados, a cor do plano de fundo muda automaticamente conforme é recalculada:

Fórmula do Power Fx: Fill = RGBA( RedSlider.Value, GreenSlider.Value, BlueSLider.Value, 100% )

Não há eventos OnChange para os controles deslizantes, como seria comum em outras linguagens. Na verdade, não há como definir explicitamente o valor da propriedade Fill. O que tem uma grande vantagem: só existe uma fonte da verdade. Se a cor não estiver funcionando corretamente, você só precisa olhar para uma fórmula para entender o porquê. Você não precisa pesquisar em seu aplicativo para encontrar um trecho de código errado que defina a propriedade em um momento inesperado. Na verdade, não há um elemento de tempo; os valores corretos da fórmula são sempre mantidos.

Observe outro item na animação: como os controles deslizantes estão definidos com uma cor escura, os rótulos para vermelho, verde e azul mudam para branco para corresponder. Isso é feito por meio de uma fórmula simples na propriedade Cor de cada controle de rótulo:

If(
    BlueSlider.Value + GreenSlider.Value + RedSlider.Value < 150,
    White,
    Black
)

A lógica para definir a cor do rótulo é isolada do que está acontecendo com a cor de preenchimento, são dois cálculos totalmente diferentes. Em vez de grandes procedimentos monolíticos, a lógica do Power Fx é geralmente várias fórmulas menores independentes. Isso é mais fácil de compreender e permite aprimoramentos sem perturbar a lógica existente.

Há um momento e um lugar para a lógica imperativa passo a passo, e o Power Fx também oferece espaço para essa lógica. Os aplicativos gravam as alterações nos bancos de dados e iniciam automatizações com o pressionar de um botão, enquanto as planilhas não fazem isso. Sempre que possível, para todos os benefícios citados acima e consistência com o Excel, preferimos a abordagem declarativa.

Observação

É possível encontrar mais informações sobre o uso de técnicas de desenvolvimento imperativo em Usar técnicas de desenvolvimento imperativo para aplicativos de tela no Power Apps.