Dela via


Stilguide för F#

I följande artiklar beskrivs riktlinjer för formatering av F#-kod och aktuell vägledning för språkfunktioner och hur de ska användas.

Den här vägledningen har formulerats baserat på användningen av F# i stora kodbaser med en mängd olika programmerare. Den här vägledningen leder vanligtvis till en lyckad användning av F# och minimerar frustrationen när kraven för program ändras över tid.

Fem principer för bra F#-kod

Tänk på följande principer varje gång du skriver F#-kod, särskilt i system som ändras med tiden. Varje vägledning i ytterligare artiklar härrör från dessa fem punkter.

  1. Bra F#-kod är kortfattad, uttrycksfull och sammansättningsbar

    F# har många funktioner som gör att du kan uttrycka åtgärder i färre kodrader och återanvända allmänna funktioner. F#-kärnbiblioteket innehåller också många användbara typer och funktioner för att arbeta med vanliga datasamlingar. Sammansättningen av dina egna funktioner och de i F#-kärnbiblioteket (eller andra bibliotek) är en del av rutinmässig idiomatisk F#-programmering. Som en allmän regel, om du kan uttrycka en lösning på ett problem i färre kodrader, kommer andra utvecklare (eller ditt framtida jag) att uppskatta. Vi rekommenderar också starkt att du använder ett bibliotek som FSharp.Core, de stora .NET-biblioteken som F# körs på eller ett paket från tredje part på NuGet när du behöver utföra en icke-prövande uppgift.

  2. Bra F#-kod kan användas

    Interoperation kan ta flera former, inklusive användning av kod på olika språk. Gränserna för din kod som andra anropare samverkar med är viktiga delar för att få rätt, även om anroparna också är i F#. När du skriver F# bör du alltid tänka på hur annan kod anropar koden du skriver, inklusive om de gör det från ett annat språk som C#. Riktlinjerna för F#-komponentdesign beskriver samverkan i detalj.

  3. Bra F#-kod använder objektprogrammering, inte objektorientering

    F# har fullt stöd för programmering med objekt i .NET, inklusive klasser, gränssnitt, åtkomstmodifierare, abstrakta klasser och så vidare. För mer komplicerad funktionskod, till exempel funktioner som måste vara sammanhangsmedvetna, kan objekt enkelt kapsla in sammanhangsberoende information på sätt som funktioner inte kan. Funktioner som valfria parametrar och noggrann användning av överbelastning kan göra det enklare för anropare att använda den här funktionen.

  4. Bra F#-kod fungerar bra utan att exponera mutation

    Det är ingen hemlighet att du måste använda mutation för att skriva kod med höga prestanda. Det är trots allt så datorer fungerar. Sådan kod är ofta felbenägen och svår att få rätt. Undvik att exponera mutation för uppringare. Skapa i stället ett funktionellt gränssnitt som döljer en mutationsbaserad implementering när prestandan är kritisk.

  5. Bra F#-kod är verktygsbar

    Verktyg är ovärderliga för arbete i stora kodbaser och du kan skriva F#-kod så att den kan användas mer effektivt med F#-språkverktyg. Ett exempel är att se till att du inte överdriver det med ett punktfritt programmeringsformat, så att mellanliggande värden kan inspekteras med ett felsökningsprogram. Ett annat exempel är att använda KOMMENTARER till XML-dokumentation som beskriver konstruktioner så att knappbeskrivningar i redigerare kan visa dessa kommentarer på anropswebbplatsen. Tänk alltid på hur koden ska läsas, navigeras, felsökas och manipuleras av andra programmerare med sina verktyg.

Nästa steg

Riktlinjerna för F#-kodformatering ger vägledning om hur du formaterar kod så att den är lätt att läsa.

F#-kodningskonventionerna ger vägledning för F#-programmerings-idiomer som hjälper till med långsiktigt underhåll av större F#-kodbaser.

Designriktlinjerna för F#-komponenter ger vägledning för redigering av F#-komponenter, till exempel bibliotek.