Por que as exceções F # geralmente não são sufixadas com 'Exception'?

5

No .NET, é idiomático sufocar os tipos de exceção com Exception . Mas a maioria, senão todas, as fontes que eu vi para tipos de exceção personalizados em F # não seguem essa expressão.

A maioria parece usar o sufixo Error .

De F # Por diversão e lucro

exception MyFSharpError1 of string
exception MyFSharpError2 of string * int

Em Documentação da Microsoft *

exception MyError of string

O livro 'Expert F # 3.0', co-escrito por Don Syme, tem um exemplo que nem parece seguir nenhum idioma:

exception BlockedURL of string

Por que as exceções personalizadas em F # não seguem os idiomas padrão do .NET? É por causa da herança do OCaml?

* O link é para o cache do Google, pois não consigo me conectar ao MS no momento em que escrevo.

    
por Pete 03.07.2014 / 23:45
fonte

1 resposta

4

Acho que você é muito rápido para generalizar com base em apenas alguns pontos de dados. Há alguma diversidade lá, mas no geral você ainda tem mais chances de ver * Exceção do que qualquer outra coisa, na minha experiência, pelo menos.

Quanto a por que há mais variação, acho que há alguns fatores diferentes em jogo:

  • F # é uma linguagem .NET e usa as mesmas bibliotecas padrão que seguem a * Convenção de exceção. Além disso, um grande número de usuários chega ao F # do C # e provavelmente usarão o que funcionou para eles até agora. Veja os resultados do github , há muitas * exceções lá ( reconhecidamente, alguns * erros também).
  • Você parece estar correto sobre a herança do OCaml - mais uma vez, por resultados do github , é uma prática comum nomear exceções sem nenhum sufixo. As poucas * Exceções que vi vieram de arquivos .fs classificados como OCaml.
  • O C # tem sua diretriz de código padrão de ouro que todos parecem seguir por unanimidade; Eu não acho que o F # tivesse algo comparável desde o começo. Agora há Diretrizes de Design de Componentes F # da FSF, e na verdade ele aconselha para seguir o estilo de exceção do .NET *.
  • O ponto anterior é ainda mais agravado pelo fato de que, comparado a C #, há muito pouco suporte a ferramentas para F #. Não há Resharper / StyleCop / FxCop para F # para impor um estilo de código para você (poxa, não há nem mesmo um "Renomear" fora da caixa no VS!).
por 04.07.2014 / 00:37
fonte