そんなわけで今日はバイト先でテスト環境では再現しないbugの原因究明をしていました。
si曰く、スーパープログラマーな方々が作ったソースと言うだけあって結構キてました...。(´Д`ι)
メール関連の不具合だったのですが、bug云々以前に元々のプログラムが一体どこでどうメールを発射してるのか全然ワカランかった。その後の流れとしては...
結局流し読みはダメだぁ!!と言うことで真剣にソースを追い始める→データと処理が別クラスとして完全に分離されてることにようやく気づく→流れ把握→とりあえずbug再現しようと試みる→数回ほど再現→更にソース読んでロジック上、場合によっては起こり得ることが発覚。(*゜∀゜)
対策は後日ということで(´・ω・`)
---
んー、GoFのVisitorパターンのように処理とデータを完全に切り分けてる部分って事前に「この辺の部分はこうなっている」と知ってればすごく綺麗(かつ合理的)に見えるのだが、そんな風になってるとは知らずに流し読みしてしまうとハマってしまうなぁ。肝心なところが見落としがちになる。
データ部分だけ注目してしまい、「はて、処理的にコイツが呼ばれるのは間違いないが、コイツはどこでいつ呼ばれてるんだ?」と、悩んでしまう自分が居ます。method名で検索してもすげーhitするし(´Д`;)
結局一から読むのがめんどくてついつい流し読みしてしまうのが原因だったりする。
まだまだ他人のソースを読む力が自分にはない!もっと精進しないとなぁ。