Coding conventions và coding standards trong php
Chắc hẳn anh em lập trình viên khi làm dự án đều đã nghe qua về 2 thuật coding standards và coding conventions.2 thuật ngữ có ý này thường được sử dụng với nội dung, ý nghĩa giống nhau. Trong bài blog này chúng ta sẽ cùng nhau phân biệt hai khái niệm này và tìm hiểu chúng trong ngôn nhữ php.
1. Coding conventions và Coding standards là gì?
Coding conventions (quy ước viết mã) tạm hiểu là một tập chỉ dẫn cho một ngôn ngữ lập trình nhằm làm cho code dễ đọc hiểu và dễ bảo trì hơn.
Các chỉ dẫn, quy ước thường xoay quanh các nội dung như:
tổ chức file, thụt lề (intentation), comment, khai báo (decraletion), câu lệnh (statement), khoảng trắng, quy ước đặt tên, thực hành lập trình, nguyên lý lập trình hay các kiến trúc tốt nhất.
Các quy ước này có thể được chính thức hoá trong một văn bản cho cả nhóm hay cả công ty tuân theo hay chỉ là thói quen lập trình của một cá nhân nào đó.
Khi coding convention được thiết kế và phê duyệt thông qua bởi một tổ chức để áp dụng cho một cộng đồng thì chúng trở thành coding standards (tiêu chuẩn viết mã)
Tóm lại coding standards thường đi theo ngôn ngữ lập trình hay 1 loại scrips (như php, javascripts, css...) hay là đi theo của framework như laravel, Cake php...). Còn coding conventions thì thường áp dụng trong phạm vị dự án. Chúng thường được xây dựng dựa trên coding standards và có điều chỉnh để phù hợp với tính chất dự án.
2. Vì sao coding conventions lại quan trọng
Như đã nói ở trên, việc tuân thủ coding conventions của dự án giúp dễ đọc hiểu và bảo trì hơn tức giảm chi phí bảo trì phần mềm.
Trong phần giới thiệu coding convention của Java, SUN Microsystem đã cung cấp một vài dẫn chứng:
Code conventions are important to programmers for a number of reasons:
- 40%–80% of the lifetime cost of a piece of software goes to maintenance.
- Hardly any software is maintained for its whole life by the original author.
- Code conventions improve the readability of the software, allowing engineers to understand new code more quickly and thoroughly.
- If you ship your source code as a product, you need to make sure it is as well packaged and clean as any other product you create.
3. Coding standards của php
PHP có 1 tiêu chuẩn viết mã là PSR (PHP Standards Recommendations) tức tiêu chuẩn khi viết mã php.
PSR được xây dựng bởi cộng đồng lập trình viên php và được công bố bởi PHP Framework Interop Group (PHP-FIG).
Hầu hết các framework đều tuân theo PSR để công việc phát triển các package hay kết hợp các framework, package được dễ dàng hơn.
Hiện nay có 20 tập tiêu chuẩn đang được công bố trên trang chủ của php-fig:
Trong đó có 13 tiêu chuẩn đã được chấp nhận, 3 tiêu chuẩn đang được soạn thảo, 3 tiêu chuẩn bị bãi bỏ và 2 tiêu chuẩn đã lỗi thời.
Dưới đâylà 13 tiêu chuẩn đang được chấp nhận (Accepted):
- PSR-1 Basic Coding Standard: bao gồm những chỉ dẫn nên được coi tiêu chuẩn cơ bản để đảm bảo mức độ tương tác cao giữa source code php được chia sẻ.
- PSR-3 Logger interface: mô tả một interface chung cho việc ghi log các thư viện
- PSR-4 Autoloading Standard: mô tả chi tiết về việc autoloading các class từ đường dẫn file. Nó có thể hoạt động kết hợp với các chuẩn autoloading khác (kể cả PSR-0)
- PSR-6 Caching Interface: mục tiêu là cho phép tạo các thư viện nhận biết cache và tích hợp vào các framework hay hệ thống mà không cần phải tuỳ chỉnh
- PSR-7 HTTP message interfaces: mô tả 1 interface chung cho HTTP messages
- PSR-11 Container interface: mô tả 1 interface chung cho DIC (dependency injection containers) nhằm chuẩn hoá cách mà các thư viện và framework sử dụng container để lấy các object và parameter
- PSR-12 Extended Coding Style Guide: tài liệu này mở rộng và thay thế cho PSR-2 và yêu cầu tuân thủ theo PRSS-1
- PSR-13 Hypermedia Links: Cung cấp cho developer một cách chung và đơn giản để biểu diễn một liên kết hypermedia
- PSR-14 Event Dispatcher: điều phối sự kiện là 1 cơ chế chung và đã được kiểm thử cho phép developer đưa logic vào ứng dụng một cách dễ dàng và nhất quán. Mục đích là tạo ra một giao diện chung để điều phối và xử lý sự kiện để các developer tạo ra được những thư viện có thể tương tác được với nhiều framework hay thư viện khách một cách dễ dàng.
- PSR-15 HTTP Handlers: mô tả 1 interface chung cho việc xử lý HTTP request và thành phần middleware bằng sử dụng HTTP message (như mô tả trong PRS-7)
- PSR-16 Simple Cache: mô tả 1 interface đơn giản và dễ mở rộng cho bộ nhớ cache và trình điều khiển bộ nhớ cache
- PSR-17 HTTP Factories: mô tả 1 chuẩn chung cho các factory - được dùng để tạo các đối tượng HTTP và tuân thủ theo PSR-7
- PSR-18 HTTP Client: mô tả 1 interface chung cho việc gửi HTTP request và nhận HTTP response của client
Các bạn có thể tìm hiểu thêm về 3 tiêu chuẩn đang được soạn thảo là PRS-5 PHPDoc Standard, PRS-19 PHPDoc Tags, PRS-20 Clock tại web site của PHP-FIG.
Kết luận:
Coding convetions hay các PHP PRS giúp việc hợp tác giữa các developer trôi chảy hơn cũng như giảm giá thành bảo trì phần mềm hơn rất nhiều. Với các bạn bắt đầu với con đường lập trình php thì nên bắt đầu từ PRS-4 Chuẩn về autoloading và PRS-1 Chuẩn cơ bản về lập trình. Khi đã hiểu biết hơn về ngôn ngữ này, các bạn có thể tìm hiểu thêm về các tiêu chuẩn còn lại.
Xin cảm ơn!