0

Code sạch,an toàn và dễ bảo trì trong php

Bất kỳ đoạn mã nào khi được viết theo cách sạch sẽ, dễ hiểu và được định dạng đều dễ dàng được chấp nhận và hoan nghênh bởi một và tất cả. Điều cần thiết là tất cả các mã code chúng ta viết phải dễ hiểu bởi vì tất cả các lập trình viên không nhất thiết phải làm việc trên cùng một bộ mã luôn. Để dễ dàng xác định và hiểu các mã code cho bất kỳ lập trình viên nào làm việc với nó sau này, điều cần thiết là các mã phải được cấu trúc, sạch sẽ, bảo mật và dễ bảo trì.
Giải thích dưới đây là một trong số các thực tiễn tốt nhất được tuân theo để duy trì các mã PHP sạch và dễ hiểu. Chúng không theo thứ tự quan trọng nào, vì vậy tất cả các thực tiễn được đề cập đều cần thiết và có tầm quan trọng như nhau:

1.Comment mọi hành động quan trọng được thực thi là rất cần thiết

Điều này không chỉ giúp dễ dàng xác định yêu cầu của đoạn code cụ thể đó mà còn mang lại cái nhìn gọn gàng cho các mã code.

 // Chức năng kiểm tra đăng nhập
if(!$user_login){
header("Location:https://www.macronimous.com/");
die();
} 

2.Tránh sử dụng các câu điều kiện không mong muốn

Điều này không chỉ làm tăng thời gian thực hiện mà còn làm cho việc mã hóa dài và phức tạp.

<?php
If (condition1==true){
code which satisfies the above condition
} else {
perform   die(); or exit();
}
?>

Cùng một đoạn code trên có thể được viết là:

<?
if(!condition){
// display warning message.
die("Invalid statement");
}
?>

Điều này làm giảm thời gian thực hiện và cũng làm cho các mã dễ dàng duy trì.
Điều tương tự cũng có thể được viết là:

<?php
$response_text = ( $action == "edit" ) ?  "the action equals edit" : "the action does not equal edit";
echo $response_text;
?>

Ở đây, các toán tử 3 ngôi đã được sử dụng, thay vì sử dụng các câu lệnh có điều kiện, để đơn giản hóa mã hóa hơn nữa.

3. Mã thụt lề,làm nổi bật bắt đầu và kết thúc câu lệnh

<?php
If(mysql_num_rows($res)>0) {
    while($a=mysql_fetch_object($res)){
        echo $a->first_name;
    }//ending of while loop
}//ending

4. Tránh các thẻ html không cần thiết trong mã PHP

Trong ví dụ được đưa ra dưới đây, trình biên dịch PHP đi qua từng dòng mã và thực thi hàm, việc này rất tốn thời gian.
Ví dụ:

<?php
echo "<table>";
echo “<tr>”;
echo “<td>”;
echo “Hai welcome to php”;
echo “</td>”;
echo </tr>”;
echo “</table>”;
?>

Thay vì ở trên, chúng ta có thể viết một cách đơn giản:

<html>
<body>
<table>
<tr>
<td><?php echo "Hai welcome to php"; ?></td>
</tr>
</body>
</html>

Ở đây trình biên dịch PHP sẽ chỉ thực thi mã máy chủ cụ thể, ở đây trong ví dụ, <td> echo “Hai welcome to php”;> </ td>, thay vì tạo các thẻ html, vì các mã html là xa lạ với PHP. Điều này tạo thuận lợi trong việc cắt giảm thời gian kiểm tra không cần thiết của trình biên dịch PHP, do đó tiết kiệm thời gian thực thi mã.

5. Clean code bằng việc gán giá trị cho các đối số trong Mysql

Ví dụ:

$sql="select first_name,last_name,email_address from tbl_user where user_id=".$user_id." and member_type='".$member_type."'";

mysql_query($sql);

Trong ví dụ trên, bạn có thể thấy rằng các giá trị PHP được bao gồm trong điều kiện truy vấn. Ngoài ra, có rất nhiều phép nối được thực hiện cho các biến trong truy vấn.
Thay thế:

$sql="select first_name,last_name,email_address from tbl_user where user_id="%d" and member_type='"%s"'";

mysql_query(sprintf($sql,$user_id,$member_type));

Bằng cách sử dụng truy vấn này, các giá trị được tự động gán cho các vị trí thích hợp, do đó tiết kiệm thời gian thực hiện và cũng như các lập trình viên có thể dễ dàng tìm thấy các giá trị liên quan đến các đối số được truyền.

6. Sử dụng mảng

Hãy sử dụng các mảng trong PHP, vì chúng cũng khá dễ quản lý và cũng dễ hiểu.

