OOP trong javascript

Đối với một lập trình viên chưa có nhiều kinh nghiệm như mình, viết những dòng code javascript sao cho chạy được là cảm thấy hạnh phúc lắm rồi. Tuy nhiên, qua một vài project cá nhân, mình nhận thấy rằng việc quản lý code javascript là một bài toán đau đầu. Đó mới chỉ là việc viết code và xem lại code của chính mình, chắc chắn rằng với một team, việc maintain code javascript là một điều kinh khủng đối với lập trình viên. Hơn nữa, việc tái sử dụng lại code javascript thực sự là khó khăn, đa phần các hàm được viết ra sẽ được copy rồi sửa đi sửa lại để dùng ở chỗ khác trong project. Cùng với đó là xu thế đẩy dần xử lý về phía client khiến cho tầm quan trọng của javascript trong dự án ngày càng lớn. Theo một thống kê không chính thức thì đa phần lập trình viên đang có xu thế là code javascript nhiều hơn ngôn ngữ bên back-end. Điều đó cũng chẳng có gì lạ vì javascript ngày càng trở nên phổ biến. Thêm vào đó là sự phát triển mạnh mẽ của các framework javascript hỗ trợ việc phát triển front-end trở nên dễ dàng và ngày càng mạnh mẽ. Vấn đề đặt ra ở đây là: Code javascript ngày càng nhiều trong 1 dự án, làm thế nào để quản lý được nó, tối ưu được nó ?. Và câu trả lời mà mình rút ra đó là: áp dụng các design pattern và OOP trong javascript. Chúng ta đã quá quen thuộc với OOP trong PHP, Java, Ruby.v.v.v. cùng với đó là cụm từ MVC thần thánh. Nó giúp chúng ta code nhanh hơn, chặt chẽ, logic hơn, dễ maintain, dễ mở rộng về sau. Vậy OOP và design pattern trong javascript tại sao không ? Có thể nói chúng ta đã quá quen thuộc với lập trình hướng thủ tục trong javascript rồi. Đơn giản vì: nhanh, dễ code và hơn nữa, các project đa phần code javascript là không sử dụng lại được vì lập trình viên thấy rằng việc phân tích, thiết kế phía client là tốn kém và không cần thiết. Muốn sử dụng lại ư ? copy and modify code. Rõ ràng với đa phần lập trình viên, cách này đang giải quyết được vấn đề của họ. Tuy nhiên, không thể phủ nhận điều đó là khá tồi về mặt lập trình. Thêm vào đó, việc tiếp cận và áp dụng các framework như AngularJs, KnockoutJs.v.v.v sẽ phát huy được hết sức mạnh của javascript, nếu có thể phân tích thiết kế hướng đối tượng cho nghiệp vụ phía front-end thì thực sự là một điều tuyệt vời. Vào một ngày đẹp trời, bạn có hứng thú với NodeJs thì lúc này bạn sẽ rõ hơn về OOP trong javascript. Qua những điều mình phân tích ở trên, mình muốn đưa ra quan điểm của bản thân rằng OOP trong javascript là một điều rất thú vị và quan trọng. Mình tin rằng việc trải nghiệm OOP trong javascript với một dự án sẽ khiến bạn cảm thấy thật tuyệt vời. Mình xin chia sẻ một số link bài viết khá hay, đầy đủ, chi tiết về lập trình hướng đối tượng trong javascript: 1. https://viblo.asia/hienvh/posts/ZnbRlr5AG2Xo 2. https://viblo.asia/phuongth/posts/DXOGRZdBGdZ 3. http://javascriptissexy.com/oop-in-javascript-what-you-need-to-know/ Tuy nhiên, trước hết các bạn nên lắm rõ các khái niệm cơ bản trong javascript như: javascript object, prototype, closure. Nó sẽ giúp bạn tiếp cận tốt hơn với OOP trong javascript.