http://codeigniter.com/user_guide/general/styleguide.html
Tạm đặt cái title đã, còn nhiều vấn đề với thằng này 😀
PHP Closing Tag
Trong PHP có thể bỏ qua thẻ đóng ?>, điều này tránh được những lỗi vớ vẩn do bị output thừa 😀 Cái này chuẩn, không có gì phải bàn cả. Tuy nhiên 1 số IDE hơi man mát, phải có thẻ đóng nó mới hightlight code đc 😐
Class and Method Naming
Class names should always have their first letter uppercase, and the constructor method should match identically. Multiple words should be separated with an underscore, and not CamelCased. All other class methods should be entirely lowercased and named to clearly indicate their function, preferably including a verb. Try to avoid overly long and verbose names.
Tên các lớp phải viết hoa chữ cái đầu tiên và phải giống với phương thức khởi tạo. Nếu tên lớp chứa nhiều từ thì sẽ được phân cách bởi dấu gạch dưới (underscore: _) và không được viết theo kiểu camelCase (làKiểuNhưThếNày). Các phương thức trong lớp phải viết thường, đặt tên có tính gợi nhớ, rõ ràng, nên có động từ đi kèm. Tránh việc đặt tên quá dài.
Okie, dịch phiên phiến là thế. Đồng ý là viết class xu hướng bây giờ người ta thường viết tên class dạng:
abstract class Zend_Pdf_Element {
//...
}
Nhưng đấy là viết cho PHP5, dùng __autoload(), khi đó sẽ include từ thằng thư mục Zend, rồi Pdf, xong đến Element. Trong CodeIgniter (CI), khi viết class cần gì phải loằng ngoằng như vậy nhỉ? Cái ví dụ của nó còn chuối nữa :down:
INCORRECT:
class superclass
class SuperClass
CORRECT:
class Super_class
Variable Names
Phần này khá hợp lý rồi, không có gì để nói. Nhưng tôi khoái dùng camelCase chỗ này hơn.
Commenting
Chuẩn này quá chuẩn rồi :)>-
Constants
Tương tự trên
TRUE, FALSE, and NULL
Sẽ nói tới ở phần bên dưới.
Logical Operators
Các bác này đề nghị dùng OR thay cho || vì dùng || dễ nhầm với số 11 😆 Uh nhỉ, cũng giống thật, mấy cái này tôi cũng không để ý nữa, căn bản có thằng IDE lo cho rồi, số và toán tử nó…khác màu nhau :-p
Tôi vẫn quen viết:
if(!$abc) {
//...
}
giờ bảo viết
if ( ! $abc)
chắc tôi không nghe đâu, tự nhiên mất mấy lần gõ phím Space, tốn bao nhiêu Kalo chứ ít à 😀
Comparing Return Values and Typecasting
Có lẽ đây là phần hay nhất & thuyết phục nhất bởi cái này không làm nhiều, không va vấp chắc không biết được 🙂
INCORRECT:
if (strpos($str, 'foo') == FALSE)
CORRECT:
if (strpos($str, 'foo') === FALSE)
Thoáng nhìn hẳn sẽ bảo tự nhiên cho thêm dấu = làm gì? Mất công gõ thêm 1 ký tự nữa :confused: Okie, theo như PHP manual, hàm strpos trong PHP sẽ trả về vị trí của chuỗi cần tìm kiếm trong chuỗi cho trước. Ví dụ nếu chuỗi ban đầu là: Đỗ Nam Khánh, tôi cần tìm từ Đỗ thì sẽ như sau:
$str = 'Đỗ Nam Khánh';
$pos = strpos($str, 'Đỗ');
Từ Đỗ nằm ở vị trí đầu tiên trong chuỗi (vị trí thứ 0) nên hàm này trả về giá trị 0, $pos = 0;
Vấn đề ở chỗ này đây:
if (strpos($str, 'foo') == FALSE)
sẽ tương đương
if (0 == FALSE)
Và dĩ nhiên, trong lập trình thì 0 là FALSE, khác 0 là TRUE. Vậy là, bác nào xui xẻo thì dính ngay trường hợp chết người này 🙂
Code Indenting
Chỗ này CI lại bắt ta quay về với kiểu cổ điển (Pascal chẳng hạn), ngày trước tôi cũng viết như vậy nhưng giờ hầu như là viết giống C:
foreach ($arr as $key => $val) {
// ...
}
Đơn giản là lại bớt được 1 cái enter :”>
Những cái còn lại thì okie, thuyết phục 😀
1 số syntax như if ( ! $abc ) có thể được chỉnh và tự động format trong IDE mà, có phải tốn miếng calo gõ space đâu 😉
Ui khách quý \:D/ Em vừa thử chỉnh trong thằng Eclipse Aptana nhưng chẳng có mấy cái đấy thì phải. Nhưng mà em vẫn thích gõ if(!$abc) hơn, tại nhìn quen rồi :-p
Tui thì thích thế này if ( !$abc ), thật ra có space trước và sau params thì sẽ dễ nhìn hơn, trong các coding convention của java thường yêu cầu thế, còn ! thì đúng là tui khoái để liền kề với variable.
Cái vụ strpos thì đúng thiệt, hồi xưa đã dính 1 lần, cứ ỷ y rồi tìm mãi ko ra bug 🙁
Đóng mở block thì tui cũng quen cách của bồ, hehe.
Code thì cần phải theo chuẩn, tui ghét nhất là nhìn code tràn lan, nhìn vào chỉ muốn Ctrl+A ===> Del :))
😀
Cảm ơn bác em cũng làm CI đây…
em cũng đang làm CI mà sao Bác có nhiều Blog thế !? làm em cứ tưởng tượng là đi đâu củng DNK + Codeigniter no one in Viet Nam :D, dù sao mong Bác cũng có nhiều bài viết về CodeIgniter
có 2 blog thôi mà bác 😀