Breaking News

Thứ Sáu, 2 tháng 5, 2014

Phong cách lập trình


Chào! hôm nay mình xin nói - chia sẽ chút ít về Phong cách lập trình. 1 lớp học mình vừa được học sáng nay with Trung Hiếu Trần. nói thêm 1 tý để tạo sự hứng thú cho các bạn đọc. bạn có bao giờ đi phòng vẫn, ngay vòng loại. người ta quăng cho bạn 10 bài. bạn hoàn thành 10 bài và bạn bị fali ? trong khi đó cùng 10 bài đó, người khác chỉ hoàn thành 2 bài nhưng passed! 


1. Định danh

Định danh. thường thì đa số ác editor đều "Hướng đối tượng". Mà "Đối tượng" thì gồm có các 
Thuộc tính(Properties) và các Phương thức(Method).
 Vậy tên các thuộc tính các bạn thường đặt là gì?. 
Ví dụ đối tuọng SinhVien, có thuộc tính gì? mình không liệt kê, các bạn tự liệt kê nhé ^^.qua đó, bạn thấy được gì về tên của chúng?==> đa số các thuộc tính đều được đặt tên bằng "Danh từ".
Thứ 2 về phương thức. lại đối tượng SinhVien. bạn nghĩ nó có phương thức gì ? working working @@! ==> điểm chung tên của các phương thức đều là "Động từ".
Chốt:
+Name of Properties is Noun
+Name of Method is Verb


2. Tên

 Cách đặt tên(Phong cách đặt tên): lấy ví dụ thực tế từ 2 ngôn ngữ lập trình C# and PHP (mã nguồn mở).trong C# , bạn thường đặt tên cho 1 Phương thức như thế nào ? có phải nó sẽ sát với ý nghĩa của nó nhất (đều nảy là ai cũng phải biết). 
Ví dị 1 phương thức tính tổng (Phương thức ==Hàm or Method == Function).
public void tinhTongHaiSo(int pA, int pB) ##1
{
//Code here
}
hay

public void Tinh_Tong_Hai_So(int pA, int pB) ##2
{
//Code here
}

hoặc
public void tinh_tong_hai_so(int pA, int pB) ##3
{
//Code here
}
=> Bạn thấy gì? và bạn hay sài cách nào nhất?

##1 và ##3 là đúng (đúng phong cách), riêng ##2 sài phong cách lập trình.

Về ##1, hay còn gọi là "Camle code - Lạc đà code (??)". mình không nhớ lắm. nói chung là chữ đầu tiền của từ được viết hoa để phân biệt với các chữ khác (hay được đặt tên trong C#)
về ##3. cách này mình quên tên rồi. mà cụ thể nhất là chúng ta hay thấy nó trong PHP.
==> Bạn thấy chứ, rõ ràng nó có 2 cách khác nhau. bạn thường sài cách nào? sài cách nào cũng được. nhưng nhớ rõ 1 điều. là nên thống nhất hóa ngay từ đâu. chứ đừng đầu code vậy "public void TinhTong()" mà đuôi lại vậy "public void binh_phuong_hai_so()". nếu đó là thói quen, bỏ ngay đi và tập cho mình 1 cách thôi. bởi vì bạn sẽ chẳng bao giờ biết được ."tại sao tôi code đúng hết, mà tôi bị loại ngay từ vòng 1" vì đơn giản là bạn sống trong 1 môi trường, thì bạn phải thích nghi với nó, chú không phải "nó thích nghi với bạn!".

3. Space (Khoảng trắng). 


Trích "cái này là cái các bạn hay sai nhiều nhất" từ cô dạy mình bên KHTN. ký tự " " thì ai cũng biết. và thường thì nếu các bạn lập trình bằng c# thì nó sẽ auto format cho bạn đẹp. và bạn cũng không bận tâm nhiều. nhưng nếu 1 ngày bạn bước qua Java, PHP, etc... nó không tự canh chỉnh. thì chính các bạn phải tự làm thôi. vậy canh chỉnh như thế nào là chuẩn, như thế nào là sai (sai ở đây là sai phong cách lập trình nhé).mình lấy ví dụ:

+ Thứ 1 : về toán tử (toán tử là gì ? toán tử gồm những loại nào ? => nếu quên thì search google nhé!)
##1:
int i=1;
if(i<=n)
{
//code here.
}
==> Code này hoàn toàn đúng, không hề lỗi syntax. nhưng bạn có phát hiện ra gì không ? nhìn ví dụ thứ 2 nhé:
##2:
int i = 1;
if(i <= n)
{
//Code here
}

=> Bạn thấy gì khác biệt chưa , nếu chưa cuộn lên phần #3 xem nội dung này đang nói về gì nhé.
"Trước và sau toán tử đều có Khoảng trắng".
+ Thứ 2: dấu "," và ";" và Key-word. lấy 2 ví dụ:
##1:
for(int i = 0 ; i<n;i++)
{
//code here
}

##2
for ( int i = 0; i < n; i++)
{
//code here
}

=> Riêng dấu "," , và ";" : Trước nó không có khoảng trăng, nhưng sau nó thì bắt buộc có. Key-word (For, While, If) thường thì nên cách nó ra với các Parameter 1 tý, để dể phân biệt dể đọc (Nên nhé). trường hơp quá nhiều Parameter (Tham số) thì sẽ khá rối nếu không cách ra.

4. Canh lề: (Indentain (??)).
- Có bao giờ bạn code 1 lèo từ trên xuống, không thuộc vào thuộc ra gì hết chưa ? có, khi bạn học môn C++ (nhập môn). bạn chắc sẽ dính 1 vài lần ^^. vậy bạn đã khắc phục vấn đề đó chưa. tuy nó không lớn. và thuộc vào sai quy ước 1 tý cũng chả chết ai , code vẫn chạy ầm? đúng không. về code thì chẳng sai. nhưng về phong cách. thì bạn bị loại rồi đấy. lấy ví dụ đơn giản:
##1:
if ( 1 + 1 == 3)
{
return false;
}

##2:
if ( 1 + 1 == 3)
{
return false;
}

=> Đang nói về canh lề nhé ^^. "Tập canh lề cho chính bản thân, cũng là tập hoàn thiện trình độ của bạn".

5. Code lãng phí.
- Thế nào gọi là lãng phí ? và làm thế nào cho nó bớt phí ?
##1:
if ( a > b)
{
return true;
}
else
{
return false;
}

##2:
return a > b;

=> Bạn thấy gì? "Hãy tiếc kiệm code , như tiếc kiệm giấy lúc bạn viết bài, không gì là dư thừa cả !" (code ngắn lại là 1 chuyện, nhưng đừng "Code ngắn - nhưng tốn tài nguyên nhé bạn!").

6. Comment


- 1 project lớn thường không phải 1 đơn vị làm. và bạn chỉ là 1 phần tử trong đơn vị đó (quá bé phải không @@!). nên, code chạy ổn - ok là 1 chuyện. code làm sao mà người quản lý cấp cao (team-leader). vậy viết thế nào để người cấp trên hiểu, cũng như lúc bạn phải chuyển qua project khác, thi người đến sau sẽ biết bạn đang viết gì (chuyện này là thường xuyên nhé). chỉ có 1 cách là comment lại. ví dụ trong C#. bạn nhấn /// thì nó sẽ ra dạng ///<summary> abc xyz <summary>. và cách comment tốt nhất là:
+ Nó làm gì
+ Ai viết
+ Thời gian nào
và nên comment ở đâu, và đặc biệt không lạm dụng nó quá đáng.ví dụ.

##1
while (i < n)//loop while i less than n
{
i++;//next i
}

##2
while (i < n)//scan all element
{
i++;//finish this element, next elemment
}

=> Chú thích đúng nghĩa, chứ đừng chú thích nhưng gì người ta nhìn vào đã thấy. (ai chả biết lặp lại trong khi i còn bé hơn n, rồi nhảy i lên 1 đơn vị (comment thừa)).
và nên đặt 1 comment ở đầu class (?) hoặc đầu các method quá dài.

Bài viết mình chỉ viết đến đây. chắc chắn sẽ thiếu. mong các bạn góp ý.
Post by : Chuột
Designed By thanhbpc