【日常感覚をプログラムに反映する事(4)】

こんにちは。シニアエンジニアの杉野です。
少し時間が空いてしまいました。。。

日常感覚をプログラムに反映すること。
今回のテーマは「正直者はバカを見る?」です。
某Webサイト構築時にメールを送る関数に「maybeSend」とつけた私の先輩。

「メールを送るかもしれない」

こんな、曖昧な処理を実装するなんてひどい話だな。
しかし、なぜ先輩はそんな曖昧な関数名をつけたのでしょうか?

これには理由がありました。実はこの話はもう10年以上前の話なんですが、当時はまだメール送信用のライブラリ等もなく、自分たちでメールを送るプログラムをゼロから書かないといけない時代。「メールを送る」処理を書いたところはメールサーバにメールを送信する箇所。サーバにメールを送信するまでは良くとも、「相手に送信できたか否か?」はタイムラグをおいて、更に全く別のプロセスで確認が必要でした。つまり先輩の書いた関数内では解決しようのない問題だったのです。だから正直に「maybe」とつけたのでした。

だったらきちんと送信確認も含めて作りなさいよ、ということなのですが、そもそも設計の段階でその考慮が抜けていたというのがこの時の問題点でした。つまりコーディング中の不具合ではなく、設計時の考慮漏れということです。私が関心したところは、一見お粗末に見えた関数も、とても素直にあるがままの形で開発状況を示しているものだったことです。

チームで開発をしていると、特にプログラミングをしていると、悪意の有無に限らず平気で嘘をつく関数というのが出てきます。思ったとおりに動かない?なんでだろう?こういうときは全てを疑うしかありません。なにせ自分が想定していたのとは全く違うわけですから。これがとっても時間も忍耐力も更にはお金もかかる作業なのです。だからこそ、ありのまま処理している内容を名前で表現することはとっても大事なこと。そう考えると、先輩の「maybeSend」は「send」と命名されているより、ある意味でとっても親切なのです。問題点にいきつく正確さとスピードを考えると、正しい姿だったと感じました。

さて話は続いて、このプロジェクトが完了した時の反省会でコーディング規約の相談がされました。その中で「probably,maybe,perhapsなどの曖昧な言葉は使わない!」と相談されてました。。。「大の大人が一同に会して英会話教室か!?」先輩と私は二人でこそこそと笑いをこらえるのに必死でしたとさ。

「正直者が得をする」
そんな仕事をしていきたいものです。

コメントを残す

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