<?php
$products=array("Dove","Apple","Nokia");
?>

Sử dụng phân chia mảng cũng là một cách mã hóa rất tốt trong PHP. Tuy nhiên, có nhiều cách để sử dụng một mảng phân chia:
Thay vì:

<?
for($iC=0;$iC<count($products);$iC++){
echo $products[$iC].”<br>”;
}
?>

Thay vào đó, các mã có thể được viết như sau:

<?
foreach($products as $product_value){
echo $product_value;
}
?>

foreach là đặc biệt cho mảng. Khi nó được sử dụng, chúng làm giảm thời gian mã hóa và cả thời gian hoạt động.

7.Đặt tên nhất quán

Luôn luôn nên đặt tên lớp, đối tượng và những thứ khác một cách nhất quán. Điều này giúp nhận dạng dễ dàng cho các lập trình viên khác, những người có thể làm việc sau này trong dự án. Ngoài ra tên của các tập tin trong thư mục local cũng phải dễ hiểu.

8.Sử dụng Object (đối tượng) và Class (lớp)

Mặc dù chúng có vẻ khá phức tạp đối với người mới, nhưng các đối tượng rất hữu ích vì nó làm giảm sự lặp lại mã và cũng tạo điều kiện cho các thay đổi dễ dàng hơn đối với các mã. Trong đó khi một lớp được khai báo và sử dụng sẽ thể hiện cho nó độ linh hoạt hơn khi làm việc.
Một chức năng lớp đơn giản được giải thích dưới đây:

<?

Class shopping_cart{

var $cart_items;

function add_product_item($cart_number,$quantity){
$this->items[$cart_number]+=$quantity;
}

}

// Gọi class function 
$cart=new shopping_cart();
$cart->add_product_item("123",10);

?>

9. Sử dụng hợp lý mã lặp

Có rất nhiều mã lặp có sẵn trong PHP. Điều rất quan trọng là chọn mã lặp đúng cho mục đích phù hợp, để thời gian thực hiện có thể được lưu lại và công việc cũng sẽ kết thúc sớm hơn.
Ví dụ,thay vì:

$res=mysql_query("select * from tbl_products");
for($iC=0;$iC< mysql_num_rows($res);$iC++){
echo mysql_result($res,$iC);
}

Điều tương tự có thể được mã hóa theo cách này, để giảm thời gian thực hiện:

$res=mysql_query("select * from tbl_products");
while($obj=mysql_fetch_object($res)){
echo $obj->column_name1;
}

10.Sử dụng switch case

Thuận lợi hơn khi sử dụng switch case thay vì điều kiện If.
Ví dụ về việc sử dụng một loạt các câu lệnh If:

if($checking_value1==$value){
echo "result1";
}elseif($checking_value2==$value){
echo "result2";
}elseif($checking_value3==$value){
echo "result3";
}else{
echo "result 4";
}

Điều tương tự có thể dùng switch case, giúp giảm đáng kể thời gian hoạt động:

switch($checking_value){
case Value1:
echo "result1";
break;

case Value2:
echo "result2";
break;

case Value3:
echo "result3";
break;

default:
echo "result4";
break;

}

11.Sử dụng dấu ngoặc đơn thay vì ngoặc kép

Mặc dù hai mục đích này phục vụ các mục đích khác nhau, sử dụng dấu ngoặc đơn giúp thực hiện các vòng lặp nhanh hơn so với khi sử dụng dấu ngoặc kép.
Ví dụ:In 1500 dòng thông tin, có thể được thực hiện theo hai cách như:

//Sử dụng dấu ngoặc kép
print “SerialNo : $serialno. WorkDone : $workdone. Location: $location”;

Điều tương tự có thể được viết với dấu ngoặc đơn:

//Sử dụng dấu ngoặc đơn
print ‘SerialNo :’.$serialno.’. WorkDone : ‘.$workdone’. Location‘.$location’.';

Ở đây, dòng mã thứ hai hoạt động nhanh hơn nhiều so với dòng đầu tiên, trong đó các chuỗi phải được phân tích hoàn toàn, tất cả 1500 lần. Trong dòng mã code thứ hai, không có phân tích chuỗi thực tế diễn ra. Chỉ cần nối các chuỗi để xuất chuỗi ra .

Một vài trong số những lời khuyên trên nghe có vẻ khá quen thuộc, nhưng chúng đã được đưa vào đây để làm mới các thực tiễn tốt nhất có thể được thực hiện để làm sạch, bảo mật đồng thời dễ dàng duy trì mã PHP.

Bài viết được dịch từ: https://www.macronimous.com/resources/articles/writing-clean-secure-easy-maintain-php-code


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí