General Style and Syntax in CodeIgniter
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 :D
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 :D 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 :lol: 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 à :D
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 :D