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

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

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

.....

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

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

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

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

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

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

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

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

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

2017年8月31日 10:13