Nội dung bài viết
Video học lập trình mỗi ngày
Các vị trí của lập trình viên được bổ nhiệm như thế nào thì theo tuỳ loại môi trường trong công ty. Nhưng ở bài viết này, có một tình huống mà có 4 cách xử lý, thì chúng ta cùng xem xét, mình thuộc level nào? Vì sao có bài viết này, lý do rất đơn giản thôi đó là có một bạn hỏi "Anh ơi! Em thấy có một bài viết nói về level 1 đến 7. Vậy Anh cho em biết làm thế nào để up lv vậy Anh?".
Tôi đoán bạn ấy đang nói đến bài "Async error handling - Chia thành 4 loại (level nào cũng ok)". Có thể ở bài viết này chưa thực sự nói rõ về cách xử lý của mỗi tình huống. Nghĩa là một tình huống A, thì sẽ có bốn cách giải quyết B, C , D và E... Việc xử lý nhanh hay chậm, ngắn hay dài, đơn giản hay phức tạp thì tuỳ vào mỗi lập trình viên. Đó chính là level của mỗi lập trình viên. Hầu hết mỗi người PM đều có điểm chung để đánh giá mỗi thành viên dựa trên tiêu chí đó là nhiều, ngoài ra còn có nhiều cách để nhận biết một lập trình viên có level như thế nào? Và tôi cũng vậy, tôi có cách "Phân biệt được trình độ của một lập trình viên" của quan điểm của tôi. Còn bây giờ, tôi sẽ đưa ra một tình huống này, xem cách giải quyết có thực sự là hay, không hay... Đương nhiên sẽ còn có những giải quyết khác hay hơn, nếu bạn có ý kiến xin đóng góp vào comments. Hoan nghênh các bạn
Các cấp độ của lập trình viên
Tình huống push Notifications mà đã mất đi một lượng khách hàng dùng và tôi đã trình bày trong bài viết "Hệ thống push notifications sai lầm nặng nề" đơn giản như sau, và làm thế nào bạn tối ưu hoá code một cách thông minh nhất. Không cần phải giải thích về tình huống vì nhìn vào cũng biết là nó rất phổ biến. Nhân đây cũng ghi lại cho bản thân mình luôn. Có gì copy cho nó nhanh :D.
#Cách 1:
let notificationPtrn; switch (notification.type) { case 'citation': notificationPtrn = 'Bạn nhân được một tin nhắn từ {{actingUser}}.'; break; case 'follow': notificationPtrn = '{{actingUser}} bắt đầu theo dõi bạn'; break; case 'mention': notificationPtrn = '{{actingUser}} nhắc bạn trong một bài viết'; break; default: // Làm gì đây ở đây }
#Cách 2: Sử dụng return
function getnotificationPtrn(n) { switch (n.type) { case 'citation': return 'Bạn nhân được một tin nhắn từ {{actingUser}}.'; case 'follow': return '{{actingUser}} bắt đầu theo dõi bạn'; case 'mention': return '{{actingUser}} nhắc bạn trong một bài viết'; default: throw new Error('Làm gì đây ở đây'); } } let notificationPtrn = getNotificationPtrn(notification);
#Cách 3:
const defaultTxt = 'Làm gì đây ở đây'; function getNotificationPtrn(n) { const textOptions = { citation: 'Bạn nhân được một tin nhắn từ {{actingUser}}.', follow: '{{actingUser}} bắt đầu theo dõi bạn', mention: '{{actingUser}} nhắc bạn trong một bài viết', } return textOptions[n.type] || defaultTxt; }
#Cách 4: Khuyên sử dụng, tôi đang xài nó :D
const defaultTxt = 'Làm gì đây ở đây'; const textOptions = { citation: 'Bạn nhân được một tin nhắn từ {{actingUser}}.', follow: '{{actingUser}} bắt đầu theo dõi bạn', mention: '{{actingUser}} nhắc bạn trong một bài viết', } function getNotificationPtrn(textOptions, n) { return textOptions[n.type] || defaultTxt; } const notificationPtrn = getNotificationPtrn(textOptions, notification);
Bạn chú ý cách 4 đấy. Đó là bây giờ chúng ta chuyển textOptions
thành một biến, không cứng nhắc như các cách trên. Chính vì thế, chúng ta có thể thêm bớt tuỳ theo, và quan trọng nhất là load leen từ server một cách chuyên nghiệp hơn.
Lương của lập trình viên
Đừng hiểu nhầm là cách viết code tốt sẽ cho bạn được nhiều lương hơn. Không hề đâu, Tư duy lập trình viên của bạn ở đâu, thì ngay trước mắt công ty chưa nhận ra đúng giá trị của bạn. Nhưng từng bước bạn đã đầu tư cho mình một kiến thức chuẩn, mà đi đâu cũng không sợ. Và mỗi lần ra đi bạn lại có có hội làm mới mình, và mức lương cũng mới luôn. Các phát triển kỹ năng Code, không thông qua việc đọc tài liệu, mà thông qua bạn có áp dụng được kiến thức mà mình đã đọc được vào ứng dụng của mình hay không?
Tuỳ bạn... Nếu cảm thấy thiếu gì đó nữa, vui lòng đọc thêm ở series - Mẹo về javascript.