裏表(Phinloda のもう裏だか表だか分からないページ)

コンピュータ・プログラミング系の話がメインのそれなりにごちゃごちゃしたネタばかり出てくるサイトです。多分。
<< Fedora Core 3 で up2date エラー (2) | Top | Exadel Studio 3.0.5 >>
■えるC言語: 違った case に共通の処理

ふ「原稿がどこにあるのか分からなくなってしまいアヒ。」

U「10日も放置するからだよ。」

ふ「もともと、FPL というディレクトリの下にあったのですが、 ドタバタと引っ越したときにどこに行ったか分からなくなったわけですが。」

U「つまり、掲載先でファイルを分類してあったのですね、ジャンルとかカテゴリ別ではなくて。」

ふ「連載先が移転するというのは今まで想定していなかったというか、 ここ15年、そういうことはなかったもので。」

U「原稿というディレクトリ掘っておいて、そこに全部入れるといいんじゃないですか?」

ふ「まあそうですね、このようなことがあるのなら。」

U「しかし、原稿がどこにあるか分からないとか書いたら、大量に書きかけのものがありそうな錯覚を感じますが、実際殆どないのでは。」

ふ「まあそういえばそうだ。」

ふ「というわけで、先に前回のコメントからフォローしておきますと、

「フィンローダのあっぱれご意見番「第41回:暗黒面の技」」が参考になりました/なると思いますが、入門向きではないかも。

 ということなのですが、その第41回というのがどこにあるかを探すのも一苦労?」

U「実は google で探せるです。「フィンローダ」「あっぱれ」「暗黒面」という冗談のようなキーワード指定でしっかりトップにヒットします。 http://www.st.rim.or.jp/~phinloda/phin/phin9509.html こんな所に。」

ふ「google 偉い。で、ヤフーとかどうなのですか、ちなみに?」

U「Yahoo Japan は惜しいというか、インデックスページを先にヒットさせるので、どんぴしゃのページは2位でした。まあ誤差の範囲内でしょう。AlatVista もヒットします。

ふ「Infoseekで「infoseekの検索結果」だと、Cマガジンのサイトが先に出てきますね、どちらがどうという話ではないのですが、アルゴリズムがどうなっているのか、というのには興味があります。」

U「そろそろ本題に入りますけど、そういう場合は一体どうすればいいのかなと。」

ふ「case のそれぞれに対して共通の処理がある、というような場合ですか、迷わず別関数にしてしまうというのはどうだろう?、という話が出ていた。」

U「先に問題を書いておきますと、type の値に関わらず殆ど共通の処理があって、もし全部共通なら、

    switch (type) {
    case FORUM:
    case PATIO:
    case NETNEWS:
        /* 共通の処理 */
        break;

    case 他の場合:
        〜省略〜
    }

 このように書けるのですが、ちょっとだけ共通でない処理があるために、

    switch (type) {
    case FORUM:
    case PATIO:
    case NETNEWS:
        if (type == FORUM) {
            fprintf(fp, "forum");
        } else if (type == PATIO) {
            fprintf(fp, "patio");
        } else {
            fprintf(fp, "netnews");
        }
        /* 共通の処理 */
        break;

    case 他の場合:
        〜省略〜

    }

 こんな書き方するのはいかがなものか、という話です。」

U「連載には「他の場合」というところがありませんでしたが?」

ふ「今こっそり追加しました。」

U「 _| ̄|○

(つづく)

| C言語 | 01:17 | comments(0) | -
スポンサーサイト
| - | 01:17 | - | -
コメント
コメントする









Powered by "JUGEM"
▲このページの先頭へ
CALENDAR
S M T W T F S
    123
45678910
11121314151617
18192021222324
252627282930 
<< June 2017 >>
NEW ENTRIES
CATEGORIES
ARCHIVES
NEW COMMENTS
NEW TRACKBACKS
LINKS
PROFILE