Ho iniziato la codifica in F # circa 2 mesi fa.F # Domande sulla qualità della vita
Mi piace molto questo linguaggio di programmazione. Vengo da uno sfondo C#, e ogni volta che ho bisogno di tornare a C#, sembra così ingombrante e gonfio.
Ma ci sono ancora cose che penso sono problematici in F #, e questo è ciò che le mie domande sono relative a:
Non si può auto completare come VS ha per C# giusto? Per esempio. all'interno di una funzione che prende parametro aParameter, se scrivo aPara non viene visualizzato il completamento automatico. Esiste una funzionalità in VS che può risolvere questo problema e di cui non sono a conoscenza?
Il debugging è a dir poco noioso. Dato che F # supporta piping/concatenazione o qualsiasi altra cosa tu voglia chiamare, in genere cerco di concatenare quante più cose possibili (ovunque abbia senso, ovviamente). Esempio:
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
E questo è solo quarto di tutta la mia concatenamento fatto. Ogni volta che rovino qualcosa in queste catene, trovo molto difficile eseguire il debug dove tutto è andato storto.
Sto facendo questo concatenamento sbagliato (abusando di esso)? Dal mio punto di vista, nulla di intermedio da questo concatenamento ha senso esistere atomicamente, quindi non c'è ragione di avere valori intermedi. Ma a causa di questo punto di vista semantico, perdo anche il potere di avere valori intermedi che mi aiutano a fare il debug. Quindi devo inserirli nel codice, eseguire il debug e quindi rimuoverli di nuovo. Ma questo è uno sforzo inutile. C'è un modo per aggirare questo?
Inoltre, il debug di una funzione anonima di List.map all'interno di una catena risulta di nuovo scomoda e difficile rispetto ad es. un ciclo for.
Sono sicuro che mi manca qualcosa e che il mio attuale modo di eseguire il debug non è probabilmente ottimale, non da un punto lungo, quindi qualsiasi suggerimento è benvenuto.
Contrassegna la tua domanda con VS edition, questa sembra riguardare la tua prima domanda: https://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/2149735-improve-intellisense-support-for-f –
Ho paura che non sia solo F # - il supporto per il debug di solito non è molto buono con i linguaggi funzionali. Invece, sei incoraggiato a costruire il tuo codice da piccoli pezzi che puoi testare in modo indipendente e interattivo. L'attenzione si concentra principalmente sul fatto di farlo bene in primo luogo, piuttosto che risolvere i problemi mentre emergono in un debugger. Aggiungi i messaggi di errore un po 'criptici e molti guadagni di produttività scompaiono molto rapidamente se non stai attento fin dall'inizio. Il tuo esempio con il concatenamento si applica anche all'approccio LINQ di C# e, ancora una volta, si tratta di assicurarsi che i * pezzi * funzionino. – Luaan