奶头挺立呻吟高潮av全片,成人试看120秒体验区,性欧美极品v,A片高潮抽搐揉捏奶头视频

php語(yǔ)言

PHP中的防御性編程怎么寫(xiě)

時(shí)間:2025-03-29 01:11:30 php語(yǔ)言 我要投稿
  • 相關(guān)推薦

PHP中的防御性編程怎么寫(xiě)

  做人不可以欺負(fù)別人,但是也不能不防著別人。這條道理在編程里也同樣適用,下面是百分網(wǎng)小編精心為大家整理的PHP中的防御性編程怎么寫(xiě),希望對(duì)大家有幫助,更多內(nèi)容請(qǐng)關(guān)注應(yīng)屆畢業(yè)生網(wǎng)!

  防御性編程是什么意思

  防御性編程,簡(jiǎn)單的說(shuō),就是在編程的時(shí)候有目的地預(yù)測(cè)可能的故障點(diǎn)。目的是在那些可能發(fā)生的問(wèn)題發(fā)生前解決它們。你看見(jiàn)了問(wèn)題,對(duì)吧?預(yù)測(cè)意料之外的事情本來(lái)就有內(nèi)在的難度,當(dāng)你想要預(yù)測(cè)意料之外的事情并且解決它就更是難上了好幾倍! ∠旅嫖覀兛磶讉(gè)實(shí)際的例子。

  條件語(yǔ)句

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

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

  if($var == a){ }

  else if($var == b){ }

  else if($var == c){ }

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

  絕不相信用戶輸入

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

  答案:絕不。

  你絕不相信用戶輸入。如果你信任的用戶輸入,那么你永遠(yuǎn)不會(huì)有一個(gè)突破。明白了嗎?所以總是要評(píng)估你的輸入,一定要保證你在處理數(shù)據(jù)尤其是要存入數(shù)據(jù)庫(kù)或者要把它展示出來(lái)時(shí)使用了合適的技術(shù)。因此 – 絕不相信輸入,即使來(lái)自不是用戶的輸入的地方 – 輸入驗(yàn)證永遠(yuǎn)是你的朋友?纯碨urvive the Deep End: PHP Security 并且使用 validation library.吧。

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

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

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

  視野狹窄

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

  語(yǔ)法和命名的一致性

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

  總結(jié)

  總的來(lái)說(shuō),除去用戶行為和動(dòng)作,不要對(duì)你的程序做任何假設(shè)。假設(shè)是具有防御性編程習(xí)慣的程序員最大的敵人。不要假設(shè)你不需要 default 語(yǔ)句或者 else 代碼塊。盡量使用正確的用戶錯(cuò)誤信息,警告,日志或者任何其它你假設(shè)不會(huì)用到的代碼。你的假設(shè)通常是正確的 – 但我們不在乎。我們?cè)诤醯氖撬鼈兂鲥e(cuò)的時(shí)候。一定要計(jì)劃得好,準(zhǔn)備著你可能需要在幾小時(shí),幾周,幾個(gè)月甚至幾年后回顧你的代碼,或者其他人需要 – 相應(yīng)的就要好好寫(xiě)文檔。別假設(shè)它永遠(yuǎn)不需要升級(jí),擴(kuò)展或者維護(hù)。那是無(wú)知的,在更多的情況下是疏忽。有時(shí)候保持一顆防御性編程的心能幫你更有效更安全地估計(jì),計(jì)劃和編程。

【PHP中的防御性編程怎么寫(xiě)】相關(guān)文章:

PHP中的防御性編程10-08

php語(yǔ)言編程07-06

PHP編程與應(yīng)用06-06

PHP編程中10個(gè)最常見(jiàn)的錯(cuò)誤07-28

PHP Socket編程過(guò)程07-19

php下載代碼怎么寫(xiě)07-13

PHP編程中字符串處理的5個(gè)技巧09-13

如何自學(xué)PHP編程語(yǔ)言07-28

PHP編程語(yǔ)言搶手的原因08-11

主站蜘蛛池模板: 昭平县| 牡丹江市| 万源市| 淮阳县| 班玛县| 来安县| 云阳县| 九龙城区| 平湖市| 湘潭县| 开远市| 河西区| 响水县| 鄂州市| 江安县| 靖边县| 霸州市| 鸡东县| 平潭县| 吉安市| 临湘市| 田阳县| 米易县| 元谋县| 普安县| 鹤庆县| 临沂市| 太谷县| 津南区| 自治县| 平塘县| 大冶市| 卫辉市| 洞头县| 承德县| 隆德县| 县级市| 灌南县| 木里| 宜良县| 永嘉县|