F# — przewodnik dotyczący stylu
W poniższych artykułach opisano wytyczne dotyczące formatowania kodu F# i wskazówki dotyczące funkcji języka oraz sposób ich stosowania.
Te wskazówki zostały sformułowane na podstawie użycia języka F# w dużych bazach kodu z zróżnicowaną grupą programistów. Te wskazówki zwykle prowadzą do pomyślnego użycia języka F# i minimalizują frustrację, gdy wymagania dotyczące programów zmieniają się z czasem.
Pięć zasad dobrego kodu języka F#
Pamiętaj o następujących zasadach za każdym razem, gdy piszesz kod języka F#, szczególnie w systemach, które zmieniają się w czasie. Wszystkie wskazówki w kolejnych artykułach wynikają z tych pięciu punktów.
Dobry kod języka F# jest zwięzły, ekspresyjny i skonfigurowalny
F# ma wiele funkcji, które umożliwiają wyrażanie akcji w mniejszej liczbie wierszy kodu i ponowne używanie funkcji ogólnych. Podstawowa biblioteka języka F# zawiera również wiele przydatnych typów i funkcji do pracy z wspólnymi kolekcjami danych. Kompozycja własnych funkcji i funkcji w podstawowej bibliotece języka F# (lub innych bibliotekach) jest częścią rutynowego idiotycznego programowania w języku F#. Ogólnie rzecz biorąc, jeśli możesz wyrazić rozwiązanie problemu w mniejszej liczbie wierszy kodu, inni deweloperzy (lub Twoi przyszli) będą wdzięczni. Zdecydowanie zaleca się również korzystanie z biblioteki, takiej jak FSharp.Core, obszernych bibliotek .NET, w których działa F#, lub pakietu innej firmy na platformie NuGet, gdy trzeba wykonać zadanie nietrywialne.
Dobry kod języka F# jest współdziałalny
Współdziałanie może mieć wiele form, w tym korzystanie z kodu w różnych językach. Granice kodu, z które współdziałają inne wywołujące elementy, są krytycznymi elementami, aby uzyskać właściwe działanie, nawet jeśli te elementy wywołujące są również w F#. Podczas pisania języka F# należy zawsze myśleć o tym, jak inny kod będzie wywołać kod, który piszesz, w tym o tym, czy robi to z innego języka, takiego jak C#. W wytycznych dotyczących projektowania składników języka F# szczegółowo opisano współdziałanie.
Dobry kod języka F# korzysta z programowania obiektów, a nie orientacji obiektu
Język F# ma pełną obsługę programowania z obiektami na platformie .NET, w tym klasami,interfejsami, modyfikatoramidostępu, klasami abstrakcyjnymi itp. W przypadku bardziej skomplikowanego kodu funkcjonalnego, takiego jak funkcje, które muszą być kontekstowe, obiekty mogą łatwo hermetyzować informacje kontekstowe w sposób, który nie jest dostępny dla funkcji. Funkcje, takie jak parametry opcjonalne i dokładne użycie przeciążenia, mogą ułatwić korzystanie z tej funkcji dla wywołujących.
Dobry kod języka F# działa dobrze bez ujawniania źle
Nie jest tajne, że aby napisać kod o wysokiej wydajności, należy użyć pisania kodu o wysokiej wydajności. W końcu w ten sposób działają komputery. Taki kod jest często podatny na błędy i trudny do uzyskania. Unikaj ujawniania wołania do wywołujących. Zamiast tego należy utworzyć interfejs funkcjonalny, który ukrywa implementację opartą na łańcie, gdy wydajność jest krytyczna.
Dobry kod języka F# jest z narzędziami
Narzędzia są nieocenowane do pracy w dużych bazach kodu i można napisać kod F# w taki sposób, aby można go było efektywniej używać z narzędziami języka F#. Jednym z przykładów jest upewnione, że nie przesłonisz tego przy użyciu stylu programowania bez punktu, dzięki czemu wartości pośrednie mogą być sprawdzane za pomocą debugera. Innym przykładem jest użycie komentarzy dokumentacji XML opisujących konstrukcje w taki sposób, że etykietki narzędzi w edytorach mogą wyświetlać te komentarze w witrynie rozmów. Zawsze zastanów się, jak kod będzie odczytywany, nawigowany, debugowany i manipulowany przez innych programistów za pomocą ich narzędzi.
Następne kroki
Wskazówki dotyczące formatowania kodu w formacie F# zawierają wskazówki dotyczące sposobu formatowania kodu w celu jego łatwego odczytywania.
Konwencje kodowania F# zawierają wskazówki dotyczące idiomów programowania f#, które pomogą w długoterminowej konserwacji większych baz kodu języka F#.
Wytyczne dotyczące projektowania składników języka F# zawierają wskazówki dotyczące tworzenia składników języka F#, takich jak biblioteki.