Tôi sử dụng trình gỡ lỗi thường xuyên, bởi vì tôi làm việc trên một hệ thống lớn và do đó tôi rất tệ.
http://steve-yegge.blogspot.com/2007/06/rich-programmer-food.html
Cho dù mã của bạn ngắn và thường xuyên đọc như thế nào, luôn có khả năng nó sẽ có lỗi. http://googleresearch.blogspot.com/2006/06/extra-extra-read-all-about-it-gầnly.html
Sai lầm là con người và người ta không bao giờ có thể chứng minh rằng một chương trình là chính xác, vậy tại sao không sử dụng các công cụ như trình gỡ lỗi / kiểm tra tự động để hỗ trợ chúng ta trong công việc khó khăn này?
Nếu mã đủ ngắn, thì các thử nghiệm đơn giản sẽ làm. Ngoài ra, nếu nó ngắn và bạn biết bản chất của lỗi, việc đọc mã có thể là đủ. Tuy nhiên, một khi cơ sở mã lớn, bao gồm nhiều ngôn ngữ được trộn lẫn với nhau, cộng với 3 tầng, thì bạn chỉ cần có phạm vi kiểm tra tốt ở nhiều cấp độ cộng với trình gỡ lỗi rất tốt - nếu không bạn sẽ lãng phí rất nhiều thời gian.
Vì vậy, khi nào tôi không cần một trình sửa lỗi?
Tôi không phải là lập trình viên thông minh nhất, cũng không phải là người có kinh nghiệm nhất, nhưng đôi khi, tôi không cần sử dụng trình gỡ lỗi. Đó là khi:
- Mã này là của tôi hoặc được viết tốt VÀ
- Nó được viết bằng ngôn ngữ dễ đọc VÀ
- Dự án tổng thể là nhỏ.
Khi nào tôi dựa vào trình gỡ lỗi rất nhiều?
- Trả lời ngắn gọn: thường xuyên .
- Khi một ứng dụng gặp sự cố. Đặc biệt khi nó được triển khai. Việc cài đặt VS2010 trên máy tính đó có thể tạo ra sự khác biệt giữa "Lỗi không xác định" và
FileNotFoundException
.
- Khi thư viện bên thứ 3 gặp sự cố hoặc hoạt động sai.
- Khi mã được viết kém. Đặc biệt, nếu cùng một tập tin được chạm vào bởi 10 người khác nhau trong 10 năm qua, 7 trong số đó không còn với công ty.
- Khi dự án lớn
- Khi mã khá nguyên khối.
- Khi có một số tầng (GUI, SQL, BL) tham gia.
Lưu ý rằng "trình gỡ lỗi" có thể tham chiếu đến nhiều hơn một công cụ. Tôi sử dụng trình gỡ lỗi Visual Studio, trình gỡ lỗi SQL (chủ yếu cho các procs được lưu trữ) và SQL profiler (để tìm ra SP nào đang được gọi). Tôi có cần các công cụ của tầm cỡ này không? Tôi đang viết một kịch bản Python sysadmin-ish nhanh chóng? Không. Nếu tôi tạo công cụ dựa trên GUI nhỏ của riêng mình? Phụ thuộc. Nếu đó là .Net WinForms - có thể không. Nếu đó là WPF - có.
Điều gì định nghĩa một lập trình viên "thực sự" nào? Một trong đó là nhanh chóng? có kiến thức? Có giỏi thuật toán không? Viết tài liệu tốt? Chỉ khi nào chính xác một người tốt nghiệp vào danh hiệu mới này? Khi nào một người vượt qua dòng ma thuật?
Tôi có thể nói rằng một lập trình viên không bị bẩn tay trong nỗ lực hơn 100 năm hiện tại đã không có cơ hội bị hạ thấp bởi sự phức tạp và giới hạn của chính mình (cũng như thất vọng với chất lượng mã).
Cá nhân tôi cố gắng sử dụng trình gỡ lỗi tốt nhất có sẵn cho tôi và tôi có xu hướng sử dụng nó thường xuyên. Nếu một tác vụ đủ đơn giản và không yêu cầu trình gỡ lỗi - thì tôi không sử dụng nó. Không mất quá nhiều thời gian để tính xem tôi có cần hay không.
...
Bây giờ, về lý thuyết tôi có thể đọc cơ sở mã quá lâu, rằng tôi sẽ chỉ nhận được nó. Tuy nhiên, phương pháp thực hành hoạt động tốt nhất, cộng với tôi thường muốn viết lại mã ngu ngốc mà tôi đang thấy. Thật không may, tôi sẽ mất hơn 10 năm để dọn sạch cơ sở mã mà tôi đang ở. Vì vậy, sử dụng trình gỡ lỗi là bước đầu tiên rõ ràng. Chỉ khi tôi phát hiện ra một trong số 5 triệu dòng mã đang hoạt động, tôi mới quét tệp lên và xuống để cố gắng tìm hiểu xem lớp đó đang làm gì.