手机Av在线不卡,日韩精品校园婷婷五月天,国产轮理电影一区二区,日韩三级欧美视频

哈爾濱今日靈圖

[其他技能培訓(xùn)]
獵學(xué)網(wǎng)訂閱號(hào)
獵學(xué)網(wǎng)官方企業(yè)微信
位置: 獵學(xué)網(wǎng) > 學(xué)校機(jī)構(gòu) > 哈爾濱今日靈圖 > 學(xué)習(xí)資訊> PHP中的防御性編程.今日?qǐng)D靈

PHP中的防御性編程.今日?qǐng)D靈

65 2017-04-19

防御性編程是什么意思

防御性編程,簡(jiǎn)單的說,就是在編程的時(shí)候有目的地預(yù)測(cè)可能的故障點(diǎn)。目的是在那些可能發(fā)生的問題發(fā)生前解決它們。預(yù)測(cè)意料之外的事情本來就有內(nèi)在的難度,當(dāng)你想要預(yù)測(cè)意料之外的事情并且解決它就更是難上了好幾倍。

下面我們看幾個(gè)實(shí)際的例子。

條件語句

這是最容易進(jìn)行防御性編程的地方之一,也是最容易滿足的地方。在用PHP編程的許多情況下你不會(huì)需要“else”。

假設(shè),你在寫一個(gè)函數(shù)并且需要一個(gè)條件語句。在這里,你只需要為你特定的變量使用三個(gè)條件語句如下:

if($var==a){}

elseif($var==b){}

elseif($var==c){}

沒有其他可能性了,你說,并且繼續(xù)碼代碼。但是,讓我們?cè)谶@里停一下。我知道你知道這里沒有其他可能性了。并且我相信你。但有時(shí)候情況會(huì)發(fā)生。我們忘掉了一些情況。我們檢查錯(cuò)誤。我們最終重用了一些代碼,超出了原本的預(yù)定范圍。突然我們有了泄露錯(cuò)誤或者有時(shí)候是靜默的錯(cuò)誤狀態(tài),因?yàn)槲覀儧]有使用catch。使用else代碼塊。在使用switch時(shí)要使用default。用它們來返回或者記錄錯(cuò)誤,這樣你才知道發(fā)生了什么。雖然會(huì)多用兩行代碼,但當(dāng)一些你無法預(yù)測(cè)的事情發(fā)生時(shí),這是值得的。

絕不相信用戶輸入

你以前有沒有聽說過這個(gè)說法?大多數(shù)程序員聽過。這有一點(diǎn)含糊,通俗點(diǎn)講,理所當(dāng)然。但它是真理。你絕不應(yīng)該相信用戶輸入。這不是說你假設(shè)所有用戶是瘋狂的黑客,他們使用一些精心設(shè)計(jì)的命令來摧毀你的應(yīng)用。但是,你應(yīng)該假設(shè)用戶不知道你的代碼,他們不知道你需要填寫什么參數(shù),或者參數(shù)應(yīng)該多長(zhǎng)。他們不知道什么文件類型或者什么大小能上傳。偶爾他們會(huì)是機(jī)器或者黑客并且他們希望在他們的輸入中運(yùn)行腳本,有時(shí)候甚至是在登陸后的輸入中。你怎么知道你能相信認(rèn)證或者驗(yàn)證碼能在用戶輸入之前提供一個(gè)安全的堡壘?

對(duì)你的代碼的假設(shè)

不要假設(shè)任何事情。如果前面主題教會(huì)我們一些事情的話,那就是我們不應(yīng)該做任何假設(shè)。作為程序員,尤其是致力于一個(gè)項(xiàng)目太久后,我們開始做很多假設(shè)。我們假設(shè)用戶知道一些我們知道的事情。不一定是技術(shù)細(xì)節(jié),也可以是程序的功能性細(xì)節(jié)。我們假設(shè)用戶知道文件能有多大因?yàn)?。。。我們已?jīng)知道?;蛘咚麄冎罏榱俗屶]件腳本。。。但事實(shí)不是,他們不知道以上任何東西。這好像更多的是前端的工作,但明顯的是你在后端仍然要處理用戶行為和用戶輸入,所以值得好好想想。

