パスワードを忘れた? アカウント作成

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

  • 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 Anonymous Coward

        ほなら心理学やね、って思ったけど
        考古学も心理解析みたいな面がないでもないので
        やっぱり考古学でええやんな

      • by Anonymous Coward

        そしてデバッグ用らしいprintfのコメントに「消すと動かなくなる」とか書いてあったりするのだ…

    • 考古学だとどちらかというと言語や文字がない時代を主な対象とします。考古学者とか言ってると半導体以前のコンピュータのプログラミング(回路の修正)とかが来ますよ。

      • by Anonymous Coward

        まあその通りなんだが、歴史学者だとインパクトが薄い。考古学者ならインディ・ジョーンズみたいでかっこいい

      • by Anonymous Coward

        考古学と表現しても差し支えないかと

        ラノベ作家に
        明治の純文学を読み解けって言うような難行ですよ
        時代背景や個別の流行もあるしすらすらとは行かない

        やっぱ別スキルだね

    • by Anonymous Coward

      考古学者は言い得て妙

      リファクタリングではなく修正や改造で前任者もドキュメントもないプログラム弄ることは多々あったのですが、コードからプログラマの思考を推測するのが一番重要だった気がする。
      プログラムの方向性というか思想を考慮して手を加えないと、その後の足枷になりかねないので。
      中には「やっぱりコイツその場しのぎの仕事ばっかりだな」みたいなこともあったけど(そういうコードを生み出すプロジェクトほどコードに作者の名前を書かせたがる。そして転職して誰もいないまでがセット)

    • by Anonymous Coward

      >どうやら、まるっきりの素人が作ったみたいで、かなり難解。
      >無駄コードや無駄処理が多く、もちろんコメントや仕様書もない。
      こちらはPHPだけど、まあそんなもんだな。年数は不明だが、まあ10年
      近くはたってそう。どうやらオブジェクト指向どころか、関数とか変数の
      概念すらろくにない完全な素人が書いてる。

      本来ならAという一つの関数にまとめる所を、
      「A1 (他の処理) B2 (他の処理) C3 (他の処理)……」
      みたいな感じで一部ずつ合間合間へと挿入していくから、A1とB2とA3が
      同じ一つの処理だということを見抜くまでだけでも一苦労。

      もちろんコメントなんかはないし、変数名も無意味。ダミーの変数もタップリ。

      微かな痕跡だけを手がかりに、「ん?A1のこの部分とサンプルB2に
      微かな類似性があるぞ?ひょっとして、この二つの先祖は同じなのかも」
      という進化の系統樹を作る気分。

    • by Anonymous Coward

      提案できる立場なら現在使っている機能を洗い出して(この手の古いソフトは使ってない機能が腐るほどある)
      ユーザーが理解してる挙動をデーターとソースから確認して新しく仕様を起こして作り直すのが一番幸せになれると思う
      新しく作ったソフトは今後うちが面倒見ますよーとか割と殺し文句

      ソースコードだけ解析するのは無駄が後から判る事が多い

    • by Anonymous Coward

      「なぜ?」「どうして?」「何の意味が?」を考えるとハマるんですよね。
      あとコードが無駄に長くやたらネストが深い傾向が強くてただでさえ読むの大変で、その上同じようなコードが何箇所にも書かれてるからデジャブを感じ混乱したり似たようなコードを読みすぎてゲシュタルト崩壊したりするんですよね。。。
      あと古いコードをコメントアウトしてたりすると一体何のために何をどう修正したのかを考えてしまいがちですがそれこそが罠だったりするんですよね。。。

    • by Anonymous Coward

      ごめんね、ごめんね。
      25年前に新人の俺が作ったやつだよねそれ。

      そりゃ新人としては優秀な部類だったとおもうよ。
      だからといって、新人の机にAccessとSQLServer置いて、客先調整しながら一人で新規案件製造するって、
      うちの会社は何考えてるんでしょうね。
      VBはWIN32API叩ける程度に知識あったけど、Accessは初めてだし、SQL何それ美味しいのって世界だし。

      そんな非道な有様だったので、利益率は社内トップになりました。
      新人の給料安いからね。

    • by Anonymous Coward

      >普通じゃないなら、1.5 倍くらいの金額になるのかな。

      費用の算定基準が人月計算が主流だし、「難易度」って評価軸が存在しないので金額で報われることはないだろう。
      まぁ、要資格業務って難易度評価はあるもののリファクタリング資格なんてないし。
      むしろ「君の考古学趣味に付き合ったら何円の利益が出るの?」って近視眼的な評価されて普通の報酬すら払われない可能性のほうが高い。

    • by Anonymous Coward

      仕様書がないから、作り直すことはできない。

      後顧の憂いに愕然とするもん
      という後顧愕者でも可

「科学者は100%安全だと保証できないものは動かしてはならない」、科学者「えっ」、プログラマ「えっ」

処理中...