Thứ Hai, 20 tháng 1, 2014

Tài liệu PHP Coding Standard

PHP CODING STANDARD v.1.0
4.5 Hàm và phương thức 16
4.6 Câu lệnh điều khiển 17
4.7 If / Else / Elseif 17
1.1 Switch 18
1.2 Continue,break and ?: 18
4.8 Cách trình bày cho các khối 19
4.9 Comment 20
1.3 Documentation Format 20
1.4 Files 20
1.5 Lớp 20
1.6 Hàm 21
1.7 Biến 21
1.8 Comment Keywords 21
5 PHỤ LỤC 23
5.1 Các tài liệu tham khảo 23
5/23
PHP CODING STANDARD v.1.0
1 GIỚI THIỆU CHUNG
1.1 Mục đích tài liệu
Một coding standard tốt hết sức quan trọng cho bất kỳ một dự án phần mềm nào, nhất là đối
với các dự án nhiều người. Coding standard góp một phần lớn tron việc đảm bảo chất lượng
source code, ít lỗi và dễ bảo trì.
1.2 Phạm vi tài liệu
Tài liệu này cung cấp coding standards và guidelines cho các lập trình viên trong tất cả các dự
án viết trên ngôn ngữ PHP của trung tâm phần mềm QSoftVietnam.
6/23
PHP CODING STANDARD v.1.0
2 PHP FILE FORMATTING
2.1 Ký hiệu kết thúc file
Đối với những file chỉ gồm code php không được dùng thẻ đóng (“?>”). Điều kiện trên không
yêu cầu bởi PHP engine nhưng việc không dùng thẻ đóng prevents trailing whitespace from
being accidentally injected into the output.tránh được việc bị tràn new line khi output ra HTML
page.
2.2 Quy định lề đầu dòng
Sử dụng 1 tab cho mỗi level.
Trong các chuẩn coding khác thường quy ước dùng 4 khoảng trắng thay cho dung tab. Lý do
của cách dung này là do trong các editor khác nhau độ dài của tab khác nhau dẫn đến có thể
không thống nhất trong việc hiển thị code. Tuy nhiên do tính thống nhất trong môi trường lập
trình tại trung tâm nên việc sử dụng Tab không bị các nhược điểm trên. Ngược lại có một số
ưu điểm:
• Tăng tốc độ di chuyển của con trỏ thay vì phải di chuyển 4 space thì chỉ phải di chuyển
1 tab
• Tăng tốc độ thực hiện dòng code
2.3 Giới hạn code trên 1 dòng
Việc giới hạn số ký tự trên 1 dòng code nhằm giúp cho lập trình viên nhìn code được dễ dàng.
Một dòng code nên chỉ có 80 ký tự và tối đa là 120 ký tự.
7/23
PHP CODING STANDARD v.1.0
3 NAMING CONVENTIONS
3.1 Lớp
Chữ cái đầu tiên viết hoa, các từ được kết hợp bởi chữ cái la tinh viết liền nhau. Được phân
biệt với nhau bàng chữ viết hoa.
Nếu tên lớp có từ viết tắt, thì viết hoa chữ đầu tiên của từ đó mà không được viết hoa toàn bộ
từ.
Không được dùng dấu gạch dưới (‘_’).
Ví dụ:
class GetHtmlStatistic // NOT GetHTMLStatistic
class GetContent //Not Get_Content
Nếu hệ thống được chia thành nhiều namespace thì tên lớp phải bao gồm cả namespace, phân
cách bởi dấu gạch dưới (‘_’).
Ví dụ
class xXcms_db_DbManager // in xcms/db/db_manager.php
class xXcms_file_XmlManager // in xcms/file/xml_manager.php
3.2 Interface
Quy tắc đặt tên tương tự class nhưng kết thúc bởi bắt đầu bởi ký tự ‘_interfaceI’;
Ví dụ:
IxXcms_db_Db_interface
IxXcms_file_Xml_interface
3.3 Tên thư mục, file
Tên thư mục và file viết chữ cái thường, các từ cách nhau bởi dấu gạch dưới (‘_’).
Ví dụ:
xcms/db/db_manager.php
xcms/file/xml_manager.php
8/23
PHP CODING STANDARD v.1.0
3.4 Hàm và phương thức
Tên hàm và phương thức bắt đầu bằng động từ vì nó đại diện cho một hay một chuỗi hành
động
Phương thức (method)
Quy tắc đặt tên phương thức của lớp tương tự quy tắc đặt tên lớp.
Ví dụ:
class NameOneTwo
{
function DoIt() {};
function HandleError() {};
}
Tên các phương thức
protect

