# 2.1.1.確認前後條件

## 1.目的

* 1.檢視程式的進入點 (前置條件 - 程式的狀態與輸入)
* 2.檢視程式的離開點 (後置條件 - 程式狀態與回傳值)

## 2.作法

* 1.進入點
  * 在**程序的開始處**或**呼叫它的地方**或**關鍵演算法開始執行處**設置[**中斷點**](https://jenhsuan.gitbooks.io/debugging-tools-experience/content/chapter4-fu-zhi-wen-ti-de-ji-qiao/42zhui-zong-cheng-shi-zhi-xing/422chu-cuo-gong-ju/4221shu-chudebug-xun-606f3a-visual-studio.html) ![](https://github.com/jenhsuan/debugging-tools-experience/tree/91ad7a157f155ea77065c5600800bb4627bd1ae2/assets/%E8%9E%A2%E5%B9%95%E5%BF%AB%E7%85%A7%202017-06-26%20%E4%B8%8A%E5%8D%889.01.10.png)
  * 檢驗前置條件是否符合: 包括**參數**, **被叫用方法的物件**與**程序使用的全域狀態**:
    * 1.是否有不應該為null的值
    * 2.檢查呼叫數學函式的值域 (例如檢查傳給log的值是否大於零)
    * 3.檢查傳給程序的**物件**, **結構**與**陣列**以驗證其內容是否符合要求, 也可以找出**無效的指標**

      &#x20; 

      * 例如map是否帶有預期中的鍵和值, 或是否能正確遍歷雙向連結list
    * 4.未初始化的變數通常具有可疑的值, 例如6.89851e-308或61007410       &#x20;
* 2.離開點
  * 在**程序的尾端**或**呼叫後**或**關鍵演算法執行完成後**設定[**中斷點**](https://jenhsuan.gitbooks.io/debugging-tools-experience/content/chapter4-fu-zhi-wen-ti-de-ji-qiao/42zhui-zong-cheng-shi-zhi-xing/422chu-cuo-gong-ju/4221shu-chudebug-xun-606f3a-visual-studio.html)
  * 檢視程序執行後的效應
    * 1.判斷計算結果是否合理
    * 2.判斷計算結果是否正確
      * [手動執行程式檢查](https://jenhsuan.gitbooks.io/debugging-tools-experience/content/chapter4-fu-zhi-wen-ti-de-ji-qiao/42zhui-zong-cheng-shi-zhi-xing/422chu-cuo-gong-ju/2215dan-bu-zhen-cuo.html)
      *
