Riot: Evite o uso de goto

Criado em 6 jul. 2017  ·  6Comentários  ·  Fonte: RIOT-OS/RIOT

Usar goto é uma prática de programação terrível. Pode haver alguns benefícios para usar no código principal (não consigo ver nenhum), mas pelo amor de Deus não use nos exemplos.

O arquivo que me chamou a atenção é o RIOT/blob/master/examples/gcoap/gcoap_cli.c que na linha 139 possui um comando goto, que pode ser simplesmente substituído pelo código sob o rótulo end: (apenas duas linhas).

contested minor cleanup

Todos 6 comentários

para o exemplo do gcoap, você certamente está certo. Por outro lado, existem cerca de 30 (algo) usos de goto no RIOT em geral, considerando que este é um sistema operacional IoT (embutido), essa contagem é bastante baixa.

Portanto, sinta-se à vontade para fornecer um PR corrigindo o exemplo do gcoap, mas, caso contrário, não vejo isso como um problema (pelo menos por enquanto).

Usar goto é uma prática de programação terrível.

Isso é discutível. Usar goto para tratamento de erros em C é, na verdade, considerado uma boa prática por muitos, pois geralmente leva a um código mais legível e menos propenso a erros.

gcoap_cli.c que na linha 139 tem um comando goto, que pode ser simplesmente substituído pelo código sob o rótulo end: (apenas duas linhas).

Você quer dizer, duplicar a chamada printf?

Você quer dizer, duplicar a chamada printf?

Eu acho que o código pode ser facilmente retrabalhado usando if .. else if ... else evitando goto sem afetar a legibilidade - o que não é possível em todos os casos em que goto é usado.

Você quer dizer, duplicar a chamada printf?
Eu acho que o código pode ser facilmente retrabalhado usando ...

Certo. Eu queria salientar que apenas copiar as duas linhas não vai cortá-lo.

Não se trata de reduzir a linha de códigos. Trata-se de legibilidade e boas práticas de código. Quando goto é usado em vez de if...else.... então "é considerado prejudicial"

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

jcarrano picture jcarrano  ·  7Comentários

kaspar030 picture kaspar030  ·  6Comentários

gschorcht picture gschorcht  ·  7Comentários

jia200x picture jia200x  ·  7Comentários

OlegHahm picture OlegHahm  ·  4Comentários