Zacząłem kodowanie w F # około 2 miesięcy temu.F # Pytania dotyczące jakości życia
Jestem bardzo zadowolony z tego języka programowania. Pochodzę z tła C# i za każdym razem, gdy muszę wrócić do C#, czuję się tak nieporęczny i nadęty.
Ale nadal istnieją rzeczy, myślę, że są problematyczne w F #, a to, co moje pytania są związane z:
Nie ma auto zakończyć jak VS ma prawo do C#? Na przykład. wewnątrz funkcji, która pobiera parametr aParameter, jeśli napiszę aPara, nie pojawi się auto complete. Czy w VS istnieje funkcjonalność, która może rozwiązać ten problem i którego nie znam?
Debagowanie jest co najmniej uciążliwe. Ponieważ F # obsługuje orurowanie/łańcuchowanie lub cokolwiek chcesz nazwać, zazwyczaj staram się łączyć jak najwięcej rzeczy (tam, gdzie ma to sens oczywiście). Przykład:
correctedData |> List.filter (fun (_, r, _) -> r <= 3) |> Seq.ofList |> Seq.groupBy (fun (_, r, cti) -> (r,cti)) |> Seq.map (fun ((r,cti),xs) -> (r, cti, Seq.length xs)) |> Seq.toList
A to dopiero czwarta całego mojego łańcuchowych zrobić. Ilekroć coś robię w tych łańcuchach, bardzo trudno jest debugować, gdzie wszystko poszło nie tak.
Czy robię to źle łańcuchowo (nadużywanie)? Z mojego punktu widzenia nic pośredniczącego z tego łańcucha nie ma sensu egzystować atomowo, a zatem nie ma powodu, by mieć wartości pośredniczące. Ale z powodu tego semantycznego punktu widzenia tracę również moc posiadania wartości pośrednich, które pomagają mi w debugowaniu. Tak więc muszę wstawić je do kodu, debugować, a następnie usunąć ponownie. Ale to zmarnowany wysiłek. Czy jest jakiś sposób obejścia tego?
Ponadto debugowanie anonimowej funkcji List.map w łańcuchu wydaje się znowu niezręczne i trudne w porównaniu do np. pętla for.
Jestem pewna, że czegoś mi brakuje i że mój obecny sposób debugowania prawdopodobnie nie jest optymalny - nie przez długie ujęcie - więc wszelkie sugestie są mile widziane.
Oznacz swoje pytanie za pomocą edycji VS. Wydaje się, że dotyczy to Twojego pierwszego pytania: https://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/2149735-improve-intellisense-support-for-f –
Obawiam się, że nie tylko F # - obsługa debugowania zwykle nie jest zbyt dobra w przypadku języków funkcjonalnych. Zamiast tego jesteś zachęcany do budowania swojego kodu z małych kawałków, które możesz testować niezależnie - i interaktywnie. Koncentrujemy się przede wszystkim na poprawieniu go, a nie na naprawianiu problemów pojawiających się w debugerze. Dodaj nieco tajemniczych komunikatów o błędach, a wiele wzrostów wydajności zniknie bardzo szybko, jeśli nie będziesz ostrożny od samego początku. Twój przykład z łańcuchem stosuje się również do metody LINQ w C# - i znowu chodzi o upewnienie się, że * kawałki * działają. – Luaan