Compartilhar via


Guia de estilo F#

Os artigos a seguir descrevem as diretrizes para formatar código F# e diretrizes tópicos para recursos do idioma e como eles devem ser usados.

Essa orientação foi formulada com base no uso de F# em grandes bases de código com um grupo diversificado de programadores. Essa orientação geralmente leva ao uso bem-sucedido de F# e minimiza as frustrações quando os requisitos para programas mudam ao longo do tempo.

Cinco princípios de bom código F#

Tenha os princípios a seguir em mente sempre que você escrever código F#, especialmente em sistemas que serão alterados ao longo do tempo. Cada peça de orientação em outros artigos decorre desses cinco pontos.

  1. Um bom código F# é sucinto, expressivo e composável

    O F# tem muitos recursos que permitem que você expresse ações em menos linhas de código e reutilize a funcionalidade genérica. A biblioteca central do F# também contém muitos tipos e funções úteis para trabalhar com coleções comuns de dados. A composição de funções próprias e as da biblioteca principal do F# (ou de outras bibliotecas) faz parte da programação em F# idiomática de rotina. Como regra geral, se você puder expressar uma solução para um problema em menos linhas de código, outros desenvolvedores (ou seu eu futuro) serão gratos. Também é altamente recomendável que você use uma biblioteca como FSharp.Core, as vastas bibliotecas .NET em que o F# é executado ou um pacote de terceiros no NuGet quando você precisa fazer uma tarefa nãotrivial.

  2. Um bom código F# é interoperável

    A interoperação pode assumir várias formas, incluindo o consumo de código em idiomas diferentes. As fronteiras do seu código com as quais outros chamadores interoperam são aspectos críticos a serem corretamente definidos, mesmo que os chamadores também usem F#. Na codificação em F#, você deve estar sempre pensando em como outro código chamará o código que você está escrevendo, incluindo se ele fizer isso de outra linguagem como o C#. As Diretrizes de Design de Componente F# descrevem a interoperabilidade em detalhes.

  3. Um bom código F# usa a programação de objeto, não a orientação do objeto

    O F# tem suporte total para programação com objetos no .NET, incluindo classes, interfaces, modificadores de acesso, classes abstratas e assim por diante. Para um código funcional mais complicado, como funções que devem ter reconhecimento de contexto, os objetos podem encapsular facilmente informações contextuais de maneiras que as funções não podem. Recursos como parâmetros opcionais e uso cuidadoso de sobrecarga podem facilitar o consumo dessa funcionalidade para os chamadores.

  4. O bom código F# tem um bom desempenho sem expor mutação

    Não é segredo que, para escrever código de alto desempenho, você deve usar mutação. Afinal, é assim que os computadores funcionam. Esse código geralmente é propenso a erros e difícil de acertar. Evite expor mutação aos chamadores. Em vez disso, crie uma interface funcional que oculta uma implementação baseada em mutação quando o desempenho é crítico.

  5. Um bom código F# é facilmente gerenciável por ferramentas

    As ferramentas são inestimáveis para trabalhar em grandes bases de código e você pode escrever código F# para que ele possa ser usado com mais eficiência com ferramentas de linguagem F#. Certifique-se de não exagerar ao adotar um estilo de programação sem ponto, permitindo que os valores intermediários sejam inspecionados por um depurador. Outro exemplo é o uso de comentários da documentação XML que descrevem construções, de modo que as dicas de ferramentas nos editores possam exibir esses comentários no site de chamada. Sempre pense em como seu código será lido, navegado, depurado e manipulado por outros programadores com suas ferramentas.

Próximas etapas

As diretrizes de formatação de código F# fornecem diretrizes sobre como formatar código para que seja fácil de ler.

As convenções de codificação F# fornecem diretrizes para expressões de programação F# que ajudarão a manutenção a longo prazo de bases de código F# maiores.

As diretrizes de design do componente F# fornecem diretrizes para criar componentes F#, como bibliotecas.