カテゴリー
読みやすいコード

悪名高いGoto/The Infamous goto

C以外の言語では、非常に多くの代替方法があるため、gotoを使用する必要はほとんどありません。

gotoはまた、手に負えなくなってコードを追跡しにくくすることでも有名です。

しかし、さまざまなCプロジェクト(とりわけLinuxカーネル)で使用されているgotoを見ることができます。

gotoのすべての使い方を冒涜として却下する前に、なぜgotoの使い方が他のものより優れているのかを解明することは有用です。

gotoの最も単純で無邪気な使い方は、関数の一番下に1つの出口を置いたものです:

if (p == NULL) goto exit;
…
exit: 
    fclose(file1);
    fclose(file2);
    …
    return;

これがgotoの唯一の形式であれば、gotoはあまり問題にならないでしょう。

問題は複数のgotoターゲットがある場合、特にそのパスが交差する場合に発生します。

特に、上向きに動いているgotoは本当のスパゲッティコードを作ることができ、確かに構造化ループに置き換えることができます。 ほとんどの場合、gotoは避けるべきです。

参考文献:

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック

The Art of Readable Code: Simple and Practical Techniques for Writing Better Code (English Edition)

The Art of Readable Code: Simple and Practical Techniques for Writing Better Code Kindle (English Edition)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です