パスワードを忘れた? アカウント作成
15461797 story
プログラミング

ドキュメントがほぼない場合のリファクタリングには一般プログラマとは別の技能が必要 155

ストーリー by nagazou
たしかに 部門より

魔女みならいさんの(魔女みならいさんのツイートTogetter

仕事先で、「開発したプログラムのコード整理に雇った人が使えない」って話がでてるのだけど、「今は組織にいない人が作った、ドキュメントがほぼないソースコードを読み下して整理する」って、かなり知識が必要だから、普通のプログラマ案件の金額で雇える人に頼むのは無理だと思うんだよなあ。

というツイートが多くの共感を呼んでいる。このツイートに対して、自分では使わない書き方も知ってないと解読できない、これは普通のコーダーには無理と言った意見が出ている。普通にプログラム作るよりもコードを読み取る読解力というか考古学レベルの能力が必要で、プログラムとは別の能力であるとの指摘も出ている。結局は書き直したほうが早いとする意見になることが多いようだ。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by fuku (1936) on 2021年10月25日 19時52分 (#4139474) 日記

    今まさに 10 年以上前に作られた MS-Access のプログラムを解析しています。
    どうやら、まるっきりの素人が作ったみたいで、かなり難解。
    無駄コードや無駄処理が多く、もちろんコメントや仕様書もない。
    殆どプロトタイプみたいなもの。

    子ボスや中ボスクラスのトラップがあって、さながら RPG のよう。
    レベル 20 くらいの HP と「せいどうのつるぎ」「てつのよろい」程度では太刀打ちできない。
    やる気を取り戻すために、宿屋やぱふぱふも必要。

    ずっと前に、専用ハードで C とアセンブラのコメントなし
    (CPU は 68000 で MMU はまともだったが、ペリフェラルとキーボード I/F は独自、おまけにサポート切れのマルチタスクモニタ)
    というかなりヘビーな解析と改造、ドキュメント作成 (仕様書の起し) をやったことがあるけど、それよりは少しマシかな。

    あの時は、68000 の ICE を使って PC-9801 の MS-DOS と MS-C と MASM でエミュレートという、ヘンテコなことをやっていた。
    ぜんぜん見通しが立たないから、打ち切りの声はいつかかるんだろう、などと考えながら。

    他人には「考古学みたいなもの」と説明していたが、はたから見てもそうなのか。

    仕様書がないから、作り直すことはできない。
    (そのための仕様書起し)

    > 普通のプログラマ案件の金額で雇える人に頼むのは無理
    普通じゃないなら、1.5 倍くらいの金額になるのかな。
    自分では見当もつかない。

    • by Anonymous Coward on 2021年10月25日 23時14分 (#4139586)

      ちょっと違う気がする。

      少なくともソースコードがあって動作しているプログラムの場合は記載されている内容が読めないって事はあまりない。
      問題はそこじゃなくて、ぶっちゃけ

      「やってる事は判るけど、やろうとしていることの意図が判らない」

      部分の解読。
      でもそこをすっ飛ばして作り直すと大概が酷い目にあうという…。
      なんかね、証拠を追っかけて犯行動機を探るってノリが近い気がする。

      親コメント
  • by Ykr (46986) on 2021年10月25日 18時24分 (#4139389) 日記

    元ツイートの案件、よりによってC++らしいから。
    もっと手軽な言語をあえて使わなかった理由もありそうで、そんなモノの解析って、かなり難易度高そうな気がする。

  • http://www.pro.or.jp/~fuji/mybooks/cdiag/
    (Cプログラミング診断室)本文もあります。
    --
    ¶「だますのなら、最後までだまさなきゃね」/ 罵声に包まれて、君はほほえむ。
  • by NOBAX (21937) on 2021年10月25日 19時54分 (#4139475)
    ソース読み返しても何をやっているのか全然理解できない
    ソフトはちゃんと動いているので
    10年前の自分に感心してしまう

    プログラム書いているときは最高に脳が活性化しているときだから
    平常時の自分には追い付けないのかもしれないが
    • by ijumi (49396) on 2021年10月25日 21時40分 (#4139545) 日記

      10年前の自分に感心してしまう

      ホントホント!!
      つい先日、現役バリバリだった20年位前のソース(コメント記載が豊富)を見てて、
      「しっかりとしたソースだにゃぁ…誰だろ?…エ!!、コレ、ワタシが書いたの?!」
      って思ってビックリしました(>_<)

      すっかり根性ナシになった今じゃ、絶対ムリな芸当(勤勉さ)だと思いました。。

      # 決して加齢が原因ぢゃないと思ふ!!(T_T)

      --
      ヒトよりコト・モノに関心を持ち、反応するように心掛けています♪(^^)v
      親コメント
  • by KuroButa (37060) on 2021年10月25日 22時17分 (#4139569) 日記

    自分の場合でしたら、就職してすぐ研究所勤務で、たまたま複数言語のプログラミングが出来るってことで重宝がられて、物理計算プログラムを引き継ぎ担当させられたんですが、まぁ難しくて洒落になりませんでしたよ。ソース内にコメントがあっても勉強しないと意味が分からないし、簡単に数式で書かれてもプログラムに落とし込むのは物凄く苦労が多いです。教授以下どんどん論文成果出しちゃうのでそれについていかないといけないし、いかに速く計算できるかとかもですが、収束回数や丸め誤差でかなり結果が変わりますし、模型実験結果とシュミレーションプログラムと現実スケールの現状の差違を可能な限り埋めるのは大変です。それにスパコン用、ワークステーション用、パソコン用の3種類対応させてました。あと使用するコンパイラによっても結果が変わったりしてたので、その原因究明とか。当時は計算結果が出るのに長いときはスパコンでも1週間とかだったんで、その空いた時間に模型実験も1ケースあたり細かく条件を変えて500回以上とかですね。大型模型だったのでスケールがでかくて。一度200kg以上ある模型がクレーン移動中に落ちて慌てて一人で支えましたが数人が慌てて駆けつけるまでよく持ったなぁと思います。当時はベンチプレスで110kgを上げれる程度には力があったんですが、火事場の馬鹿力って本当にあるんだなぁとつくづく思いました。研究所内に勝手に筋トレ部屋作ってたけど特に怒られませんでした。昔同じような事をしていた人はいたらしく筋トレ機材があちこちに結構残ってたので。サンドバッグまで吊るしたのは僕だけでしょうけど。いや、話が脱線してしまいました。すんません。
    当時はラインプリンタが一般的だったのでプログラム出力して査読とかよくやってましたね。Linuxカーネルソースとかも良く読んで自分のマシン用に修正したりしてました。

    #ゲームのセーブデータのパラメータ解析するほうが探偵気分があってマシ(笑)
    #人の作ったVBAマクロを改善するのは有難がられるけどツマラナイ。
    #単純なデータ入力のお仕事です→地獄。

  • by x-rebuttal (33869) on 2021年10月25日 18時22分 (#4139387)

    Undocumented なだけなら別に難しくないケースもあると思うけど、「ドキュメントを残さずに前任者が去っている」という時点でお察しな案件なのだと思う

    • by Anonymous Coward
      本来ならお役御免になっているはずな物だったりね
      今時作成日が2002年なコードの改修とかどうよ?
  • by Anonymous Coward on 2021年10月25日 18時53分 (#4139424)

    「ソースがドキュメントだ」、「仕様書?なにそれおいしいの」の世界だし。

  • by Anonymous Coward on 2021年10月25日 18時18分 (#4139378)

    自分の書いたコードすらコメントないとほぼ理解できなくなるから、
    コード解析能力が0だとバグが発見されてもデバッグすらできず、そもそもプログラマとしてやっていけないのでは。

    • 3か月??
      週末を挟んだ3日前が既に他人ですだよ。

      親コメント
    • by Anonymous Coward

      そりゃ中にはそういう解析力0のプログラマーも居るかも知れないけどさ
      向き不向きの話で極論持ち出しても意味ないよね

    • by Anonymous Coward

      めっちゃわかる>3ヶ月前の自分
      結局その(ぐちゃぐちゃな部分)をごっそり書き直したりする事も

      …そういう事を繰り返す事でわかりやすい綺麗なコードをかけるようになるわけですが
      書きっぱなしでバグ修正もメンテも他人に丸投げでいつまで立ってもクソコードを書く奴が好き放題できる職場だと地獄

    • by Anonymous Coward

      > 3か月前の自分は他人
       
      あるある。
      どういう意図でこれ書いてんだ俺ってのから、
      このプログラムなかなかいいじゃんまで。

  • by Anonymous Coward on 2021年10月25日 18時18分 (#4139379)

    仕様なりテストコードなりが完璧にそろってる状態ならねぇ・・
    MOTHER2のあれは、ある程度企画書類が外部にあっただろうから言えたことで。

    • by Anonymous Coward on 2021年10月25日 18時36分 (#4139408)

      書き直すための仕様を抽出する作業だよねぇ、これ…。
      仕様書に残ってない仕様が大量に含まれてたりするケースだよ。
      しかも盲腸みたいに動いてない箇所とかもいっぱいあるやつ。考えるだけで胃が痛くなってきた。

      親コメント
      • by Anonymous Coward

        > 仕様書に残ってない仕様が大量に含まれてたりするケースだよ。
        コメントもない不思議なコードがあるんだけど、実は運用には必要なコードだったりして
        勝手にいじって怒られるやつですね

        # 仕様よこせ。その通りに作るからそれ以外は知らん。って出来ればいいんだけど

    • by Anonymous Coward

      作り直した方が早いってわりと幻想ですよね

  • 客の金払いが悪いので保険としてソースコードは渡さない、リビルド出来る環境は渡さない的なのも。

  • by Anonymous Coward on 2021年10月25日 18時37分 (#4139409)

    ひどい場合は、ドキュメントどころかソースコードもなく、
    バイナリファイルを逆アセンブル・逆コンパイル・APIやライブラリの利用をトレース等して解析する必要がある

  • by Anonymous Coward on 2021年10月25日 18時53分 (#4139425)

    そういう作業、結構得意でむしろ好きだったりするけど、評価されない給料上がらないになるので黙ってる。

    • by Anonymous Coward

      > 結構得意でむしろ好きだったりするけど

      読んでいて殺意が湧いてくるコードに出会ったことがない君は幸せだ。

    • by Anonymous Coward

      自分も結構得意、探偵になった気分で読むと楽しいし
      普通に作る案件だとつまらなくて、複数のやり方が浮かぶと選ぶの大変だしw

      普通は評価されない特技だけど、トラブル対応で重宝したりすると思うけど

typodupeerror

皆さんもソースを読むときに、行と行の間を読むような気持ちで見てほしい -- あるハッカー

読み込み中...