Nên hay không nên dùng Framework

Nên hay không nên dùng Framework

January 1, 2022 0 By Nam Vu

Hôm trước lướt tiktok của một bạn lập trình viên nói về vấn đề dùng framework, mình thấy bạn ý quá tôn sùng và thần thánh hóa framework một cách mù quáng.

Ừ thì cũng đâu cũng có lý do của nó, mình xin phép viết một bài để thử phân tích xem có nên hay không nên dùng framework để anh em cùng thảo luận nhé!

Framework là gì?

Thực sự đối với định nghĩa này thì mỗi lĩnh vực mỗi mảng nhỏ, mỗi ngôn ngữ đều có một sự định nghĩ cụ thể cho khái niệm này. Nên mình tóm lược một số định nghĩa cơ bản như sau.

– Framework là bộ “khung sườn” được cấu tạo thành các đoạn code có sẵn, hay nói cách khác nó là tập hợp các thư viện lập trình hoặc các API nhằm hỗ trợ một cách tối ưu. Giúp cho các lập trình ứng dụng, lập trình web trở nên nhanh chóng và dễ dàng hơn.

– Framework có thể được hiểu là một cấu trúc thực tế, hoặc khái niệm nhằm hỗ trợ hoặc hướng dẫn để mở rộng một cấu trúc thành một cái gì đó hữu ích hơn.

– Đối với hệ thống máy tính, framework là một cấu trúc phân lớp, cho biết loại chương trình nào có thể hoặc nên được xây dựng, và chúng có liên quan như thế nào với nhau.

– Framework còn là các chương trình, chỉ định giao diện lập trình, hoặc cung cấp các công cụ lập trình để sử dụng với framework.

– Một framework có thể là một tập hợp các chức năng trong một hệ thống, và cách chúng liên hệ với nhau, các lớp của một hệ điều hành, một ứng dụng con, hay làm thế nào mà một mạng lưới có thể giao tiếp theo một chuẩn hóa nhất định. Và từ đó framework sẽ trở nên hoàn thiện hơn và có ích hơn.

Về cơ bản của các định nghĩa trên thì có thể coi framework là thứ đồ ăn sẵn, bạn có thể dựa vào nó để chế biến một món ăn nào đó của riêng bạn. Giúp bạn tiết kiệm thời gian, chi phí, tiền bạc để phát triển một ứng dụng nào đó.

Lợi ích của framework

– Đơn giản hóa quá trình thiết kế và xây dựng, giúp lập trình viên tiết kiệm được thời gian, năng lượng khi phát triển các ứng dụng.

– Giảm hoặc loại bỏ các nhiệm vụ lặp đi lặp lại, giảm thiểu tối đa thời gian và công sức phát triển ứng dụng.

– Tăng tính linh hoạt của ứng dụng thông qua sự trừu tượng, nó cho phép ứng dụng kế thừa một cấu trúc được chuẩn hóa, đảm bảo trong vận hành và bảo trì sau này được thuận tiện và dễ dàng hơn.

– Tái sử dụng lại mã code.

– Hỗ trợ và đơn giản hóa cách sử dụng các công nghệ mới và phức tạp.

– Nó liên kết với nhau một loạt các đối tượng / thành phần riêng biệt thành một hệ thống hữu ích hơn.

– Mọi người đều có thể dễ dàng kiểm tra và gỡ lỗi mã, ngay cả mã mà họ không tham gia vào dự án.

– Quy trình khép kín từ khâu thiết kế giao diện, code và kiểm thử phần mềm.

Nghe có vẻ nhiều lợi ích quá nhỉ nhưng không phải nó không có nhược điểm nhé. Có lẽ đây là sự tranh cãi mà khiến mình nói rằng tiktoker kia có vẻ thần thánh hóa framework của bạn ý.

Nhược điểm của framework

– Muốn hiểu và sử dụng Framework một cách hiệu quả và thông minh bạn cần phải có kiến thức bài bản về nó. Vì vậy, để khai thác tối đa và hiệu quả nó bạn cần phải đầu tư thời gian và công sức khá nhiều.

– Framework sẽ có kích thước rất lớn, thông thường phần mềm của bạn mặc dù chưa có nội dung gì cả nhưng kích thước của nó chiếm một dung lượng không hề nhỏ.

