Có 6 cách phát triển code lập trình viên PHP có thể học hỏi được từ cách thiết kế và sắp xếp của Rails

Học lập trình PHP hay lập trình Ruby on Rails

Mặc dù PHP và Ruby on Rails đều được dùng cho một mục đích, danh tiếng của của họ cách nhau một trời một vực. Ruby thường được khen là hay thì PHP lại bị tính là thiên đường code lỗi và là ngôn ngữ cho người mới bắt đầu. Đây có thể là sự thật, nhưng ngoài thị trường lại có nhiều công việc cho lập trình viên PHP hơn là Ruby và hầu như tất cả các trang web lớn đều có một phần được code trên PHP.

PHP vẫn sẽ được dùng trong một thời gian dài nữa và cách tốt nhất để sửa các lỗi hện có của PHP là bằng cách học các kỹ thuật code chuẩn xác hơn. Với tư cách là một lập trình viên PHP với kinh nghiệm lập trình một vài web Ruby, tôi đã rút ra được một số kinh nghiệm và kiến thức lập trình PHP (nhất là những người vẫn đang học PHP) có thể học hỏi từ Rails.

Quy ước

Trong Rails bạn sẽ luôn có một cách đúng để làm một điều gì đó. Từ cách đặt tên cho các model đến xác nhận form, các lập trình viên Rails có các cách tốt nhất để làm việc và luôn đi theo lối đó. Họ gọi các cách này là “Cách của Rails”. Bạn không nhất định phải là theo “Cách của Rails” này, nhưng làm theo sẽ giúp bạn đọc code dễ hơn và bạn sẽ có một số chức năng mạc định để bắt đầu làm việc. Lập trình viên Rails khi mới bắt đầu làm việc thường có thể hình dung luôn các bước họ phải làm vì các “Cách của Rails” rất logics và dễ hiểu

Bạn sẽ không tim được các quy ước này trong PHP. Kể cả các chức năng đặc biệt của PHP cũng không theo quy ước nào hết. Đã có nhiều người thử làm ra các quy ước cho PHP – ví dụ như PSR. Bạn có thể làm theo các quy ước này, nhưng bạn phải xem xem điều này có phù hợp với code của bạn không. Bạn phải nghĩ xem bạn sẽ định dạng file của bạn ra sao, kết nối với cơ sở dữ liệu thế nào và luôn luôn phải làm như vậy. Tốt nhật, là bạn nên ngồi xuống với các bạn của mình và đưa ra các quyết định này. Bạn sẽ mất vài tiếng để tạo ra quy ước, nhưng điều này sẽ giúp bạn làm việc dễ dàng hơn về sau.

Tính mạch lạc của Web App

Một dự án Rails không chỉ là các tập tin toàn code mà còn rất nhiều phần khác nhau: kết nối đến cơ sở dữ liệu, data migration, thông tin cho sự phát triển, kiểm thử, máy chủ. Tất cả những phần này đều rất quan trọng.

Rất nhiều lập trình viên PHP bắt đầu làm việc  là viết code luôn rồi copy sang server. Ban đầu thì không sao, nhưng về sau khi cần phải nâng cấp trang web lên thì các dòng code mới lại được copy vào, tạo ra vô vàn lỗi và khó khăn. Cách tốt nhất để giải quyết vấn đề này là lấy một trang Rails và kế hoạch từ đầu. Hãy tạo ra một kế hoạch thay vỉ chỉ viết ra những dòng code đơn thuần cho xong việc.

Dùng lại code

Tất cả các lập trình viên đều dùng lại code đã được viết sẵn rồi, ví dụ như là copy code từ file này sang file khác hay tìm trên mạng các dòng code mới, hoạc tạo ra các nhóm code để dùng lại cho các dự án khác. Nhưng Ruby on Rails đã tiên thêm một bước nữa trong lĩnh vực này với gem. Gem là các nhóm code được làm ra để chia sẻ giữa các dự án khác nhau. Thật ra Rails chính là Gem.

Học lập trình Ruby on Rails cơ bản đến nâng cao

