將函式寫透

2021-04-21 23:05:16 字數 756 閱讀 1849

每個程式,總是由眾多的函式組成的,只要我們能保證函式的正確性,整個程式的正確性也會隨之提高,哪麼如何才能保證函式的正確呢?在此向大家推薦一招---寫透乙個函式。萬丈高樓平地起,函式就是程式的地基,地基好了,加上合適的結構,樓一定可以建得又高又好。

寫透乙個函式,主要從以下幾點入手

1:檢驗入口引數

病從口入,引數就是函式的口,如果不對引數進行任何檢驗就盲目處理,後果可想而知。在這裡,主要是檢查引數的取值是否在預期之內,你對引數的任何假設,都要明確的用**體現出來,而不要只是記在心中。

2:檢查每一步操作的返回值

程式總是充滿了意外,返回值校驗絕對不能缺少。一旦返回值不符合預期,要以盡量明顯的方式讓你知道。即便是你認為絕對不可能出錯的操作,也要檢驗返回值,因為程式很可能以你意想不到的順序執行。我曾經對detroywindow的返回值進行檢驗,按理說,這是乙個肯定不會出錯的呼叫,可是有時候呼叫竟然會失敗,跟蹤後才發現,程式的結構有問題,它會被呼叫兩次。因此,我很快的修改了結構,解決了乙個隱藏的bug,這是檢查返回值的功勞。

3:檢查函式執行後的資料是否正常

這一步,和入口檢驗遙相呼應,可以確保函式的執行結果是符合預期的。你對返回值的任何假設,也要用**來明確的體現出來。一旦不符合預期,要以盡量明顯的方式讓你知道。

如果你以前沒有這麼做,趕緊這麼做吧,保證你的**質量會上乙個檔次。

其實,細心的你或許已經發現,這3個步驟是一樣的,關鍵都在於對預期用**準確描述出來,而不是存在與心中。用乙個時髦的詞兒來說,這叫做防禦性程式設計。

函式將返回

你可以在這裡看到,n值超出範圍後,它的位址返回給呼叫者。最終的結果是,對方最終非分配的記憶體位址,它會引起很多問題,如果使用。這是最常見的程式設計錯誤,新的程式設計師。許多新的編譯器會給出乙個警告 不是錯誤 如果程式設計師試圖返回的位址 然而區域性變數,有相當多的方式來欺騙編譯器裡讓你做違法的事情而...

oracle寫函式(一)

1 宣告create or replace function get report emp count in deptno varchar2,in emp office varchar2,in datum date varchar2,in post no varchar2,職級名稱 in dept ...

Python寫冪函式

在python中可以直接呼叫數學函式pow 來實現冪函式功能,但我們也可以自己編寫一下函式來實現這個功能 1 冪函式 def s x,t m 1i 1 while i t m x i 1 return m w s 2,4 print w 2 冪函式 def power x,n 如def power ...