– Cần tuân thủ các quy định khi sử dụng chúng. Đương nhiên là khi bạn dùng đồ ăn sẵn thì bạn luôn và bắt buộc phải tuân theo quy chuẩn của riêng framework đó rồi.

– Không thích hợp khi sử dụng các ứng dụng, phần mềm nhỏ. Thường framework được build sẵn khiến cho ngay bản thân nó đã khá cồng kềnh mà trong khi ứng dụng nhỏ của bạn đâu có dùng hết tính năng của nó đâu. Tuy nhiên các xu hướng công nghệ build gần đây đang dần dần bóc tách nhỏ những thành phần của framework ra để giúp bạn dùng những thứ bạn cần và không tích hợp những thứ bạn không dùng để khắc phục nhược điểm này.

– Framework có thể có nhiều lỗi phát sinh trong quá trình sử dụng. Không phải tự nhiên mà các anh SA thường lựa chọn những công nghệ có cộng đồng lớn, thường khi sử dụng thực tế sẽ phát sinh nhiều issue mà đội ngũ xây dựng framework chưa lường tới. Khi này sản phẩm của bạn dùng sẽ là người gánh chịu trực tiếp. Nếu có cộng đồng lớn sẽ phần nào kiểm chứng được tính an toàn khi sử dụng và có thể có những câu trả lời vá lỗi từ cộng đồng.

– Framework không phải là chìa khóa vạn năng cho mọi bài toán. Nó chỉ là nền tảng để giúp bạn phát triển ứng dụng của bạn mà thôi. Nên đôi khi bài toàn cho ứng dụng của bạn không được hỗ trợ mà bạn lại bước nửa chân vào thế giới framework rồi, vậy là bạn phải đục đẽo chỉnh sửa, tùy biến framework. Rủi ro cho vấn đề custom này cũng không phải là nhỏ.

– Vấn đề  license, cái này khá quan trọng mà không ít bạn bỏ qua. Có thể ban đầu framework là hàng free, bạn dùng thấy ngon, nhưng một ngày đẹp trời nó đánh bản quyền và phát sinh chi phí hoặc muốn phát triển cao hơn thì bơm tiền vào. Thế là chi phí dự án của bạn bị đội lên mà bạn không thể lường trước được. Những công ty lớn toàn tự xây dựng riêng để đi đường dài chứ ít khi sử dụng framework mà họ không chắc chắn và không control được lắm.

Khi nào chúng ta sử dụng Framework?

Đây là một câu hỏi phổ biến khá giống nhau của các nhà phát triển kinh nghiệm hay những người mới bắt đầu và thực sự không có câu trả lời xác đáng.

– Đối với những người mới bắt đầu, một Framework sẽ cung cấp cho bạn sự đơn giản và ổn định cho dự án, vì vậy nó là ý tưởng tốt để sử dụng Frameworks bất cứ khi nào bạn có thể. Nó sẽ giúp giảm bớt hoặc loại bỏ những đoạn mã không đúng và đẩy nhanh quá trình hoàn thiện dự án web một cách khả thi nhất.

– Đối với dự án phát triển lâu dài, nếu dùng framework nào phải thật cân nhắc và hiểu rõ về nó, tránh những sự cố không mong muốn về sau này. Nếu được thì nên tự build dựa trên framework có sẵn hoặc wrap framework lại để biến những thứ của người khác thành của mình để tùy ý chỉnh sửa và xây dựng.

Vấn đề này cũng chỉ là quan điểm cá nhân mà thôi, mình cũng không khuyến khích các bạn tự xây dựng từ đầu vì tốn rất nhiều thời gian mà chưa chắc đã hoàn thiện như một framework đã được phát hành. Đứng trên vai người khổng lồ luôn là lựa chọn sáng suốt đó, nhưng phải chọn mặt gửi vàng nhé. Có thể bạn đang sa lầy mà không hay biết nếu không thực sự hiểu thật kỹ về framework bạn đang sử dụng.

Người chịu tác động trực tiếp chính là sản phẩm của bạn chứ framework chỉ có mục đích support chứ nó không chịu trách nhiệm đâu. Trách ai bây giờ, trách mình thôi😄

Qua bài viết này mình xin phép được đưa ra ý kiến bản thân giúp bạn có thể hiểu rõ hơn 2 mặt của một vấn đề nhé. Có gì cần góp ý xin để lại dưới phần bình luận.

#ntechdevelopers