Viết code chuẩn PSR-2 với SublimeLinter-phpcs. Viết code chuẩn là gi ?, chuẩn PSR-2 là gì ?, tại sao phải viết code chuẩn ?. Chắc chắn khi đọc tiêu đề bài viết này bạn sẽ có những câu hỏi tương tự như vậy phải không nào!. Và bài viết này mình sẽ giải thích cho các bạn những câu hỏi này và sẽ giúp cho các bạn làm thế nào để viết code chuẩn.
Viết code chuẩn rất quan trọng. Nếu chúng ta tập viết code chuẩn khi từ mới bắt đầu học lập trình nó sẽ rất có ích khi bạn làm bắt đầu làm việc với nghề lập trình. Sẽ không bỡ ngỡ bởi các quy định viết code chuẩn của một công nào đó khi ta làm việc.
Viết code chuẩn là gì?
Viết code chuẩn là chúng ta tuân thủ một quy định trong viết code của một tập thể hay một công ty dựa theo quy chuẩn trong lập trình. Tùy thuộc vào ngôn ngữ sẽ có chuẩn viết code khác nhau. Trong bài viết này mình sẽ nói về chuẩn code PSR-2 trong PHP.
Chuẩn PSR-2 là gì ?
PSR có nghĩa là PHP Standards Recommendations. Có rất nhiều PSR từ PSR-0 đến PSR-7. Trong đó PSR-1 và PSR-2 chúng ta sẽ tiếp xúc rất nhiều. PSR-1 sẽ giúp chúng ta biết thề nào và làm thế nào để đặt tên biến, tên hàm sau cho dể hiểu, dể đọc mang tính thống nhất toàn bộ.
Khác với PSR-1, PSR-2 sẽ mang tính trình bài là chính. Nó có nhiệm vụ rất quan trong trong việc trình bài các dòng code của bạn. từ các dòng tab hay xuống hàng giữa các dòng, các hàm một cách tỉ mỉ.
Tại sao phải viết code chuẩn ?
Như tôi đã nói ở trên việc viết code chuẩn rất quan trọng. đối với những ai thường không tuân theo quy định viết code chuẩn (viết tùy ý) đó chỉ có thể làm việc cá nhân.
Các bạn nên nhớ rằng khi đi làm chúng ta điều làm teamwork không thể mõi người một cách viết. Mõi người một cách viết là đúng khi nói về tư duy logic trong lập trình có thể cùng một kết quả nhưng lại có nhiều cách viết khác nhau.
<?php namespace Vendor\Package; use FooInterface; use BarClass as Bar; use OtherVendor\OtherPackage\BazClass; class Foo extends Bar implements FooInterface { public function sampleMethod($a, $b = null) { if ($a === $b) { bar(); } elseif ($a > $b) { $foo->bar($arg1); } else { BazClass::bar($arg2, $arg3); } } final public static function bar() { // method body } }
Nhưng tôi muốn nói đó là sự thống nhất về cách trình bài. Bạn viết như thế nào khi người khác xem lại hoặc sữa code của bạn vẫn hiểu được cái function của bạn đang viết cái gì phải không nào !. Rất quan trong nhé các bạn. Nếu bạn nào chưa biết cách trình bày code thì sau đây tôi sẽ hướng dẫn các bạn. Thật khá là mất thời gian khi phải lên mạng tìm cách viết sao cho chuẩn hay viết theo chuẩn PSR-2 là viết như thế nào phải không nào !. Sau đây mình sẽ hướng dẫn cho các bạn một tiện ích trên Sublime text đó là SublimeLinter-phpcs . Sublime text thì không còn xa lạ nữa phải không nào. Nếu bạn nào chưa có Sublime text thì các bạndownload tại đây nhé.
Hướng dẫn cài đặt.
Sau khi download và cài đặt Sublime text thành công các bạn tiếp tục cài đặt thêm Package Control vào nhé. Các vào đây. Sau đó copy đoạn script cài đặt bên dưới. Tùy thuộc vào phiên bản Sublime text của bạn ở đây tôi đang dùng Sublime text 3 nên tôi sẽ chọn và copy bên tab SUBLIME TEXT 3.
Cài đặt package control
Các bạn tiếp tục mở Sublime text lên các bạn ấn tổ hợp phím Ctrl + ~ để hiễn thị cửa sổ console lên và dán đoạn mã vừa copy vào sau đó ấn enter. Đợi quá trình cài đặt thành công bạn sẽ được thông báo sau:
Cài đặt SublimeLinter
Sau khi cài đặt Package Control xong chúng sẽ dùng nó để install các package cần thiết. Có rất nhiều package hổ trợ cho Sublime text và chúng ta trong việc lập trình các bạn hãy tự khám phá nhé. Tiếp tục nào, chúng ta sẽ cài một package có tên là SublimeLinter.
Package này rất quan trọng nó sẽ đọc được code bạn vừa viết và sẽ thông báo lổi cho bạn. Trong SublimeLinter sẽ chia ra rất nhiều thành phần con và thành phần con này chính là các ngôn ngữ phổ biến hiện nay hiện nay như javascript, css, php…Vì mõi ngon ngữ có cu pháp và thông báo lổi khác nhau cho nên đó là lý do vì sao nó lại có những thành phần con này.
Đầu tiên chúng ta cài đặt SublimeLinter. Các bạn ấn tổ hợp phím Ctrl + Shift + p rồi tìm đến chức năng Package Controll: Install Package các bạn enter đợi khi nào lists danh sách các package hiện ra các bạn nhập vào tìm kiếm tên package là SublimeLinter các bạn chọn như hình sau:
Quá trình cài đặt SublimeLinter đẵ xong. Ở bài viết này như tiêu đề chúng ta sẽ học cách viết code chuẩn PSR-2 cho nên chúng ta sẽ cài thêm 2 package nữa là SublimeLinter-php và SublimeLinter-phpcs.
Trong đó SublimeLinter-phpsẽ đóng vai trò như PSR-1 sẽ giúp bạn trong việc quản lý lổi syntax, cứu pháp,.. Còn SublimeLinter-phpcs sẽ giúp bạn trong cách trình bày sau cho dể nhìn, dể dọc. Cài đặt các bạn hãy làm như cài đặt SublimeLinter nhé.
Sau khi cài đặt thành công các bạn hãy tắt Sublime Text và khởi động lại. Các bạn hãy cùng mình thử một ví dụ xem package có hoạt động không nhé.
<?php $code = 'bạn đang bị lổi syntax thiếu dấu ";"' ?>
Nếu các bạn đang cũng có kết quả tương tự các bạn có biết package nào đang hoat động không nào ? . Đó là package SublimeLinter-php đang hoạt động.
Vậy còn SublimeLinter-phpcs nó vẫn chưa thể hoạt động được đều này yêu cầu trên máy tính của bạn phải cài đặt môi trường PHP.
Các bạn có thể tận dụng PHP có trong WAMP hay XAMPP cũng được nhé. Ngoài ra các bạn cần phải cài đặt thêm thư viện PHP_CodeSniffer cho PHP thông qua Pear. Đến đây các bạn đừng rối nhé ^^
Với Pear nó sẽ quản lý các thư viện PHP để cài được PHP_CodeSniffer trước tiên bạn cần phải cài đặt Pear trước nhé. Mình có viết một bài hướng dẫn ở đây.
Sau khi cài đặt Pear thành công tiếp theo các bạn sẽ cài đặt PHP_CodeSniffer bằng cách chạy lệnh command sau bằng CMD hay Gitbash:
pear install PHP_CodeSniffer
Tiếp theo chúng ta sẽ Setting một chúc cho SublimeLinter. Cac bạn hãy làm như hình bên dưới nhé:
Các bạn chọn menu Preferences -> Package Settings -> SublimeLinter -> Settings – User. Các bạn copy đoạn code sau và dán vào sau đó lưu lại khởi động lại. Các bạn hãy làm một vi dụ cùng tôi bên dưới nhé.
{ "user": { "debug": false, "delay": 0.25, "error_color": "D02000", "gutter_theme": "Packages/SublimeLinter/gutter-themes/Default/Default.gutter-theme", "gutter_theme_excludes": [], "lint_mode": "background", "linters": { "php": { "@disable": false, "args": [], "excludes": [] }, "phpcs": { "@disable": false, "args": [], "excludes": [], "standard": "PSR2" }, "phpmd": { "@disable": false, "args": [], "excludes": [], "rulesets": "cleancode,codesize,controversial,design,naming,unusedcode" } }, "mark_style": "outline", "no_column_highlights_line": false, "passive_warnings": false, "paths": { "linux": [], "osx": [], "windows": [] }, "python_paths": { "linux": [], "osx": [], "windows": [] }, "rc_search_limit": 3, "shell_timeout": 10, "show_errors_on_save": false, "show_marks_in_minimap": true, "syntax_map": { "html (django)": "html", "html (rails)": "html", "html 5": "html", "javascript (babel)": "javascript", "magicpython": "python", "php": "html", "python django": "python", "pythonimproved": "python" }, "warning_color": "DDB700", "wrap_find": true } }
Nếu các bạn cũng có kết quả như tôi thì các bạn đã thành công rồi đấy. Bài viết của tôi đến đây xin tạm dừng. Mình rất mong nhận được những phản hồi từ các bạn. Chúc các bạn thành công!.