鍍金池/ 問(wèn)答/PHP/ php函數(shù)有必要檢查函數(shù)的類(lèi)型嗎

php函數(shù)有必要檢查函數(shù)的類(lèi)型嗎

各位phper,由于php是弱類(lèi)型語(yǔ)言,在以往php5.*中是不支持這種寫(xiě)法定義函數(shù)的
function getRecord(int $id)
{

.....

}
直到php7才支持,但是現(xiàn)在項(xiàng)目中使用php5.*的頻率還是很高的,因此我在糾結(jié)用不用每個(gè)函數(shù)都檢查一下傳遞過(guò)來(lái)的參數(shù)值是否是期待的。如果檢查吧那么代碼就會(huì)變得冗余,看著有點(diǎn)亂。如果不檢查吧,又感覺(jué)自己的代碼不夠健壯。好糾結(jié)。。。。

回答
編輯回答
初念
  1. 你自己也說(shuō)了php是弱類(lèi)型語(yǔ)言,所以他在傳參檢查上面做的并不嚴(yán)格,不管好與壞,這就是他的特點(diǎn)

  2. 我建議如果不是必要的情況下,沒(méi)有必要對(duì)之前的所有代碼進(jìn)行覆蓋的傳參檢查,這樣不僅工作量大,而且可能會(huì)引起新bug

  3. 雖然php不在傳參的時(shí)候檢查類(lèi)型,但是一般如果需要類(lèi)型確定的情況下的話(huà),一般也會(huì)在具體函數(shù)里面判斷的,這就是個(gè)人寫(xiě)代碼嚴(yán)不嚴(yán)謹(jǐn)了,跟語(yǔ)言關(guān)系不大

  4. 你覺(jué)得加了檢查會(huì)導(dǎo)致代碼冗余,這就是第一點(diǎn)說(shuō)的每個(gè)語(yǔ)言都有他的特點(diǎn),我覺(jué)得吧,必要的參數(shù)加檢查就好了,沒(méi)有必要每個(gè)函數(shù)的每個(gè)參數(shù)都加檢查,這樣既達(dá)到嚴(yán)謹(jǐn)?shù)男Ч?,也不?huì)覺(jué)得太冗余

2017年2月1日 20:38
編輯回答
陪她鬧

不用。
又感覺(jué)自己的代碼不夠健壯
這個(gè)做好單元測(cè)試甚至人工測(cè)試就可以避免了。
弱類(lèi)型是PHP的優(yōu)勢(shì),如果太追求強(qiáng)類(lèi)型會(huì)導(dǎo)致開(kāi)發(fā)不方便。畢竟PHP不像JAVA那些天生就是強(qiáng)類(lèi)型

2018年4月14日 20:22
編輯回答
冷眸

為什么php是弱類(lèi)型的語(yǔ)言,在于php可以在合適的時(shí)候進(jìn)行自動(dòng)轉(zhuǎn)變,我覺(jué)得你這個(gè)問(wèn)題應(yīng)該在你寫(xiě)代碼的時(shí)候如果你有預(yù)期類(lèi)型的時(shí)候檢驗(yàn)一下這個(gè)變量是否是你預(yù)期的類(lèi)型應(yīng)該就可以了,如果每個(gè)都檢測(cè)的話(huà)工作量太大了。而且代碼簡(jiǎn)潔和健壯性本來(lái)就是成反比,不可能全部都兼顧到。

2017年8月31日 10:13