一個悲哀的警世故事:那不捨得的問題
上週,我發布我的最新版本的WordPress插件目錄表造物主 。 我自己感到自豪,我的編碼,故障查找和測試能力。 這一切都在一個單一的夜晚轟然倒塌。
為了削減長話短說,新修訂需要一個輔助功能,以顯示職位條目。 輔助函數只由一個函數調用,因此,我當選為輔助功能包括作為該函數的孩子。 這是在許多語言中常見的做法,因為它整齊打包的所有功能,在接近其傭工。 父函數的方式被稱為每次將顯示一個頁面,並立即終止,如果該頁面不包括站點地圖引發標籤的時間。
確定。 時間的流逝。 現在是凌晨2點。 現在準備測試代碼。 我知道父函數退出立即如果沒有找到啟動標籤。 曾任職,我無處去靠近它,因此它應該繼續努力。 對不對? 我檢查站點地圖頁面,嘗試所有新的和舊的選項和證明的代碼工作。 我趕緊同步SVN庫和急於到床上睡個安穩覺,在太陽升起之前。
第二天早上,我決定來檢查一個大型網站,我知道,用我的插件。 有沒有替代真實世界的測試。 是啊,這一切看起來不錯。 在這一點上,我發現我有興趣在站點地圖中的職位。 我點擊類別鏈接和類別中的第一篇文章,然後一個大的討厭PHP的錯誤消息。 嗯。 我看著另一家大型網站。 嗯。 也許是巧合。 讓我們看一個。 噢,不!
那麼,什麼地方出了錯? 記住,兒童的功能嗎? 我聽說它說,孩子們可以是邪惡的,它竟然是在這種情況下的真實。 如果一個博客頁面,分類頁面,標籤頁或什至一個主頁顯示,在一個頁面上顯示多個職位。 WordPress的通過假裝每一個職位是一個小型的網頁,所有的迷你網頁鏈接在一起,形成一個大頁面。 這意味著,我的父函數被多次調用。 通常不是一個問題。 但現在的功能包含子功能,這些子功能創建的每個父函數被調用(即使他們不使用)。 因此,當第二個職位顯示,頁面崩潰重複的功能名稱錯誤消息。 的淨結果是,在一個看似無關的功能的小錯誤,導致一些非常大的網站去。
故事的士氣:如果你是一個網站管理員,確保您運行插件更新後,每一套完整的測試,無論多麼大或小的插件可能。



