private
có tiếp đầu ngữ là dấu gạch dưới (‘_’).
Ví dụ:
class xcms_Foo
{
protected function _fooBar()
{
//
}
}
Hàm (function)
Tên hàm viết chữ thường, các từ cách nhau bởi dấu gạch dưới (‘_’).
9/23
Tên hàm và phương thức bắt buộc phải có tiền tố là 1 động từ. Vì nó đại diện cho 1 hành
động, nên đọc cái là biết là hàm hay phương thức ngay.
Các tiền tố hay dùng:
Is: Trả lời một câu hỏi về một cái gì đó
Get:Lấy về gtrị
Set:Thiết lập gtrị
PHP CODING STANDARD v.1.0
Ví dụ:
function some_bloody_function()
{
//some code here
}
Accessor method and function
Accessor method & function có thể tam dịch là hàm (phương thức) truy suất để nói lên đặc
tính của hàm hay phương thức đó dùng để định giá trị hay lấy giá trị trạng thái của hệ thống
hay của lớp.
Getters
Các hàm lấy giá trị có tiếp đầu ngữ là
get
nếu theo sau nó là danh từ. Đối với dạng giá trị trả
về là Boolean thì tiếp đầu ngữ là
is
nếu theo sau là tính từ,
has
nếu sau là danh từ và
can
nếu
sau là động từ.
Ví dụ:
getFirstName()
getAccountNumber()
isPersistent()
hasDependents()
canPrint()
Setters
Các hàm (phương thức) setter là các hàm (phương thức) làm thay đổi một trường giá trị của
hệ thống (lớp).
Ví dụ:
setFirstName(String aName)
setAccountNumber(int anAccountNumber)
setReasonableGoals(Vector newGoals)
3.5 Biến
Với các biến thường được viết chữ thường và cách nhau bởi dấu (‘_’).
Tên mảng đặt thêm tiếp đầu ngữ (‘arr_’) để phân biệt với biến đơn.
Riêng các biến đặc biệt đều có tiếp đầu ngữ và viết hoa chữ cái đầu của mỗi từ, không dung
dấu gạch dưới (‘_’). Bao gồm:
Thuộc tính (Class Attribute name)
10/23
PHP CODING STANDARD v.1.0
Bắt đầu bằng chữ cái ‘m’.
Ví dụ
class NameOneTwo
{
var $mVarAbc;
var $mErrorNumber;
var $mrName;
function VarAbc() {};
function ErrorNumber() {};
}
Tham biến (reference variable)
Bắt đầu bằng chữ cái ‘r’.
Ví dụ
class Test
{
var $mrStatus;
function DoSomething(&$rStatus) {};
function &rStatus() {};
}
Biến toàn cục (global variable)
Bắt đầu bằng chữ cái ‘g’.
Ví dụ
global $gLog;
global &$grLog;
Biến tĩnh (static variable)
Bắt đầu bằng chữ cái ‘s’.
Ví dụ
function test()
{
static $msStatus = 0;
}
Đối số của phương thức (Method Argument Names)
11/23
PHP CODING STANDARD v.1.0
Chữ cái đầu tiên là chữ thường, các từ tiếp theo viết hoa chữ cái đầu.
Không dùng dấu gạch dưới (‘_’) .
Ví dụ
class NameOneTwo
{
function StartYourEngines(&$someEngine, &$anotherEngine) {
$this->mSomeEngine = $someEngine;
$this->mAnotherEngine = $anotherEngine;
}

}
3.6 Hằng
Hằng số xử dụng chữ cái hoa và các từ cách nhau bởi dấu gạch dưới.
Ví dụ:
define("MAXSIZE", 100);
echo MAXSIZE;
class a {
const b B = 'c';
}
echo constant('a::b');
3.7 My Sql Conventions
Tên bảng
Tên bảng viết chữ thường, dùng danh từ số ít, các từ cách nhau bởi dấu cách (‘_’)
Sử dụng tiếp đầu ngữ chung của module hoặc của dự án.
Đối với các bảng hệ thống (dung chung cho tất cả các dự án trong cùng Framework) dùng tiếp
đầu ngữ là ‘sys_’
Các bảng nối quan hệ giữa 2 bảng đặt tên sẽ gồm
‘<tiếp đầu ngữ>_<tên bảng 1>_<tên bảng 2>
Ví dụ
Table mod_customer
Table mod_rights
12/23
“SELECT
people_id
, people_name
, people_phone
FROM
people
WHERE
name = 'Fred'
OR name = 'Susan'
. “ORDER BY name ASC ”
. “LIMIT 20”;
PHP CODING STANDARD v.1.0
Table mod_customer_rights
Table sys_configuration
Tên trường
Chữ cái thường cách nhau bởi dấu gạch dưới.
Tiếp đầu ngữ là tên bảng hoặc tên bảng rút gọn.
Các trường Foreign Key đặt tên theo đúng tên Primary Key ở bảng cha.
Ví dụ:
CREATE TABLE `mod_session` (
`session_id` int(100) NOT NULL auto_increment,
`session_in` datetime NOT NULL,
`session_out` datetime default NULL,
`admin_id` char(30) NOT NULL, //Foreign key
PRIMARY KEY (`session_id`)
)
13/23
“SELECT
people_id
, people_name
, people_phone
FROM
people
WHERE
name = 'Fred'
OR name = 'Susan'
. “ORDER BY name ASC ”
. “LIMIT 20”;
PHP CODING STANDARD v.1.0
4 CODING STYLE
4.1 PHP Code Demarcation
Khối code php được bao trong cặp thẻ <?php ?>. Không được dung thẻ rút gọn <? ?>
cũng như <?=$var?> .
Đối với file chỉ gồm code PHP thì không dùng thẻ đóng ‘?>’, xem 2.1
4.2 String
String Literal
String Literal là chuỗi không chứa các biến trong nó. String Literal nên đặt trong dấu nháy đơn
để tránh việc chạy các đoạn script PHP.
Đặt một khoảng trắng trước và sau ký hiệu nối 2 string để dễ nhìn
Ví dụ:
$name = 'john';
$hello = 'hello $ name!';
echo $hello; //will out: hello $var
$hello = ‘hello’ . $name //will out: hello john
Sql string
Sql string là chuỗi dùng để truy vấn câu lệnh sql. Một số các quy tắc cho Sql string sau:
Viết hoa các Sql keywork.
Ngắt xuống dòng đối với các câu lệnh dài.
Ví dụ
// Short SQL Query
$sql = "SELECT name FROM people WHERE id = '" . $id . "'";
// Long SQL Query
$sql = “SELECT people_id”
. “ , people_name”
. “ , people_phone”
. “FROM people ”
. “WHERE name = 'Fred' ”
14/23
“SELECT
people_id
, people_name
, people_phone
FROM
people
WHERE
name = 'Fred'
OR name = 'Susan'
. “ORDER BY name ASC ”
. “LIMIT 20”;
Nên viết thế này
ngắn gọn dễ nhìn
hơn(với sql long)

Không có nhận xét nào:

Đăng nhận xét