- - PR -
わかりやすいソースコードってどんなもの?
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-04-28 00:54
性別で処理を振り分けたい場合、どの書き方が見やすいと思いますか?
どのように書いていますか? 男女で処理が共通する部分があります。
1〜4の順に、自分の書き方の推移だったりします。 1.素直にif文の内部で男女の処理を「そのまま」書く 2.重複コードを減らすため、共通部分をif文の前に出す 3.2が非常にわかりづらいと感じ、共通部分を関数化しif文の中に戻す 4.自分の中での理想。実際のとこ3の場合が多々というのが現状。 単純な2分岐のケースなので、実際ここまで凝った書き方しないと思いますが。 要は、フロー制御の中に処理を直接書かずに、関数呼び出しだけにしておくと見やすい (1〜3のケースは、処理に追加があるとif文の中身がどんどん膨れていくのでメンテが辛い) と自分は思うのですが、皆さんはどうしていますか? | ||||||||||||
|
投稿日時: 2004-04-28 01:29
> 性別で処理を振り分けたい場合、どの書き方が見やすいと思いますか?
> どのように書いていますか? まあ例示されている様に物量と経緯次第な面はありますね。 概ねケースバイケースです。 ただ、仕様変更がやたら多いような状況だとわざとベタ書きして 仕様変更が落ち着くまでコンパクト化を避ける様にすることも あります。下手に早い時点で最適化すると変更が大事になるので。 | ||||||||||||
|
投稿日時: 2004-04-28 02:45
開発言語とその後どのようになる可能性があるかによりますが、
思わずクラスにしてしまいそうです。 ある程度の規模になる事が予想される、場合わけが際限なく増える 可能性があるといった場合に特にですが。 | ||||||||||||
|
投稿日時: 2004-04-28 09:42
るぱんです。
個人的な希望は4番。 そう言う風に作ってます。 あと、細かい突っ込みですが、
こんなんじゃダメですかね? 設計の観点からはこっちの方がお勧めのような気がします。 | ||||||||||||
|
投稿日時: 2004-04-28 11:37
もう一つのスレッドより、「仕様書がない」という前提で、いいですね? そうですね。私も「機能仕様書」は作っても「関数仕様書」は作らないことが多いですから 箇条書きで「すること」がコメントしてあるもの、かな?私の場合、最初にコメントで「何をするか」を書くことが多いです。
一度列挙してから、メソッドを分けたり、より細かいものを書きます。なので、後からコメントだけ抜き出して追いかければ、何をしているかわかります(もちろん、仕様変更が入るとコメントもメンテする)。 | ||||||||||||
|
投稿日時: 2004-04-28 12:57
ここまでやってる方って実際多いと思うのですよ。 でも、このあとの実装になると・・・
みたいに書くとコメントと処理が追いやすいのですが、実際は・・・
というコードを多く見かけて、コメント追うのが一苦労するっていうケースが多々ありまして、 最初の箇条書きがコードに埋もれちゃって意味無いじゃん!と思うわけなのですよ。 皆さんは、よく見かけませんか? | ||||||||||||
|
投稿日時: 2004-04-28 13:06
るぱんです。 >Jitta様 おこし頂きまして、ありがとうございます。 仕様書ナシとして・・・です。 僕の場合は、 コメントの頭にA.とかB.とか振ってます。 順番にAから進んでいけば流れを追えるようにコメントつけてます。 問題ありですけど、丸付1とかも使います。 仰るようにコメントのメンテナンスが実は重要なんですよね。 担当する人が変われば影響範囲の想定が狭くなると言う問題も有ると思います。 忙しくなればなるほどコメントからメンテナンスしなくなるもんですし。。。汗 貴重なお話をありがとう御座います。(^^ | ||||||||||||
|
投稿日時: 2004-04-28 14:37
はにまるです。
なぜ「グローバル変数」を使っては、いけないのですか? なぜ「GOTO文」を使っては、いけないのですか? を議論して思った事。 構造(関数/メソッドの切り方、アーキテクチャ)が確りしており、 それをテンプレート利用(継承)していれば、多少ボケた構成文も、 関数/メソッド内で収まり見難い問題が緩和される。 一般に「このプログラムは分かり難い」と思う理由は、構成の問題では? と考えました。 既出の例題を引用させて頂くと、
とすれば、実装者は「objプログラム.機能群.SQL生成()」の中身を触るだけで、 このパターンを知っていれば、SQL生成()の内容を見る行為だけで済むと思います。 # ちなみに、自分でも何の言語か解らずに記述しています。 |