另一個(gè)許多程序員都會(huì)做的驚人的假設(shè)是我們?cè)谌魏螘r(shí)候?qū)τ谖覀兊暮瘮?shù),類或者其它代碼段的明顯的功能屬性。一個(gè)具有防御性的程序員會(huì)仔細(xì)考慮的不僅僅是用一般的文檔來描述函數(shù)是干什么的——他們也將寫下他們對(duì)輸入,參數(shù),用例,或任何其他類似的東西做出的任何假設(shè)。因?yàn)槲覀兌际侨耍覀冞^一段時(shí)間會(huì)忘掉一些事。我們最后也很可能會(huì)面臨其他人維護(hù),擴(kuò)展或者替換我們的代碼。如果沒有別的,回想一下,編程是發(fā)生在一個(gè)充滿技術(shù)變革的世界里。如果你的應(yīng)用仍然能使用幾年,可能會(huì)升級(jí)PHP版本并且失去一些功能,或者一些你自己代碼里面具有交互的組件之間需要改變。預(yù)測(cè)這些是很困難的,所以好的注釋和文檔是非常重要的。

視野狹窄

另一件可以使我們忘記好的評(píng)論實(shí)踐以及標(biāo)準(zhǔn)的東西是視野狹窄。許多程序員都具有視野狹窄的毛玻你知道這種感覺-你解決問題,你處于最佳狀態(tài)。你覺得與你的音樂獨(dú)立于自己的小世界中,并且你就在編碼,突然兩小時(shí)過了,你意識(shí)到你已經(jīng)寫了無數(shù)行沒有注釋的代碼。我們所有人偶爾都會(huì)遇到這種事情,但重要的是在某處發(fā)現(xiàn)這個(gè)情況并且補(bǔ)上應(yīng)有的注釋。

語法和命名的一致性

一致性是一個(gè)灰色地帶–它更多的是關(guān)于編碼標(biāo)準(zhǔn)之類的,但它和防御性編程也有聯(lián)系。在PHP中,有標(biāo)準(zhǔn)規(guī)范你的代碼格式以便別人查看,或者你以后使用。但常常沒人讓你的代碼標(biāo)準(zhǔn)化。但是無論你是否按照標(biāo)準(zhǔn)編碼,你至少要保持一致性–這能讓你少犯錯(cuò)誤。這對(duì)于需要大量時(shí)間返回并且修復(fù)的小的語法錯(cuò)誤尤其適用。如果你總是使用相同的間隔,格式和語法,命名規(guī)格等等你就能更好的避免犯錯(cuò)以至于誤讀你自己的代碼。你更可能快速瀏覽代碼并且找到你需要的東西。

溫馨提示: 專業(yè)老師1對(duì)1為您解答    馬上填寫,¥1000 元豪禮免費(fèi)領(lǐng)!

掃一掃
獲取更多福利

×
獵學(xué)網(wǎng)
精品3p视频| 涩涩五月天| 国产又黄又粗又湿| 亚洲欧美日韩第二区精品| 欧美一区二区三区久久久人妻| 亚洲一区亚洲二区丝袜制服诱惑| 三级成人黄色| 亚洲一区二区三区第四区自拍偷拍 | 久久rb精品视频| 欧美涩色日韩精品| 成人在线老司机| AV hd美女操逼| 成人拍拍视频网站大全| 日韩无码不卡一区二区婷婷| 综合成人网欧美亚洲中文字幕| 人人妻人人澡人人爽欧美| 精品国产av剧场三区| 在线观看乱av| 性视频久久站黑人双插| 日本99日本久久| 日韩一二三区中文字幕| 天日天天干天天射| 免费看的欧美精品| 免费草视频播放| 久久视频无吗一三三区| 91中出高潮在线观看| 夜夜躁夜夜躁狠狠躁| 欧美中国久久一区二区三区| 亚洲一区二区 日韩 国产| 日韩黄色电影一二三区| 亚码久久爱| 久久精品伊人| 视频一区二区三区欧美日韩精品 | 午夜婷婷国产精品麻豆| 亚洲区欧美的| 91人人国产视频| 91麻豆精品一区| 内射 美女 在线视频| 午夜影院黄色影片性片| 性久久激情| 91久久人澡人人添人人爽爱网址|