2020-11-03

anond:20201102113231

こうですか?わかりません ><

function pair(psns) {
  var i = -1;
  var cnt = 0;
  var flg = psns[0] && psns[0].sex;
  // modified on 2018-12-31 by XXXX
  // var flg psns[0].sex;
  var j = -1;
  var tmp = null;
  // modified on 2020-12-31 by XXXX.
  // var k = -1;
  for(i = 0; i < psns.length; i++) {
    //console.log('■■■■■■■■■■■■■■■■■■■■ BEGIN ■■■■■■■■■■■■■■■■■■■■')
    //console.log(psns, 'i=' + i, 'cnt=' + cnt, 'flg=' + flg);
    if(psns[i].sex == flg) {
      //console.log('cnt: ' + cnt + '->' + (cnt+1));
      cnt++;
    } else {
      j = i - cnt + 1;
      // j = i - cnt;
      // j = i - cnt - 1;
      //console.log('swap ' + i + '<-->' + j);
      tmp = psns[j];
      psns[j] = psns[i];
      psns[i] = tmp;
      i = j - 1; // <- 理由は分からないが、i = jだと上手くいかない(by XXXX)。
      cnt = 0;
      // flg = !flg; // これはなぜか上手くいかない (by XXXX)
      flg = flg == MALE ? FEMALE : MALE;
      while(j > 1) {
        if(psns[j].height < psns[j-2].height) {
          //console.log('swap ' + j + '<-->' + (j-2));
          tmp = psns[j-2];
          psns[j-2] = psns[j];
          psns[j] = tmp;
        }
        j -= 2;
      }
      // modified on 2018-12-31 by XXXX.
      // 
      //for(k = 0; k + 2 < j;) {
      //  if(psns[k].height > psns[k+2].height) {
      //    tmp = psns[k+2];
      //    psns[k+2] = psns[k];
      //    psns[k] = tmp;
      //  }
      //  k += 2;
      //}
    }
    //console.log(psns, 'i=' + i, 'cnt=' + cnt, 'flg=' + flg);
    //console.log('■■■■■■■■■■■■■■■■■■■■ END ■■■■■■■■■■■■■■■■■■■■')
    //console.log('')
  }
  for(i = 0; i < psns.length; i++) {
    //console.log('■■■■■■■■■■■■■■■■■■■■ BEGIN ■■■■■■■■■■■■■■■■■■■■')
    //j = i / 2;
    j = Math.floor(i / 2);
    //console.log(psns, 'i=' + i, 'j=' + j);
    tmp = psns[i];
    if(!(i % 2)) {
      psns[j] = [null, null];
    }
    if(tmp.sex == MALE) {
      psns[j][0] = tmp;
      psns[j][1] = psns[i+1];
    } else {
      psns[j][0] = psns[i+1];
      psns[j][1] = tmp;
    }
    // modified on 2018-12-31 by XXXX.
    // 
    //psns[j][0] = tmp;
    //psns[j][1] = psns[i+1];
    i++;
    //console.log(psns, 'i=' + i, 'j=' + j);
    //console.log('■■■■■■■■■■■■■■■■■■■■ END ■■■■■■■■■■■■■■■■■■■■')
  }
  psns.splice(psns.length / 2, psns.length);
  // modified on 2020-12-31 by XXXX.
  // return psns.slice(0, psns.length / 2 + 1);
  // return psns.slice(0, psns.length / 2);
}
記事への反応 -
  • プログラミングはセンスです。センスの無い人がプログラマになると、他のすべての人に迷惑がかかります。だから、センスの無い人は絶対にプログラマにならないで下さい。 プログラ...

    • // 2020-11-02 ins-start masuda 元増田に対する返信を追加 言っとくが現場の糞コードには後者に加えてさらに、 数重にコメントアウトされた修正履歴が入ってるからな。 // 2020-11-02 ins-end masuda ...

      • こうですか?わかりません >< function pair(psns) { var i = -1; var cnt = 0; var flg = psns[0] && psns[0].sex; var j = -1; var tmp = null; // modified on 2020-12-31 by XXXX // var k = -1; for(i = 0; i < psns.l...

      • たしかに

    • すげえ 2つ目のコード意味わからなかった

      • 脳の短期記憶が強力な人は、 巨大な for 文で中にいくつ分岐があっても、難なく読めてしまうんだよ。 上手い書き方が分からないというより、 脳の思考をそのまま表現できていて読み...

    • 関数の引数に渡すと、一次元配列が二次元配列に変わるというのが凄まじい

    • 巨大なfor文の中ですべてを行おうとする人は、本当にコード書かないで欲しい

    • なんで処理の意味を関数名・変数名にするという簡単なことすらできないのだろう

    • こういうコードが蔓延してて、しかも社員が「7つの習慣」とかに被れてる意識高い系無能なところで働いてる 「マンパワーではなくマネジメントの力で改善しよう」とか言ってるが、...

      • そういうのBullshit JobsのDuct Tapersっていうんでしょ しってる

      • 当方中小SIer勤務ですが、経営陣がそういう自己啓発本にかぶれており、不定期に中身のない「プロジェクト」を立ち上げて、「プレゼンコンペ」「ほうれんそうグループワーク」みたい...

    • 後者の方恣意的に極端な例にしてるんだろうけど、実際割とあるよなこういうの。 パフォーマンスイシューが出てきて前任者が消えたインデックス変数使って逐次処理の中にif分岐を散...

      • 「リファクタリング」とかに載ってるような、典型的な改善点が目に付くクソコードなんかは、むしろ稀で 現実のクソコードはこういうのなんだよね

        • そもそも、改善点がある程度明確な時点で、そんなに悪いコードではない。少なくとも読めるから

        • if (条件1) { if (条件2) { 正常系の処理 } else { 条件2のエラー処理 }} else { 条件1のエラー処理} ……というコードを書くやつは死んでいい。

    • 数学の証明みたいな、確実な情報を組み合わせて何かを構成するという思考法ができないまま大人になってしまったのだろう

    • 黙ってテストを書けばいいだろう。他のプログラマはみんなそうしている。お前達はなぜそうしない? 理由は1つ。レガシーコーダーは異常者の集まりだからだ。異常者の相手はもう疲...

    • 最近ブチ切れたコードの一部 public virtual class DataInfo { public Integer p; public Integer c; public Integer r; public Integer v; public String name; public DateTime time; // ...}public class CellInfo extends DataI...

    • 最近ブチ切れたコードの一部 public virtual class DataInfo { public Integer p; public Integer c; public Integer r; public Integer v; public String name; public DateTime time; // ...}public class CellInfo extends DataI...

      • これは何をやろうとしててどのあたりにブチ切れポイントがあるんや?

    • コードの動作理解せずに当てずっぽうで、変数のインクリメント増減させたり、行コメントアウトしたりして、 「エラー出ずに動いたからオッケー」 みたいなのも普通にいるから怖い

    • 正直こんなの(誇張を差し引いても)書いてるやつ見たことないけど,そんなのと働かなくちゃいけなくなったらこういう文句を言いたくなる気持ちもちょっとわかるな.

    • 日中も普通に働いてて夜の(午前の)3時くらいに書いたコードがそんなんだったりする

    • データ設計のセンス無い奴は、プログラマになったらいけない

    • 巨大なfor文ですべてを解決しようとする やたらといろいろなものを可変にしたがる (当人は「センスの良い抽象化」だと思っている) クラスを「コード置き場」としか思ってない 実...

    • できない奴は何度言っても、データのバリデーションや集計処理とDBへの登録処理を同じメソッドに書いてくるし、Viewにビジネスロジックを埋め込もうとする

    • 高階関数どころかループといえばFORしかなく 変数のスコープなんてものさえなかった時代は こう書くしかなかったんやろな……という悲しみはある

    • そんなゴミコード書く同僚がいる職場にいる増田の能力について

    • なんかこれ前も見たな。ぐだぐだ何度もお疲れさま。 性格的にしろ能力的にしろ合わない人がいるなら違う部署かあるいは違う会社にいくしかないよ。

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん