Có quá nhiều thứ để phải học để trở thành lập trình viên pro, những hãy quản lý những gì mình có để mọi thứ không bị rối rém
1 - Chú thích và tài liệu đi kèm
Các IDE (Integrated Development Environment) tốt luôn có hộ trợ tốt cho bạn, vì không phải ai cũng có thể nhớ hết các chức năng,hàm của một ngôn ngữ lập trình, comment sẽ giúp người đọc và người viết gợi nhớ hơn, kèm theo đó là tài liệu để học đã có sẵn trong các công cụ IDE. Hãy tận dụng nóó
2 - Căn chỉnh code
Mọi thứ sẽ đi từ từ,nhưng trước hết hãy coi những dòng của bạn là một bài văn, bạn trình bày nó ra sao để người đọc thấy hứng thú.
Style 1:
- function foo() {
- if ($maybe) {
- do_it_now();
- again();
- } else {
- abort_mission();
- }
- finalize();
- }
Style 2:
- function foo()
- {
- if ($maybe)
- {
- do_it_now();
- again();
- }
- else
- {
- abort_mission();
- }
- finalize();
- }
Style 3:
- function foo()
- { if ($maybe)
- { do_it_now();
- again();
- }
- else
- { abort_mission();
- }
- finalize();
- }
Ví dụ PEAR :
- function foo()
- { // placed on the next line
- if ($maybe) { // placed on the same line
- do_it_now();
- again();
- } else {
- abort_mission();
- }
- finalize();
- }
3 - Rút bớt comment không cần thiết
Trước một đống code do coder cũ để lại hãy tối ưu nó rồi xem lại trang code đó bạn sẽ thấy khác biệt.
- // get the country code
- $country_code = get_country_code($_SERVER['REMOTE_ADDR']);
- // if country code is US
- if ($country_code == 'US') {
- // display the form input for state
- echo form_input_state();
- }
- // display state selection for US users
- $country_code = get_country_code($_SERVER['REMOTE_ADDR']);
- if ($country_code == 'US') {
- echo form_input_state();
- }
4 - Gom nhóm
Tận dụng khoảng trống để code của bạn ưa nhìn bằng cách gom nhóm theo chức năng,hàm..
- // get list of forums
- $forums = array();
- $r = mysql_query("SELECT id, name, description FROM forums");
- while ($d = mysql_fetch_assoc($r)) {
- $forums []= $d;
- }
- // load the templates
- load_template('header');
- load_template('forum_list',$forums);
- load_template('footer');
5 - Đặt tên
PHP hay các ngôn ngữ khác cũng vậy, đặt tên cho biến, hàm, lớp... nên để ý, mình thích kiểu đặt tên trong Java.
- strpos() vs. str_split()
- imagetypes() vs. image_type_to_extension()
Những cách phổ biến sau:
- camelCase:từ đầu tiên không viết hoa,các từ sau viết hoa.
- underscores: gạch dưới: mysql_real_escape_string().
- class Foo_Bar {
- public function someDummyMethod() {
- }
- }
- function procedural_function_name() {
- }
6 - Nguyên tắc DRY
Hãy sử dụng những đoạn code lập lại cho hợp lý trước khi bạn làm hệ thống bị ngập lụt,tìm hiểu khẩu hiệu dưới đây:
“Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.”
- $this->load->view('includes/header');
- $this->load->view($main_content);
- $this->load->view('includes/footer');
7 - Tránh sự lồng code
Có quá nhiều code lồng nhau, nếu để cho IDE format thì thật tồi tệ.
- function do_stuff() {
- // ...
- if (is_writable($folder)) {
- if ($fp = fopen($file_path,'w')) {
- if ($stuff = get_some_stuff()) {
- if (fwrite($fp,$stuff)) {
- // ...
- } else {
- return false;
- }
- } else {
- return false;
- }
- } else {
- return false;
- }
- } else {
- return false;
- }
- }
đẹp hơn :
- function do_stuff() {
- // ...
- if (!is_writable($folder)) {
- return false;
- }
- if (!$fp = fopen($file_path,'w')) {
- return false;
- }
- if (!$stuff = get_some_stuff()) {
- return false;
- }
- if (fwrite($fp,$stuff)) {
- // ...
- } else {
- return false;
- }
- }
8 - Độ dài của dòng
Đôi mắt của chúng tôi được thoải mái hơn khi đọc các cột cao và thu hẹp của văn bản. Đây chính là lý do tại sao các bài báo như thế này:
Hãy từ bỏ đoạn code quá dài
- // bad
- $my_email->set_from('test@email.com')->add_to('programming@gmail.com')->set_subject('Methods Chained')->set_body('Some long message')->send();
- // good
- $my_email
- ->set_from('test@email.com')
- ->add_to('programming@gmail.com')
- ->set_subject('Methods Chained')
- ->set_body('Some long message')
- ->send();
- // bad
- $query = "SELECT id, username, first_name, last_name, status FROM users LEFT JOIN user_posts USING(users.id, user_posts.user_id) WHERE post_id = '123'";
- // good
- $query = "SELECT id, username, first_name, last_name, status
- FROM users
- LEFT JOIN user_posts USING(users.id, user_posts.user_id)
- WHERE post_id = '123'";
9 - Tệp và thư mục cũng cần quản lý
Tốt nhất hãy tham khảo vài Framework, họ là những chuyên gia mà:
10 - Tên phù hợp
Thông thường, các biến được mô tả và chứa một hoặc nhiều từ. Tuy nhiên, điều này không nhất thiết áp dụng cho các biến tạm thời. Chúng có thể được như ngắnnhư là một nhân vật duy nhất.
Đó là một thực hành tốt để sử dụng tên phù hợp cho các biến tạm thời của bạn cócùng một loại vai trò. Dưới đây là một vài ví dụ mà tôi có xu hướng sử dụng trong mã của tôi:
Đó là một thực hành tốt để sử dụng tên phù hợp cho các biến tạm thời của bạn cócùng một loại vai trò. Dưới đây là một vài ví dụ mà tôi có xu hướng sử dụng trong mã của tôi:
- // $i for loop counters
- for ($i = 0; $i < 100; $i++) {
- // $j for the nested loop counters
- for ($j = 0; $j < 100; $j++) {
- }
- }
- // $ret for return variables
- function foo() {
- $ret['bar'] = get_bar();
- $ret['stuff'] = get_stuff();
- return $ret;
- }
- // $k and $v in foreach
- foreach ($some_array as $k => $v) {
- }
- // $q, $r and $d for mysql
- $q = "SELECT * FROM table";
- $r = mysql_query($q);
- while ($d = mysql_fetch_assocr($r)) {
- }
- // $fp for file pointers
- $fp = fopen('file.txt','w');
11 - Viết hoa các từ cần thiết
Trong khi thêm code SQL hãy viết hoa tất cả các từ khóa SQL
- SELECT id, username FROM user;
- UPDATE user SET last_login = NOW()
- WHERE id = '123'
- SELECT id, username FROM user u
- LEFT JOIN user_address ua ON(u.id = ua.user_id)
- WHERE ua.state = 'NY'
- GROUP BY u.id
- ORDER BY u.username
- LIMIT 0,20
12 - Tách code và dữ liệu
Lại sử dụng các công cụ hay framework để tham khảo về việc phân tách dữ liệu và code mà ở đây là phần hiển thị HTML và code
Framework PHP Khá ok:
Mẫu khá chuẩn:
13 - Cú pháp bên trong template
Nên xem xét việc kết hợp code và template
- <div class="user_controls">
- <?php if ($user = Current_User::user()): ?>
- Hello, <em><?php echo $user->username; ?></em> <br/>
- <?php echo anchor('logout', 'Logout'); ?>
- <?php else: ?>
- <?php echo anchor('login','Login'); ?> |
- <?php echo anchor('signup', 'Register'); ?>
- <?php endif; ?>
- </div>
- <h1>My Message Board</h1>
- <?php foreach($categories as $category): ?>
- <div class="category">
- <h2><?php echo $category->title; ?></h2>
- <?php foreach($category->Forums as $forum): ?>
- <div class="forum">
- <h3>
- <?php echo anchor('forums/'.$forum->id, $forum->title) ?>
- (<?php echo $forum->Threads->count(); ?> threads)
- </h3>
- <div class="description">
- <?php echo $forum->description; ?>
- </div>
- </div>
- <?php endforeach; ?>
- </div>
- <?php endforeach; ?>
14 - Đối tượng và thủ tục
Lập trình hướng đối tượng có thể giúp bạn tạo ra mã cũng có cấu trúc. Nhưng điềuđó không có nghĩa là bạn cần phải từ bỏ lập trình thủ tục hoàn toàn. Thực sự tạo ra một kết hợp của cả hai phong cách có thể được .Đối tượng nên được sử dụng để đại diện cho dữ liệu, thường trú tại một cơ sở dữ liệu.
- class User {
- public $username;
- public $first_name;
- public $last_name;
- public $email;
- public function __construct() {
- // ...
- }
- public function create() {
- // ...
- }
- public function save() {
- // ...
- }
- public function delete() {
- // ...
- }
- }
Thủ tục.
- function capitalize($string) {
- $ret = strtoupper($string[0]);
- $ret .= strtolower(substr($string,1));
- return $ret;
- }
Lập trình hướng đối tượng trong PHP
15 - Đọc Mã nguồn mở
Dự án mã nguồn mở được xây dựng với đầu vào của nhiều nhà phát triển. Các dự án này cần phải duy trì một mức độ cao của khả năng đọc mã mà nhóm có thể làm việc cùng nhau một cách hiệu quả nhất có thể. Vì vậy, nó là một ý tưởng tốt đểduyệt qua các mã nguồn của các dự án này để quan sát những gì các nhà phát triển đang làm.
No comments:
Post a Comment