Hôm nay mình ngồi nghĩ lại dự án nhỏ dạo trước, đúng kiểu đồ để bàn thật là lộn xộn. Chia sẻ luôn cho mấy bạn biết struct trong C++ nó cứu mình thế nào, đỡ vật lộn với đống biến lung tung.
Bắt Đầu Tưởng Dễ Ai Ngờ…
Mình đang làm một cái tool nho nhỏ quản lý đồ trong kho cho dự án phụ. Lúc đầu, mình khai báo lính ta lính tách từng biến một. Mỗi món đồ có tên, có số lượng, có giá, rồi thêm cái id nữa chứ. Code mới đầu chỉ có vài món thôi.
Kiểu này nè:
string tenDo1, tenDo2, tenDo3;
int soLuong1, soLuong2, soLuong3;
float gia1, gia2, gia3;
int id1, id2, id3;
Xong rồi mình viết hàm để thêm đồ mới, kiểm tra số lượng. Mới 3 món thôi mà code đã thấy ngộp rồi. Mỗi lần truyền vào hàm phải đưa từng lô biến, nhìn muốn hoa mắt.
Lúc “A!” Ra Thì Trời Cũng Sáng
Làm được chừng 10 món đồ, code dài thượt, mà muốn thay đổi gì đó như thêm trường ngày nhập kho thì… chán đời. Phải sửa từng hàm, từng dòng khai báo, thêm biến ngayNhapKho1, ngayNhapKho2,… mấy chục dòng. Đúng kiểu “mày đùa tao à?”.
Xong rồi mình chợt nhớ tới struct. Hồi học qua rồi mà chưa bao giờ thấy nó thiết thực thế. Tạo ngay một cái struct tên KhoDo cho gọn:
struct KhoDo {
string ten;
int soLuong;
float gia;
int id;
Thế là giờ, mỗi món đồ chỉ cần một biến thôi, kiểu KhoDo monDo1, monDo2;. Gọn hơn hẳn!
Bắt Tay Vào Đống Code Cũ Với Struct
Mình quất luôn:
- Khai báo mảng KhoDo danhSachDo[100]; để chứa đồ. Thoải mái!
- Viết lại hàm void themDo(KhoDo doMoi). Giờ đẹp trai hẳn, chỉ cần truyền vào một biến doMoi kiểu struct, có đủ tên, số lượng, giá, id trong đó. Khỏi lôi thôi từng biến.
- Hàm kiểm tra số lượng void kiemTraSoLuong(KhoDo doCanKiem) cũng tương tự. Nhìn sướng mắt hẳn.
Trời Ơi Dễ Thật Mà Sao Không Nghĩ Ra Sớm
Cái hay của struct là:
- Gom gọn cả đống biến liên quan vào một chỗ. Đỡ lộn xộn.
- Thêm/xóa/sửa thành phần trong struct cực nhanh. Ví dụ, mình muốn thêm string nhaCungCap; vào struct KhoDo. Chỉ sửa một chỗ trong struct, code chỗ khác nếu cần thêm thông tin này thì tự động có sẵn. Khỏi phải vật lộn sửa từng hàm, từng biến như ngày xưa. Sướng rơn!
- Dễ quản lý dữ liệu hơn nhiều. Mảng struct, con trỏ struct… lúc sau mở rộng tính năng cũng dễ bợ ngay.
Lúc đầu mình cứ nghĩ struct phức tạp, to tát. Hóa ra cho cái dự án nhỏ xíu kiểu này nó lại là vị cứu tinh. Code gọn hẳn lại, dễ đọc hơn, muốn thêm bớt gì cũng nhanh hơn. Đỡ được cả đống thời gian ngồi sửa từng dòng code rối như bòng bong. Bữa đó xong tool, mình húp tô bún riêu còn ngon hơn mọi khi tại thấy nhẹ cả người. Kinh nghiệm nho nhỏ, chia sẻ cho mấy bạn biết đường mà dùng struct ngay từ đầu, đừng dại như mình!