
程式設計方法學 - 除錯
識別並從程式或軟體中刪除錯誤的過程稱為除錯。除錯理想情況下是測試過程的一部分,但在現實中,它在程式設計的每個步驟中都會進行。編碼人員應該在繼續之前除錯他們最小的模組。這減少了測試階段出現的錯誤數量,並顯著減少了測試時間和精力。讓我們看看程式中可能出現的錯誤型別。
語法錯誤
語法錯誤是程式中的語法錯誤。每種語言都有自己的一套規則,例如建立識別符號、編寫表示式等,用於編寫程式。當違反這些規則時,這些錯誤稱為語法錯誤。許多現代整合開發環境可以在您鍵入程式時識別語法錯誤。否則,它將在您編譯程式時顯示。讓我們舉一個例子 -

在此程式中,變數 prod 未宣告,編譯器會將其丟擲。
語義錯誤
語義錯誤也稱為邏輯錯誤。該語句沒有語法錯誤,因此它將正確編譯和執行。但是,它不會給出預期的輸出,因為邏輯不正確。讓我們舉一個例子。

檢視第 13 行。在這裡,程式設計師想要檢查除數是否為 0,以避免除以 0。但是,使用了賦值運算子 = 而不是比較運算子 ==。現在每次“if 表示式”都將計算為真,程式將輸出“您不能除以 0”。當然不是預期的!
邏輯錯誤無法被任何程式檢測到;當未達到預期輸出時,必須由程式設計師自己識別。
執行時錯誤
執行時錯誤是在執行程式時發生的錯誤。這意味著程式沒有語法錯誤。您的程式可能會遇到的一些最常見的執行時錯誤包括 -
- 無限迴圈
- 除以'0'
- 使用者輸入錯誤的值(例如,字串而不是整數)
程式碼最佳化
任何修改程式碼以提高其質量和效率的方法都稱為程式碼最佳化。程式碼質量決定了程式碼的生命週期。如果程式碼可以長期使用和維護,從一個產品延續到另一個產品,則認為其質量很高,並且具有更長的生命週期。相反,如果一段程式碼只能在短時間內使用和維護,例如直到某個版本有效,則認為其質量較低,並且生命週期較短。
程式碼的可靠性和速度決定了程式碼效率。程式碼效率是確保軟體高效能的重要因素。
程式碼最佳化有兩種方法 -
基於直覺的最佳化 (IBO) - 這裡程式設計師試圖根據自己的技能和經驗來最佳化程式。這可能適用於小型程式,但隨著程式複雜性的增加,效果會很差。
基於證據的最佳化 (EBO) - 這裡使用自動化工具來找出效能瓶頸,然後相應地最佳化相關部分。每種程式語言都有自己的一套程式碼最佳化工具。例如,PMD、FindBug 和 Clover 用於最佳化 Java 程式碼。
程式碼針對執行時間和記憶體消耗進行最佳化,因為時間稀缺且記憶體昂貴。兩者之間必須保持平衡。如果時間最佳化增加了記憶體負載或記憶體最佳化使程式碼變慢,則最佳化目的將失效。

執行時間最佳化
最佳化程式碼以提高執行時間對於向用戶提供快速服務是必要的。以下是執行時間最佳化的一些技巧 -
使用具有內建執行時間最佳化的命令
使用 switch 代替 if 條件
最大限度地減少迴圈結構中的函式呼叫
最佳化程式中使用的資料結構
記憶體最佳化
如您所知,資料和指令會消耗記憶體。當我們說資料時,它也指表示式結果的中間資料。我們還需要跟蹤構成程式或我們嘗試最佳化的模組的指令數量。以下是記憶體最佳化的一些技巧 -
使用具有內建記憶體最佳化的命令
最大限度地減少需要儲存在暫存器中的變數的使用
避免在多次執行的迴圈內宣告全域性變數
避免使用 CPU 密集型函式,如 sqrt()