「プログラマーって分からない関数に出くわしたら終了なの?」について

Posted on Tuesday, September 2nd, 2014 18:35:57

某掲示板の某IT系スレのまとめサイトで、「プログラマーって分からない関数に出くわしたら終了なの?」というスレを見つけました。質問の内容は、以下の通りです。

例えば
Pushbackinput
streambufferreader()

こういう関数を使えと仕様書に書いてあったとして、何これ?って
なってネットでも調べても無いし、先輩に聞いても分らない
場合どうしてんの?仕事クビ?

私もITエンジニアを5年やっていましたが、SE兼プログラマーみたいな立ち位置だったので、自分で設計したものを自分で書くことしかやっていません。そのため、少し的外れかもしれませんが想像できるのは2パターンです。

辞めた人が作った関数

前に辞めてった人が作った関数で、社内に分かる人が誰もいないパターンです。そのプロジェクト内で、その関数を使っている箇所があるのであれば、コードを読むか実行すれば、関数の振る舞いはある程度予測できると思うので、どこにも使われていないのでしょう。

すると、入力に何を与えれば良いのか、戻り値は何が返ってくるのかも分かりません。IDE等を使ってたらぼそっと教えてくれたりもするかもしれませんが、そこで得られたヒントが、入力は「TAhaha ihihi」「TUhuhu ehehe」の2つで、戻り値が TOhoho 型ですよ、なんて場合。

その辞めたエンジニアの住所を突き止めて、ぶん殴りに行きたいところですが、こんな関数名で、こんな関数名を定義して、こんな引数名にする方は、少なからず病んでらっしゃると想像できますので、そっとしておいてあげましょう。

まあ、大人しく実装見ますよね。私は「ドキュメントを信じてはいけない病」を煩っているため、どの道実装見るわけですが。これで普通に解決すると思われますが、もしかすると実装を見ても訳が分からないかもしれません。

そうなれば(いや、そうならなくても)、自分で作った方が早いですよね。「関数を使え」と指定されている以上、何かしら得たい結果があるのでしょうから、そんなに難しくもないでしょう。Pushbackinputstreambufferreader() はなかなかに酷い名前ですが、やりたいことが全く想像付かないわけでもありませんしね。

他社の関数(DLL)

他社から受注して、設計書とDLLだけを投げられて、何らかの圧力で問い合わせを行うことができない状況だとします。ダイナミックリンクライブラリ関数なので実装を確認することもできないし、勝手に自作の関数で済ましちゃうと絶対に怒られてしまう絶望的状況です。

この場合は、おっしゃる通り終了かもしれません。とりあえず、期待の結果が得られるまで、いろんな値を突っ込んでみたり、おもむろに逆アセンブルツールにかけてみたり、それぐらいしかできることが思い付きません。

そんなことをして何とか想像できた関数の仕様をそのまま信じ込んで納めるぐらいなら、その「何らかの圧力」と格闘して、客先か上司に「今ヤバい」ってことを訴えた方が健全な場合がほとんどでしょう。

まとめ

  • 誰も分からないなら何とか許可もらって自分で作る
  • それすら許されないなら夜逃げする

結局そんな感じです。くだらない議論でした。ではでは。

Share

  • このエントリーをはてなブックマークに追加
  • Pocket
  • 0 follow us in feedly

Your Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です