Tất nhiên là PHP không có gem, nhưng bạn vẫn có thể làm điều này. Bạn có thể tạo ra nhóm code riêng của mình và dùng lại chúng. Nhưng tại sao phải làm vậy khi bạn có thể dùng lại code đã được kiểm tra kỹ càng bởi người khác? Có rất nhiều gói code cho PHP và Composer chính là thứ giúp bạn có thể gộp các gói code đã được kiểm tra cẩn thận vào trong dự án của bạn. Composer cũng theo dõi là gói code nào liên quan đến gói nào và đảm bảo rằng các gói code tương thích với nhau. Bạn sẽ không phải mất thời gian viết lại cơ sở dữ liệu nữa.

Kiểm thử

Mỗi lần tạo ra một app mới trên Rails thì các thư mục kiểm thử đồng thời được tạo ra. Trong Rails, kiểm thử chỉ là một phần của những việc bạn đang làm. Kể cả bạn không kiểm thử, Rails vẫn có các quy trình kiểm thử riêng. Điều này rất tốt cho sự bền vững lâu dài của phần mềm vì khâu kiểm thử càng chặt thì bug sẽ khó mà trà trộn vào hệ thống được.

PHP cũng có rất nhiều quy trình kiểm thử, nhưng vì các quy trình này không được dựng trong PHP như Rails, nên rất ít người dùng chúng. Bạn có thể dùng PHPUnit – tạo ra các unit test để bảo đảm codes sẽ không hỏng khi bạn thay đổi cái gì đó. Bạn có thể dùng PHPUnit cùng với Selenium để tạo ra các quá trình kiểm thử tự động. Kiểm thừ thường bị bỏ qua vì các lập trình viên quá bận bịu và cố gắng hoàn thành dự án nhanh nhất có thể. Chúng ta phải học hỏi Rails để làm ra các quy trình kiểm thử chặt chẽ và thay đổi cách suy nghĩ, vì quy trình kiểm thử  không chỉ là một thứ chúng ta chỉ nên làm “lúc chúng ta rảnh rỗi”

Namespaces

Namespaces là cách để tránh lẫn các code với nhau. Nhất là khi bạn dùng gói code của người khác, namespace sẽ giúp bạn phân biệt code của bạn và của người khác. Trong Rails thì các namespace được dùng để chia các mục khác nhau trong dự án. Ví dụ, trang web của bạn có thể có phần cho admin, khách hàng và cho người ngoài và Namespace sẽ giúp bạn phân biệt các mảng này. Nếu bạn muốn cho giao diện của Admin khác với của khách hàng thì namespaces sẽ giúp bạn tạo ra các chức năng log in khác nhau

Namespaces trong PHP thì lại là một chức năng khá mới được giới thiệu trong PHP 5.3 và bản mới nhất hiện giờ là PHP 5.5. Nhưng dù sao thì PHP 5.3 cũng đã ra mắt được 4 năm rồi, nên là các lập trình viên chắc cũng đã làm quen được với chức năng này rồi, nhất là khi các dự án lớn thường hày cần dùng đến code của người ngoài.

Frameworks

Học lập trình PHP

Như tôi đã nói, Rails chính là một framework của Ruby. Đây chính là bài học quan trọng nhất mà các lập trình viên PHP có thể học hỏi từ Ruby: hãy dùng framework. Tất cả các dự án đều nên tham khảo và sử dụng framework. Các lập trình viên PHP giỏi đều đã áp dụng các bài học được nói tại đây

Tôi từng có một người bạn đồng nghiệp, anh ấy đã một mình code toàn bộ dự án và từ chối dùng code của người khác, và điều này đã làm anh ấy tốn rất nhiều thời gian. Thay vì đi theo con đường của anh ấy, tôi khuyên các bạn tin tưởng các lập trình viên khác và dùng code của họ. Có rất nhiều người giỏi và PHP vẫn sẽ được dùng rộng rãi trên thế giới này. Mười năm nữa, khi một lập trình viên hoàn toàn mới thử debug code của bạn thì người đó chắc chắn sẽ cám ơn bạn

Bài viết của Jason Chandler

Tham khảo khóa học Ruby on Rails của TechMaster