Topic 26. How to Balance Resources — Cân Bằng Tài Nguyên (Pragmatic Programmer #26)
Mở đầu
Ảnh: ThisisEngineering — Pexels
Mình đang đọc cuốn The Pragmatic Programmer (bản 20th Anniversary), và series này là mình viết cảm nhận từng topic một cách chân thật. Cuốn sách này hay ở chỗ nó pragmatic thiệt, không sáo rỗng, toàn là những tip thực tế giúp dev như mình tránh được nhiều坑 (hố) trong công việc. Đọc tới chapter Pragmatic Paranoia mình thấy hợp gu lắm, vì nó nói về việc phải paranoid một chút để code robust.
Topic 26. How to Balance Resources
Ảnh: Pixabay — Pexels
Topic này nói về cách cân bằng tài nguyên (memory, file, database connection, v.v.). Ý chính là:
- Allocate và deallocate theo thứ tự ngược lại (stack discipline) — mở A rồi B thì close B trước A.
- Dùng wrapper để track tất cả allocation, paranoid check xem có resource nào leak không.
- Trong ngôn ngữ có GC thì dễ hơn, nhưng vẫn phải cẩn thận với file handle hay connection.
Mình giải thích dễ hiểu: giống như xếp chồng đồ lên bàn, lấy ra phải lấy từ trên xuống trước, đừng để rơi lung tung. Trong lập trình, nếu không balance tốt thì dễ bị memory leak, file descriptor leak, dẫn đến app chậm hoặc crash.
Cảm nhận của mình
Ảnh: Daniel — Pexels
Thiệt tình là topic này làm mình nhớ lại mấy project cũ. Hồi đó mình code Python nhưng quên close connection database trong một số case exception, dẫn đến connection pool đầy và app die sau vài giờ. Đọc xong mình thấy hay vì nó nhắc nhở phải paranoid với resource. Trong Python thì with statement là cứu cánh, trong C++ thì RAII siêu hay. Mình nghĩ dev nào cũng nên áp dụng, đặc biệt khi làm service dài hạn.
Nó không hay ở chỗ lý thuyết suông mà là thực tế, giúp mình viết code sạch hơn, ít bug hơn. Cảm ơn hai ông Hunt và Thomas đã share.
Kết
Tóm lại, cân bằng tài nguyên là một trong những thói quen quan trọng để trở thành pragmatic programmer. Đừng để resource nào bị "mất tích". Hẹn mấy bạn ở topic sau của series này nha, chắc sẽ còn nhiều cái hay ho lắm!