如何減少bug(php 版本)

2021-07-15 21:24:05 字數 2140 閱讀 1521

重點內容變數宣告在使用

foreach 迴圈要注意賦值,特別是裡面有if 判斷時;

eg :

$arr = [

['id'=>1, 'name' => 'hhee'],

['id'=>0, 'name' => 'hhee0'],

['id'=>3, 'name' => 'hhee0'],

['id'=>4, 'name' => 'hhee0'],

]$result = $temp = array();

foreach($arr

as$v)

$result = $temp;

}

ok 這裡就出問題了

$result = [

['title' => '***'],

['title' => '***', 'extra' => 'extra'],

['title' => '***', 'extra' => 'extra'],

['title' => '***', 'extra' => 'extra'],

];

這就有可能跟我們預期的不一樣了

變數型別,比如count(xx) , 如果xx 不是陣列,返回的結果為1,有時候我們從緩訪問資料,可能因為key 不存在,返回false , 如果這時候你把它當陣列使用,就會出問題

快取key 不存在,返回false ,如果你業務 存進去就是乙個bool ,這時候就會出問題.

array_push(ar

r,′x

xx′)

, arr 必須是陣列

array_merge引數必須都是陣列,否則報錯,如果在生產環境,一般遮蔽了報錯,這時候得到的結果就是乙個bool 的false

變數比較,php 是弱型別語言,比如

1 == '1'

true

1 == '1a'

true

'1a' 會被轉換成整型(1),

false == '0'

true

false == '0q'

true

strpos() , 這個函式,可能返回0 ,表示在第0個位置匹配到了子字串,所以不能直接if(!strpos('***','x')){}, 而是 if(strpos('***','x')!==false){}

切記 如果要做型別比較的時候,注意類換轉換問題

if 做邏輯判斷的時候

if(a == 1)

elseif(a == 3)

這**可能就會出現bug,最好是補全else這個分支

注意return, 乙個方法最好只返回一種資料結構

if(a == 0)elseif(a == 1)elseif(a < 0 )

return

false;

以上這種寫法是錯誤的,呼叫這個函式的人,就要去判斷多種情況,很容易產生bug,應該統一返回的資料結構。 比如array('ok' => , 'msg' => 'msg' , 'data' => 'data'), 類似這種型別,具體情況具體分析。

try catch 問題

try

catch(exception $e)

db::commit();

這裡要注意,try 裡面如果出現異常,那麼就會rollback ,事務已經不存在了,這時候在commit 就會出錯

**提交

我們在使用svn , 或者git 的時候,提交的時候一定要注意在檢查一遍,因為你在本地開發,可能有些檔案需要根據本地環境進行適當修改,如果不小心提交上去了,那麼測試環境,肯定會出現錯誤,如果一不小心合到online版本,那麼可能就是個災難了,線上環境就會出錯!(我就差點出現這個錯誤。還好在效能測試階段發現了)

如何減少換頁錯誤?

有這麼一道筆試題 如何減少換頁錯誤?1,程序傾向於占用cpu 2,訪問區域性性 localilty of reference 滿足程序要求 3,程序傾向於占用i o 4,使用基於最短剩餘時間 shortest remaining time 的排程機制 5,減少頁大小 yathing最先排出1和3選項...

如何減少Outlook占用空間

你是否會發現,在刪除大量email的時候發現pst檔案占用容量根本沒有減少。那麼如何才能真正減少pst檔案的占用空間呢?很簡單,outlook中刪除了郵件,即使用 徹底刪除 也不是真正的刪除該郵件,只是在pst檔案中對應該郵件的地方做個標記而已。pst的 壓縮 功能可以將這些被刪除的郵件所占用的空間...

如何減少silverlight XAP包的尺寸

這次得到了乙個做silverlight應用開發的機會,在發布時遇到 xap 包太大的問題,上網看了半天,最後把微軟的這個文件 如何使用應用程式庫快取 翻來覆去看了半天,終於搞明白了它說的內容,暈啊,真應了 會者不難 這句老話。最後決定把這個其實很簡單的東西總結一下,避免別的新學者浪費時間。開發場景 ...