12/08/2018, 18:01

Tối ưu lại code Laravel của chính mình

Một ngày đẹp trời bạn nhìn lại những dòng code của bạn 6 tháng hay một năm trước, chắc hẳn nhiều người sẽ phải thốt lên rằng (wtf) sao ngày trước mình có thể những dòng code lởm đến vậy. Nếu bạn cũng đang trong tình trạng này thì cũng đừng quá lo lắng, 6 tháng hay 1 năm nữa bạn nhìn lại những gì ...

Một ngày đẹp trời bạn nhìn lại những dòng code của bạn 6 tháng hay một năm trước, chắc hẳn nhiều người sẽ phải thốt lên rằng (wtf) sao ngày trước mình có thể những dòng code lởm đến vậy. Nếu bạn cũng đang trong tình trạng này thì cũng đừng quá lo lắng, 6 tháng hay 1 năm nữa bạn nhìn lại những gì bạn cho là clean code trước kia thì giờ chúng cũng chỉ là mớ code lộn xộn thôi. Lại nói về phong cách code, mỗi coder chắc chắn đã và đang ảnh hưởng phong cách code của một ai đó. Ví dụ như mình, hồi sinh viên thì ảnh hưởng bởi mấy anh chị dạy video trên Việt Jack, Khoa Phạm. Đi thực tập thì ảnh hưởng bởi mấy anh cùng công ty. Dù bạn có đang code theo phong cách nào đó thì cũng phải tuân thủ các rules về convention . . .

Dần dần làm việc quen thì mình lại hay tìm tòi ra những Best Practices. Mổ xẻ xem cách này đã tối ưu chưa, code có sạch, đẹp hơn không. Ở khuôn khổ bài viết này, mình sẽ lục lại tất cả những đoạn code mà mình cho là lởm nhất mà những người làm quen mới Laravel thường sử dụng và đưa ra những cách giải quyết tối ưu hơn.

Một phần để code đẹp hơn nữa là đừng ngại thay đổi và nhờ người khác review code hộ. Ai góp ý hãy suy nghĩ một cách thật nghiêm túc chứ đừng kiểu làm thế này cũng được mà anh và tiếp tục dùng những dòng code thối đấy cho những dự án sau.

2.1 Mass assignment

Mass Assignment là gì? Mass Assignment xuất phát từ ngôn ngữ Ruby on Rails, là tính năng cho phép lập trình một cách tự động gán các tham số của một HTTP request vào các biến hoặc đối tượng trong lập trình. Ví dụ: chúng ta có một form đăng ký người dùng như sau, các tên trường nhập liệu trùng với tên cột trong bảng users trong CSDL. 6 tháng trước mình lưu vào DB theo kiểu này

$user = new User;
$user->name = $request->name;
$user->password = $request->password;
$user->role = $request->role;
$user->save();

Nhưng nhiều hệ thống còn lấy cả năm sinh, giới tính . . . dài thật dài. Vây là đoạn code của chúng ta cũng dài thật dài. Thực ra có chỉ cần viết như này thôi.

$user = User::creare($request->all());

Cẩn thận hơn nữa thì có thể dùng $request->only('name', 'password', 'role'). Code vừa ngắn vừa dễ hiểu đúng không các bạn. Nhớ là để dùng Mass Assignment chúng ta phải fillable các thuộc tính này trong Model nữa nhé.

0