- 226 名前: ID:y9Wx8uZn.net mailto: >>176
> 視点移動が増える書き方で、可読性やメンテナンス性が悪いという人もいる。 それは正しく分割出来てないから。(同じ抽象度で分割する) 読まなくても分かる名前を付けて、結果的に読まないから、視点移動はしない。例えば、以下。 while (1) { int idx = get_data_idx(); if (idx<0) break; int* data = prepare_data(idx); calculate_data(data); write_back_data(data, idx); } この部分はマルチスレッドでのデータ処理だとしよう。 get_data_idxは未演算のデータのインデックスを返し、ない場合は、-1を返すとしよう。 単純に、「インデックスを受け取り、チェックし、データを用意して演算して書き戻す」と読めるだろ。 そこでget_data_idxの中身を見ると、マルチスレッド用だからロックされてる、というだけ。 (余談だが>>107にはこういう具体性が見えないので、 > LOCK/UNLOCKが必要な具体的な場面を想定しての発言には見えない (>>122) と言われている。これも当たっている) 「視点移動ガー」は読み方を間違っている。 プログラムが階層構造のツリーとして、 縦に掘るのではなく、横に読んで、必要であればその部分だけ縦に読むんだよ。 まず最初は同階層で全体の流れを把握して、必要であればその実装を読む。 実装を読む場合、名前と実装が一致しているかだけのチェックしかしない。 家を建てるとして、 全ての柱が設計図通りに組み上げられているか(全体のチェック)と、 それぞれの柱が設計図通りの仕上がりになってるか(ほぞ穴が正しく加工されてるか)は別にチェックするだろ。 プログラミングも同じで、上位と下位は別にチェックするんだよ。 同時に読まないからいちいち子関数に視点移動なんてしないし、視点移動しなくて済むように同抽象度で分割するんだよ。 [] - [ここ壊れてます]
|

|