Phương pháp lập trình - Gỡ lỗi
Xác định và loại bỏ lỗi khỏi chương trình hoặc phần mềm được gọi là debugging. Gỡ lỗi về mặt lý tưởng là một phần của quá trình thử nghiệm nhưng trên thực tế, nó được thực hiện ở mọi bước lập trình. Người viết mã nên gỡ lỗi mô-đun nhỏ nhất của họ trước khi tiếp tục. Điều này làm giảm số lượng lỗi phát sinh trong giai đoạn thử nghiệm và giảm đáng kể thời gian và nỗ lực thử nghiệm. Chúng ta hãy xem xét các loại lỗi có thể xuất hiện trong một chương trình.
Lỗi cú pháp
Syntax errorslà những lỗi ngữ pháp trong một chương trình. Mọi ngôn ngữ đều có bộ quy tắc riêng, như tạo mã định danh, viết biểu thức, v.v. để viết chương trình. Khi các quy tắc này bị vi phạm, các lỗi được gọi làsyntax errors. Nhiều hiện đạiintegrated development environmentscó thể xác định các lỗi cú pháp khi bạn nhập chương trình của mình. Khác, nó sẽ được hiển thị khi bạn biên dịch chương trình. Hãy để chúng tôi lấy một ví dụ -
Trong chương trình này, biến prod chưa được khai báo, biến này được trình biên dịch đưa lên.
Lỗi ngữ nghĩa
Semantic errors cũng được gọi là logical errors. Câu lệnh không có lỗi cú pháp, vì vậy nó sẽ biên dịch và chạy chính xác. Tuy nhiên, nó sẽ không cho đầu ra mong muốn vì logic không đúng. Chúng ta hãy lấy một ví dụ.
Nhìn vào dòng 13. Ở đây lập trình viên muốn kiểm tra xem số chia có phải là 0 hay không, để tránh chia cho 0. Tuy nhiên, thay vì sử dụng toán tử so sánh ==, toán tử gán = đã được sử dụng. Bây giờ mỗi khi biểu thức “if” sẽ đánh giá thành true và chương trình sẽ đưa ra kết quả là “Bạn không thể chia cho 0”. Chắc chắn không phải những gì dự định !!
Các lỗi logic không thể được phát hiện bởi bất kỳ chương trình nào; chúng phải được nhận dạng bởi chính lập trình viên khi không đạt được kết quả đầu ra mong muốn.
Lỗi thời gian chạy
Lỗi thời gian chạy là lỗi xảy ra trong khi thực hiện chương trình. Điều này ngụ ý rằng chương trình không có lỗi cú pháp. Một số lỗi thời gian chạy phổ biến nhất mà chương trình của bạn có thể gặp phải là:
- Vòng lặp vô hạn
- Chia cho '0'
- Giá trị do người dùng nhập sai (giả sử, chuỗi thay vì số nguyên)
Tối ưu hóa mã
Bất kỳ phương pháp nào mà mã được sửa đổi để cải thiện chất lượng và hiệu quả được gọi là code optimization. Code qualityxác định tuổi thọ của mã. Nếu mã có thể được sử dụng và duy trì trong một thời gian dài, được chuyển từ sản phẩm này sang sản phẩm khác thì chất lượng của nó được coi là cao và có tuổi thọ lâu hơn. Ngược lại, nếu một đoạn mã chỉ có thể được sử dụng và duy trì trong thời gian ngắn, chẳng hạn như cho đến khi một phiên bản còn hiệu lực, thì nó được coi là chất lượng thấp và có tuổi thọ ngắn.
Độ tin cậy và tốc độ của mã quyết định code efficiency. Hiệu quả mã là một yếu tố quan trọng trong việc đảm bảo hiệu suất cao của một phần mềm.
Có hai cách tiếp cận để tối ưu hóa mã -
Intuition based optimization (IBO)- Ở đây lập trình viên cố gắng tối ưu hóa chương trình dựa trên kỹ năng và kinh nghiệm của chính mình. Điều này có thể hoạt động đối với các chương trình nhỏ nhưng không thành công khi độ phức tạp của chương trình tăng lên.
Evidence based optimization (EBO)- Tại đây các công cụ tự động được sử dụng để tìm ra các điểm nghẽn về hiệu suất và sau đó tối ưu hóa các phần có liên quan cho phù hợp. Mỗi ngôn ngữ lập trình đều có bộ công cụ tối ưu hóa mã riêng. Ví dụ, PMD, FindBug và Clover được sử dụng để tối ưu hóa mã Java.
Mã được tối ưu hóa cho thời gian thực thi và tiêu thụ bộ nhớ vì thời gian khan hiếm và bộ nhớ đắt tiền. Phải có sự cân bằng giữa hai điều này. Nếutime optimization tăng tải trên bộ nhớ hoặc memory optimization làm cho mã chậm hơn, mục đích tối ưu hóa sẽ bị mất.
Tối ưu hóa thời gian thực thi
Tối ưu hóa mã cho thời gian thực thi là cần thiết để cung cấp dịch vụ nhanh chóng cho người dùng. Dưới đây là một số mẹo để tối ưu hóa thời gian thực thi -
Sử dụng các lệnh có tích hợp tối ưu hóa thời gian thực thi
Sử dụng công tắc thay vì điều kiện if
Giảm thiểu các lệnh gọi hàm trong cấu trúc vòng lặp
Tối ưu hóa cấu trúc dữ liệu được sử dụng trong chương trình
Tối ưu hóa bộ nhớ
Như bạn đã biết, dữ liệu và hướng dẫn sử dụng bộ nhớ. Khi chúng ta nói dữ liệu, nó cũng đề cập đến dữ liệu tạm thời là kết quả của các biểu thức. Chúng tôi cũng cần theo dõi có bao nhiêu hướng dẫn đang tạo nên chương trình hoặc mô-đun mà chúng tôi đang cố gắng tối ưu hóa. Đây là một số mẹo chomemory optimization -
Sử dụng các lệnh có tối ưu hóa bộ nhớ tích hợp
Giữ cho việc sử dụng các biến cần được lưu trữ trong thanh ghi ở mức tối thiểu
Tránh khai báo các biến toàn cục bên trong các vòng lặp được thực thi nhiều lần
Tránh sử dụng các hàm chuyên sâu của CPU như sqrt ()