みねこあ

mineko. A! ―from mi-neko online.

2008-01-25

[]あまりに見事に酷いお話 21:11 あまりに見事に酷いお話を含むブックマーク

いきなりお仕事の愚痴で申し訳ないのです。

私たちが作っている機器の下位ユニットのソフトの出来が酷いです。

どういう風に酷いかというと、ちょっと通信ログみれば一発で(仕様をしらない人間でも「ああ、こりゃコピペして修正を途中し忘れたな」と解るような)バグが普通にあったり、2個同じものをもつ構成なのに片方づつ全く違う挙動をしたり(バグも両ポートで違う^^;)。もちろん(?) コッチを直せばアッチがデグレードで、いつまで経ってもまともに動くようになりやしません。


で、あまりの酷さゆえ、彼らのコードのレビューが開かれたのですが。おぉ、これは凄い。こんなに見事なコードをみたのは初めてでした。

最長不倒関数、芸術的字下げ、strcat の嵐、グローバル変数の多用(しかも同類を構造体に纏める事すらしない)、コメント無し・define 無しで使われる数多のマジックナンバー、strcat の嵐、ナンバリングされた変数名、関数名、..etc.Cプログラミング診断室の駄目な部分を抽出して見事に贅肉をそぎ落としたような、余りに美しくも完璧なダメコード。

実は残念ながらレビューには同席できなかったので(他がトラブっていたです TT)、私は後日コードをみせてもらったのですが、あまりの見事さに笑いがこみあげてきちゃって、あたしゃクック、クックと笑ってしまいました。(本人の目の前でなくてよかった)

そんなコードに、巨大なフローチャート(A3で印刷してもミニマム文字だよ)というおまけ付き。もう完璧です。


* * *


しかし、レビューへの突っ込みに対する彼らの受け答えは、コード以上に想像を絶するものだったそうです。以下伝聞ですし、けっこう誇張が入っているかもしれませんが、でもだいたいこんな感じだったそうな。

  • Q. 2個同じ機器を抱えているが、コードも2つある。共通関数化しないか
  • A. 2個同じものがある機器構成でもセンサ類のレジスタは別になる。だから共通の関数にできないのはあたりまえ
  • Q. 関数が尋常じゃない長さ(700行)なので可読性のため分割しませんか
  • A. 関数コールであちこちに飛ぶ方がかえって読みにくい*1
  • A. そもそも、コードの可読性は品質には影響しない。可読性をあげて良いことがあるのか。
  • Q. 定数がコードに直に書かれているが、これを #define にしないと 置き換えが大変ではないか
  • A. 定数は仕様だ。変わらないでしょ?変わらないなら変更を考慮する必要はないのでは。
  • A. 可読性?可読性を挙げても(ry
  • Q. とにかくコードが酷い。そもそも 構造化プログラミング は知っているのか
  • A. 構造化プログラミングは知っている。しかしいつでも適用できるモノという訳ではない
  • A. 見解の相違はあるかもしれないが、これが我が社の文化(伝統的スタイル)であり、他の社員でもメンテナンスする関係上、このスタイルを変えるつもりはない
  • Q. コメントが殆どない。もう少し何とかならないか
  • A. コメントがあるとコードはかえって読みづらくなる
  • Q. 一度でもテストすれば発覚するような不具合が多すぎる。テストはしたのか?
  • A. テストはしていない。これからは行うようにする。

次から次に飛び出す破壊力抜群の迷言に、誰もがあっけにとられてしまったとのことです。笑うしかないよね、トホホ。


* * *


コードを見た同僚が ぽそり名言。「ここまでコードの共通化がされてないと、ホワイトボックステストでもブラックボックステストと変わらないよな・・・。」

...あぁ、そうね。ホントにそうですね (T△T

*1:これを聞いたのは生涯2度目。まさか2度目があるとはおもってなかったですよ...

yorutrainyorutrain 2008/01/25 22:02 はじめまして。
「strcatの嵐」が二回出てくると言うことは、相当だったんでしょうね...

minekoaminekoa 2008/01/25 23:43 はじめまして。コメントありがとうございます。
>「strcatの嵐」が二回出てくる
あぁ、ホントですっ。ダメダメだ、私。orz
単純なミスなのですが、これはこれで面白いのでそのままで。

vtwinautomatonvtwinautomaton 2008/01/26 21:27 構造化プログラミング知ってるのか?以外の質問は、ほぼ全て新入社員により行われたもので、「いきなり見たコードのダメだしをちゃんとできるくらに成長してる」という事を確認できたので、そーゆー観点では得るものがあったかなぁと思います。

minekoaminekoa 2008/01/26 22:17 vtwinautomatonさんがネタにするのかな?と、思ったのですが、私の方が頂いちゃいました。
ウチの新人君も1年でだいぶ育ったねぇとしみじみです。師匠がいいんじゃない? > vtwinautomaton

通りすがり通りすがり 2008/01/30 16:33 ”作っている機器”ってなんなんですか?

minekoaminekoa 2008/01/30 23:14 いろいろ問題があって、具体的なのはちょっと話せません。ごめんなさい。

clausemitzclausemitz 2008/02/05 14:13 「ダメダメプログラムの言い訳」という駄文を書いてトラックバックした者です。怒りと酔いにまかせて書いてしまったのですが、翌日になってひどいことを書いたと恥ずかしくなって削除したので、恐れ入りますがトラックバックから削除しておいてください。
いろいろと苦労なさっていると思いますがメゲずにがんばってください。私はメゲてしまいましたが(苦笑)

minekoaminekoa 2008/02/06 09:07 >clausemizさん
了解しました。トラックバック削除いたします。

このエントリは予想外に食いつきがよくって、みんな同じ様な苦労をしているんだなぁとしみじみ感じ入ってしまいました。