TadaoYamaokaの開発日記

個人開発しているスマホアプリや将棋AIの開発ネタを中心に書いていきます。

ループ処理のコーディング

ループ処理でループに入る前に1回呼んで、ループの中では末尾で処理したいような処理をコーディングするとき、

line = get_line();
while (ready()) {
    // 処理
    // ...

    line = get_line();
}

このようにコードを書いている。

line = get_line();の部分が重複しており、
美しくない。
この例では1行だが、もう少し複雑な処理を書く場合もある。

for (line = get_line(); ready(); line = get_line()) {
    // 処理
    // ...
}

のような書き方をする場合もある。
これも微妙だ。


Androidのソースを調べていて、
goto文を使って重複を避けているコーディングをしていて、
この手も有りかと思った。

goto start_loop_here;
while (framesReady == 0) {
    // 処理
    // ...

start_loop_here:
    framesReady = cblk->framesReady();
}

goto文否定派には、アレルギーがでそうなコードではあるが、
こだわりがなければいんじゃないかと思う。

Javaではgoto文がそもそもないので、上の2つのようなコーディングになるけどね。