防守式程式設計的藝術

2021-09-22 23:23:53 字數 1692 閱讀 3724

本文講的是防守式程式設計的藝術,

在 20 世紀 80 年代,乙個**機中控制 therac-25 輻射的的**錯誤,導致其施用過量的 x 射線致使至少五名患者死亡。

mim-104 愛國者的軟體錯誤導致其系統時鐘在 100 小時時段內偏移三分之一秒,以至於無法定位和攔截來襲飛彈。伊拉克飛彈襲擊了沙地阿拉伯在達哈蘭的乙個軍事大院( 1991 年 2 月 25 日 ),殺害了 28 名美國人。

中的第乙個是注入。這意味著有人(很多人)還沒有使用安全工具來查詢他們的資料庫。請使用資料庫抽象包和庫。在 php 中你可以使用 pdo 來確保基本的注入保護。

的東西相關。在防禦駕駛中,我們假設我們周圍的每個人都有可能犯錯誤。 所以我們必須小心別人的行為。這些同樣適用於我們的防守式程式設計,作為開發者,我們不應該相信其他開發者**。我們也同樣不應該信任我們的**。

。這是許多人知道和談論的事情,但沒有人真正關心或投入正確的注意力和努力來實現 solid**。

<?php

class bankaccount

public function payto(account $to,$amount) }

// i forgot to call $bankaccount->setcurrency('gbp');

$bankaccount->payto($joe,100);

<?php

class bankaccount

}$bankaccount->payto($joe,newmoney(100,newcurrency('gbp')));

<?php

class message

}class mailer

public function sendmessage( }

$message = new message();

$message->setcontent("bob message");

$joemailer = new mailer($message);

$message->setcontent("joe message");

$bobmailer = new mailer($message);

$joemailer->sendmessage();

$bobmailer->sendmessage();

<?php

class message

}class mailer

public function sendmessage()

}$joemailer = new mailer(new message("bob message"));

$bobmailer = new mailer(new message("joe message"));

$joemailer->sendmessage();

$bobmailer->sendmessage();

原文發布時間為:2023年2月3日

程式設計的藝術

以前對程式設計最一致的誤解是思維活動是純技術性的,本質上來說完全準確,就像數學和物理一樣。但計算是準確的,程式設計卻不是。前者是機器操作的結果,後者仍是人類行為。處於頂層抽象概念上的程式設計需要很多創造力,而工具和技術我們可以在教室裡學習到 所有的理論表明只需要一小部分需求就能創造乙個偉大開發者。如...

程式設計的藝術

對於外行人甚至有些內行人來說,程式設計就是乙個純技術性的活。就像是數學正確的結果往往是唯一的一樣,計算機也是如此,會毫無偏差的執行派給其的指令,如果出現意外的結果,那不是計算機的錯,但是程式編寫人自己產生的bug 程式的執行是準確的計算,但是程式設計本身卻是一門藝術。其實程式設計也是一種才藝,解決同...

響應式程式設計的思維藝術 (2)響應式Vs物件導向

本文是rxjs 響應式程式設計 第一章 響應式這篇文章的學習筆記。目錄三.響應式程式設計實現 四.差異對比 三句非常重要的話 原文對很多基礎卻核心的概念都有詳細的講解,本文不再贅述。需要注意的是,理解原理是一方面,但能夠熟練使用運算子來轉換或查詢流資訊是需要很長時間積累的,建議在學習過程中,每次遇到...