パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

ついつい使ってしまうプログラミングの悪いテクニックは?」記事へのコメント

  • > 6.独自のデータ構造を書く
    > 7.ループの半ばでループを抜ける

    これって駄目だったんだ?
    普通にやってしまってるけど……。

    6番のデータ構造を書くっていうのが漠然とし過ぎて、具体的にどんなデータ構造を書いてどのように使ったらどう悪いのかわかんないなぁ。
    メソッドを持たないクラスを書いたらそれもデータ構造だと思うけど、それも駄目って事?
    構造体だけを言ってるんなら、何故に構造体だけ駄目なのか? ……うーん、わからない。
    原文も読んでみたけど、どうも……要約すると
    「大体のデータ構造は既に用意されてるからそれ使えや」

    • by Anonymous Coward on 2015年10月24日 20時32分 (#2905949)

      7.は同じく違和感あった。ループの中の条件分岐でネストが無限に深くなっていくほうがよっぽど悪いと思ってたんだけど。少なくとも誰もが認めるというほど「悪い」とは思えない。構造化原理主義的にはbreakもcontinueも必要ないし実際Pascalには存在しないって話かね?
      原文見たら
      > a rule-making group declared
      とか書いてるし全然普遍的なルールって気がしないんだけど。

          while (i<a.length){
             ...
             if (test(a[i]) then return a[i];
             ...
          }

          while ((notFound) && (i<a.length){
          ...
          if (test(a[i])) then notFound=false;
          ...
          }

      ていうかリンク先の例を見たら等価な書き換えにすらなっていなかった。

          while ((notFound) && (i<a.length){
             ...
             if (test(a[i])) {
                notFound=false;
             } else {
                ...
             }
          }

      だろ。書き換え例の方でループ内のインデント消してるのもわざとか?
      そもそもif文の条件が成り立つとその前後でnotFoundの値が変わるんだから「ループ全体を通して不変条件が成り立って」ないじゃん。
      それともこれはwhile文の中で(notFound)とか条件書いておくと、notFoundにfalseを代入した瞬間にループを抜けるような架空の言語を前提にした擬似コードなのか? そんな機能がある言語は(すくなくともこんな手続き型っぽい構文を持つものの中では)聞いたことないんだけど。

      親コメント

※ただしPHPを除く -- あるAdmin

処理中...