Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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 frustration 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 över tid. Varje vägledning i ytterligare artiklar härrör från dessa fem punkter.
Bra F#-kod är kortfattad, uttrycksfull och komponerbar
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ättning av dina egna funktioner och de i F#-kärnbiblioteket (eller andra bibliotek) är en del av rutinmässig idiomatisk F#-programmering. Om du kan uttrycka en lösning på ett problem i färre kodrader kommer andra utvecklare (eller ditt framtida jag) som regel att uppskatta problemet. Vi rekommenderar också starkt att du använder ett bibliotek som FSharp.Core, de omfattande .NET-biblioteken, som F# är beroende av, eller ett paket från tredje part på NuGet när du behöver utföra en krävande uppgift.
Bra F#-kod är driftskompatibel
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å finns i F#. När du skriver F# bör du alltid tänka på hur annan kod anropar den kod som du skriver, inklusive om de gör det från ett annat språk som C#. Designriktlinjerna för F#-komponenter beskriver samverkan i detalj.
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 funktionell kod, till exempel funktioner som måste vara sammanhangsmedvetna, kan objekt enkelt kapsla in kontextuell information på sätt som funktioner inte kan. Funktioner som valfria parametrar och noggrann användning av överbelastning kan göra förbrukningen av den här funktionen enklare för anropare.
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 ju så datorer fungerar. Sådan kod är ofta felbenägen och svår att få rätt. Undvik att exponera förändringar för uppringare. Skapa i stället ett funktionellt gränssnitt som döljer en mutationsbaserad implementering när prestandan är kritisk.
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 XML-dokumentationskommenter som beskriver konstruktioner så att knappbeskrivningar i redigerare kan visa dessa kommentarer på anropswebbplatsen. Tänk alltid på hur koden kommer att läsas, navigeras, debuggas 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-idiom som hjälper det långsiktiga underhållet av större F#-kodbaser.
Designriktlinjerna för F#-komponenter ger vägledning för redigering av F#-komponenter, till exempel bibliotek.