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

コンピュータ・プログラミング系の話がメインのそれなりにごちゃごちゃしたネタばかり出てくるサイトです。多分。
<< Thunderbird 2.0.0.12 | Top | 目標がはっきりしない中国公安省の記者会見 >>
プログラミング: 処理を呼び出す順序の問題 (考察編)

プログラミング: 処理を呼び出す順序の問題 について考えてみる。 適切な順序で呼べ、という趣旨の問題である。

処理によっては、 順番が明確に決まるものがある。 先に呼ばなければいけないものは、先に呼ぶ。 という当たり前のことだ。 選択肢を再掲しておく。

    // (a)
    if (someClass == null)
        return null;
    // (b)
    if (someClass.getSomeObject() == null)
        return null;
    // (c)
    if (list == null)
        return null;

今回の場合は、 (a) の後に (b) を呼ぶ必要があって、 これを逆にするようでは論外なのだ。 流石にこんな所でコケる人はいないと思うので説明もしないが、 ということで、論点は (a) と (c) のどちらを先に呼ぶべきか、 というところに集約される。

原則論としては、 処理が軽い判定を先にするのがセオリーだ。 もう一つの基本としては、 マッチする確率が高そうなものから判定する、 ということもいえる。 処理が重くても、 殆どの場合そこでひっかかってしまうような判定であれば、 先にやっておいた方がいいと思う。

それにしても、今回は (a) と (c) の処理のどちらが重いとか、 頻度がどうとか、一切分からない。 こういう時は、 引数に出てきた順番に判定する、 というのも基本である。 これは、可読性を重視するという意味がある。 ちゃんと順番に処理していれば、 処理漏れがないことも分かりやすいし(多分)、 バグの原因にもなりにくい。

ただ、そうなってくると引数はどんな順番で書くのがいいのか、 という新たなる問題が発生して、 物語は佳境に突入する。

JUGEMテーマ:コンピュータ
| プログラミング | 22:07 | comments(0) | trackbacks(1)
スポンサーサイト
| - | 22:07 | - | -
コメント
コメントする









この記事のトラックバックURL
http://phinloda.jugem.cc/trackback/1340
トラックバック
-
管理者の承認待ちトラックバックです。
| - | 2008/03/31 4:23 AM |
Powered by "JUGEM"
▲このページの先頭へ
CALENDAR
S M T W T F S
1234567
891011121314
15161718192021
22232425262728
2930     
<< September 2019 >>
NEW ENTRIES
CATEGORIES
ARCHIVES
NEW COMMENTS
NEW TRACKBACKS
LINKS
PROFILE