[GÓC DEV GÀ]
[Lưu ý: Đây là bài viết dành cho các bạn mới học mới làm dev, nên các anh chị cũng hoan hỷ, vui vẻ đọc coi như giải trí thôi nhá 😃 ]
Cái tiêu đề hơi Gà? Nhưng mà mình nghĩ đặt vấn đề vầy cái chủ đề sẽ vui hơn bớt nhạt ( mình nghĩ vậy 😗) Thì cũng tranh thủ 5p - 10p trước giờ vào làm viết bài này( tại vì cũng đang có hứng 😃 ).
Trong 1 buổi sáng đẹp trời đi làm sớm, nghĩ về cuộc đời, nhân sinh, tình cảm, công việc,... thì chợt nhớ trong một lần dev và debug mình gặp một vài case như vầy.
Mình có 1 service mình nhận thông tin từ 1 service khác và mình và bạn dev bên service còn lại thống nhất data gửi từ service 1 (bạn đó) gửi qua service 2(mình) phải có kiểu dữ liệu là. { amount: number, key: string, ...... }
Nhưng trong quá trình vận chuyển, shipper làm vỡ hàng thì cục hàng hay shop làm ăn ẩu tả mà. mình nhận được là cục hàng là { amount: undefined || null , key: string, ...... } 😛 thì sai kiểu dữ liệu đúng ra mình phải không nhận và trả cục hàng này về shop
Nhưng mình lại handle nếu như undifine || null ==> mình gắn cho biến amount = 0; đó là thói quen của mình và làm trong vô thức. (Đó mọi sự ngu si đều bắt đầu từ đây) 🙂.
Nhưng mà có 1 vấn đề xảy ra nếu như. vậy lúc nào đoạn code này cũng sẽ pass những thằng undefined, null , và mình đã trả giá khi debug (dữ liệu không đúng sai logic, user bảo nhập 4 tại sao lưu là 0), về cơ bản những thằng này sai kiểu dữ liệu là dữ liệu sai nên không chấp nhận được nên phải báo lỗi hoặc dừng luôn vì dữ liệu gửi qua là sai , nên không làm được những logic phía sau.
Nhưng vì thói quen trong mình mặc định nó về 0 nên lúc nào cũng đẹp hết,.... Một số bạn sẽ thắc mắt tại sao không có validate hoặc check logic hoặc unit test,.... cho cái đầu vào? ummmm contract giữa 2 services thay đổi liên tục, vì vậy phải đổi unit test và validate (diễn giải cho dài chứ thật ra mình ẩu, lười viết/cập nhật unit test 🙂).
Túm cái váy lại thì đây là vấn đề nhỏ xíu xìu xiu. Giải quyết vấn đề trên thì :
- Cần chịu khó làm Unit test, function test và làm cho nó kĩ hơn, tốt hơn, là ổn, bớt hờ hững nó một xíu .
- Trong những function chắc chắn kiểu dữ liệu đầu vào thì không cần handle như mình để có lỗi thì còn phát hiện hoặc unit test phát hiện. Chợt nhận ra lúc đó mình quá ngu quá ẩu:
Nhưng mình cũng muốn note/ đặt vấn đây để nhở có mấy bạn mới học mới làm cũng gặp, thật ra cũng tự nhận mình từng có cái ngu cái kém của mình trong công việc.
Thì mình rút ra một cái bài học là nếu cái base, model, function, class,... mình đang viết mà biết dữ liệu gửi về luôn chắc chắn phải đúng kiểu dữ liệu đã thống nhất thì cứ code bình thường không cần check cứ để cho nó lỗi.Còn bắt lỗi thì sẽ có unit test hoặc những phần handler error khác.
Thói quen cưng chiều params đã hại mình, thói quen nên mình đã tốn thời gian để sửa tíng này, nhận định đúng case cần check và gắn lại giá trị cho nó, và tất nhiên không bỏ qua việc unit test dù funtion đó có đơn giản như thế nào đi nữa (Từ cái đợt mình lỗi tới hiện tại vẫn đang làm như vầy cũng hạn chế cơ số bug 😅)
Đối với mọi người có thể đây và vấn đề đơn giản có nhiêu đó mà cũng không biết ? hì nhưng đối với mình dù nó đơn giản nhưng cũng là 1 cái kinh nghiệm nho nhỏ mình cần lưu tâm để lần sau làm đúng hơn, Có thể mọi người có cách khác hoặc base, góc nhìn khác hơn hiệu quả hơn về những case như này, mình cũng rất mong chờ để mở mang hơn để từ 1 DEV gà trở thành DEV gà vip 😆