Xử lý vấn đề đối với mọi lập trình viên là cơm bữa. Ai cũng có những phương pháp cách thức riêng, riêng bản thân tôi thì thấy 5 bước dưới đây là áp dụng được nhiều, không chỉ sẽ giúp bạn mà nó sẽ nhanh hơn và hiệu quả hơn.
1. Xem lại vấn đề vài lần đến khi bạn có thể giải thích nó cho ai đó hiểu
Đây là bước quan trọng nhất, xem vấn đề xem đi xem lại, đến khi bạn thật sự hiểu nó, vì nều không thì có Chúa mới giúp bạn xử lý được. Và làm sao để biết được bạn hiểu nó? Nếu bạn giải thích nó cho người khác hiểu được.
2. Giải quyết vấn đề từ manual
Nothing can be automated that cannot be done manually!
Bất kì code nào cũng có một nền tảng, và đó chính là manual process. Chỉ có từ manual bạn mới biết chắc là mình muốn automate cái gì, nó sẽ tiết kiệm được cho bạn một khối thời gian thya vì đâm đầu vào code như điên.
Test process của bạn bằng nhiều input và thêm cả một số corner case để validate, chú ý từng bước mà bạn làm, ghi chúng ra để theo dõi sát sao.
3. Nâng cấp giải pháp manual của bạn
Hãy review lại xem liệu có thể cải thiện process không, có cách làm dễ hơn hoặc có bước nào cần thêm/ bớt không. Bước này cần thiết, vì dù sao đi nữa, build lại process trong đầu bạn vãn dễ hơn nhiều so với build lại code.
Giờ đây bạn nghĩ là sẽ viết một ít code, nhưng gượm đã. Bạn nên làm một bước nữa, và tôi đảm bảo nó sẽ giúp bạn viết final code dễ hơn.
4. Viết pseudo code
Pseudocode là phần mô tả chi tiết về chương trình, giúp bạn viết mọi dòng code cần thiết để giải quyết vấn đề.
Các senior dev thường sẽ bỏ qua bước này, nhưng tôi có thể đảm bảo với bạn rằng dù bạn có dày dặn kinh nghiệm đến đâu, nếu bạn viết một vài pseudo code, process viết final code sẽ dễ dàng hơn rất nhiều, bởi bạn chỉ cần dịch một vài dòng pseudo code thành code chính mà thôi.
Ví dụ, bạn muốn viết function return về giá trị số mũ.
// Initialize a variable with a 'n' value // Multiply variable by it self // Return the result of that multiplication
Giờ đây bạn đã hiểu chính xác code làm gì, chúng ta chỉ còn một bước nữa.
5. Thay pseudo-code bằng code thực
Đây là phần khá thú vị, sau khi đã hiểu rõ chương trình làm gì, bạn chỉ cần viết một ít code và test nó. Nhớ rằng bạn luôn có thể cải thiện code trong lúc làm.
function square(n) { // Initialize a variable with a 'n' value const initialValue = n // Multiply variable by it self const squaredValue = initialValue * initialValue // Return the result of that multiplication return squaredValue }
Tối ưu hoá code:
function square(n) { return n * n }
Nhìn nó có vẻ là một process rõ ràng, nhưng hầu hết mọi người đều bỏ qua nó và viết code ngay, làm bạn tiêu tốn rất nhiều thời gian.
Note: Nếu vấn đề của bạn quá phức tạp, chia ra thành nhiều cái nhỏ nữa, thì có một technique gọi là “Divide and conquer”.
TopDev