Perché le eccezioni F # generalmente non sono suffissate con "Eccezione"?

5

In .NET, è idiomatico il suffisso di tipi di eccezione con Exception . Ma la maggior parte, se non tutte, le fonti che ho visto per i tipi di eccezioni personalizzate in F # non seguono questo idioma.

La maggior parte sembra utilizzare il suffisso Error .

Da F # per divertimento e profitto

exception MyFSharpError1 of string
exception MyFSharpError2 of string * int

Da Documentazione Microsoft *

exception MyError of string

Il libro 'Expert F # 3.0', co-autore di Don Syme, ha un esempio che sembra non seguire alcun idioma:

exception BlockedURL of string

Perché le eccezioni personalizzate in F # seguono gli idiomi standard per .NET? È a causa dell'eredità di OCaml?

* Il collegamento è alla cache di Google, poiché non riesco a collegarmi a MS al momento della scrittura.

    
posta Pete 03.07.2014 - 23:45
fonte

1 risposta

4

Penso che tu sia troppo veloce per generalizzare sulla base di pochi punti dati. C'è una certa diversità lì, ma nel complesso è ancora più probabile vedere * Eccezione rispetto a qualsiasi altra cosa, almeno nella mia esperienza.

Per quanto riguarda il motivo per cui c'è più variazione là fuori, penso che ci siano un paio di diversi fattori in gioco:

  • F # è un linguaggio .NET e utilizza le stesse librerie standard che seguono la convenzione * Exception. Inoltre, un gran numero di utenti arriva a F # da C # e probabilmente useranno ciò che ha funzionato per loro finora. Guarda risultati github , ci sono un sacco di * Eccezioni lì ( certamente, alcuni * errori pure).
  • Sembra che tu abbia ragione sul patrimonio di OCaml - ancora una volta, passando per risultati github , è pratica diffusa denominare eccezioni senza suffissi. Le poche * eccezioni che ho visto derivano da file .fs classificati come OCaml.
  • C # ha le sue linee guida dorate per il codice standard che tutti sembrano seguire all'unanimità; Non credo che F # avesse qualcosa di simile dall'inizio. Ora c'è F # Component Design Guidelines documento di FSF, ed è in realtà un consiglio seguire lo stile .NET * Exception.
  • Il punto precedente è ulteriormente aggravato dal fatto che, rispetto a C #, c'è molto poco supporto per gli strumenti per F #. Non c'è Resharper / StyleCop / FxCop per F # per forzare uno stile di codice per te (diamine, non c'è nemmeno un "Rinomina" fuori dalla scatola in VS!).
risposta data 04.07.2014 - 00:37
fonte

Leggi altre domande sui tag