轉(zhuǎn)自iOS開發(fā)中斷言的使用—NSAssert()
全新的理解:
內(nèi)部環(huán)境與外部環(huán)境的概念
對來源于內(nèi)部系統(tǒng)的可靠的數(shù)據(jù)使用斷言民宿,而不要對外部不可靠的數(shù)據(jù)使用斷言翼馆,對于外部不可靠數(shù)據(jù)馅袁,應該使用錯誤處理代碼配喳。斷言可以看成可執(zhí)行的注釋。
斷言是守衛(wèi)欢嘿,確定邊界屎鳍,避免臃腫代碼
系統(tǒng)外部的數(shù)據(jù)(用戶輸入,文件毙石,網(wǎng)絡讀取等等)都是不可信的廉沮,需要嚴格檢查(通常是錯誤處理)才能放行到系統(tǒng)內(nèi)部,這相當于一個守衛(wèi)徐矩。而對于系統(tǒng)內(nèi)部的交互(比如子程序調(diào)用)滞时,如果每次也都去處理輸入的數(shù)據(jù),也就相當于系統(tǒng)沒有可信的邊界了滤灯,會讓代碼變的臃腫復雜坪稽;而事實上,在系統(tǒng)內(nèi)部鳞骤,傳遞給子程序預期的恰當數(shù)據(jù)應該是調(diào)用者的責任窒百,系統(tǒng)內(nèi)的調(diào)用者應該確保傳遞給子程序的數(shù)據(jù)是恰當可以正常工作的。這樣一來豫尽,就隔離了不可靠的外部環(huán)境和可靠的系統(tǒng)內(nèi)部環(huán)境篙梢,降低復雜度。
書籍推薦
《代碼大全2》美旧,上面的內(nèi)容都來自其中防御式編程的章節(jié)渤滞。