Quy tắc đặt tên và tiêu chuẩn lập trình trong C#

Quy tắc đặt tên và tiêu chuẩn lập trình trong C#

Quy ước đặt tên và tiêu chuẩn

1. Quy tắc Pascal: Viết hoa chữ cái đầu tiên của mỗi từ (VD: Student, StudentDetail, ...)
* Sử dụng cho: Phương thức (method), Giao tiếp (Interface), Tập hợp (Enum), Sự kiện (Events), Ngoại lệ (Exception), Không gian tên (NameSpace), Thuộc tính (Property)
2. Quy tắc Camel: Viết thường từ đầu tiên và viết hoa chữ cái đầu tiên của từ kế tiếp (VD: student, studentDetail,...)
* Sử dụng cho: Tầm vực biến (Protected/Private), các Tham số (Parameter)

Sử dụng quy tắc Pascal cho phương thức:
public class HelloWorld{  
  ...  
}  
Sử dụng quy tắc Pascal cho phương thức:
public class HelloWorld{
  void SayHello(string name){
      ...
  }
}
Sử dụng quy tắc Camel cho biến và tham số của phương thức 
public class HelloWorld{
 int totalCount = 0;
 void SayHello(string name){
  string fullMessage = "Hello " + name;
  ...
 }
}
- Không nên sử dụng các tiền tố kèm dấu như: M_ để đặt tên biến, ví dụ như 
       string m_sName;
       int nAge;
Mặc dù khai báo như vậy hợp lệ, nhưng chuẩn viết code .NET không khuyến cáo sử dụng. Tất cả biến nên dùng quy tắc Camel, sử dụng các từ có nghĩa, mô tả được tên biến 

- Không dùng chữ viết tắt, tên, từ địa phương,... mà hãy dùng từ rõ nghĩa như: name, address, phone,...
- Không đặt tên biến một ký tự như: i, x, n,... mà hãy đặt tên biến như index, temp. Ngoại trừ trường hợp sử dụng trong vòng lặp như sau: 
for ( int i = 0; i < count; i++ ){
     ...
}
Nếu biến chỉ được sử dụng để đếm và không sử dụng ở bất kì nơi nào ngoài vòng lặp, nhiều người thích dùng (i) để đặt tên cho biến. 

- Không dùng dấu gạch dưới (_) trong tên biến
Tên NameSpace nên theo chuẩn như sau
<company name="">.<product name="">.<top level="" module="">.<bottom level="" module=""></bottom></top></product></company>

- Tên file nên đặt trùng với tên lớp. Ví dụ: với lớp HelloWorld thì tên file nên là HelloWorld.cs (or HelloWorld.vb)
- Thụt lề: Nên dùng TAB thay về space (phím cách)
- Ghi chú (comment) nên cùng cấp với đoạn mã muốn comment. Cặp dấu ngoặc nhọn ({}) cũng nên cùng cấp với đoạn mã.
Cách ra một dòng để tăng tính rõ ràng của mã
bool SayHello (string name){
  string fullMessage = "Hello " + name;
  DateTime currentTime = DateTime.Now;
    string message = fullMessage + ", the time is : " + currentTime.ToShortTimeString();
  MessageBox.Show ( message );
  if ( ... ) {
        // Do something
        // ...
        return false;
  }
        return true;
  }
- Với if, if-else, for, while, do-while dù chỉ có một hay nhiều dòng lệnh, cũng nên cho vào trong cặp dấu ngoặc nhọn ({}) 
if ( ... ) {
      // Do something
}
Nguyên tắc viết code:

Để tránh trường hợp file (.cs, .vb) quá lớn.

Nếu một file có hơn 300-400 dòng lệnh, bạn nên nghĩ đến việc chia nhỏ nó vào các Class
Tránh viết các phương thức dài, một phương thức thông thường chỉ nên từ 1-25 dòng lệnh. Nếu một phương thức có hơn 25 dòng lênh, bạn nên chia nhỏ thành các phương thức xử lý riêng. 
Tên phương thức cần rõ ý, nêu được mục đích của phương thức. Nếu bạn đặt tên phương thức rõ ràng, bạn sẽ không cần phải viết tài liệu miêu tả về ý nghĩa của phương thức.
Tốt - Tên phương thức rõ nghĩa 
void SavePhoneNumber ( string phoneNumber )
{
  // Save the phone number.
}
Không tốt - Tên phương thức không rõ nghĩa 
// This method will save the phone number.
void SaveData ( string phoneNumber )
{
  // Save the phone number.
}
Một phương thức chỉ nên xử lý một công việc. Không nên gộp quá nhiều "trách nhiệm" cho một phương thức
Tốt 
 void SaveAddress ( string address )
 {
  // Save the address.
  // ...
 }

 void SendEmail ( string address, string email )
 {
  // Send an email to inform the supervisor that the address is changed.
  // ...
 }
Không tốt 
 // Save address and send an email to the supervisor
 // to inform that the address is updated.
 SaveAddress ( address, email );
 void SaveAddress ( string address, string email )
 {
  // Job 1.
  // Save the address.
  // ...
 // Job 2.
  // Send an email to inform the supervisor that the address is changed.
  // ...
 }
Sử dụng kiểu dữ liệu đặc trưng thay vì sử dụng từ lớp
Tốt 
 int age;
 string name;
 object contactInfo;
Không tốt 
 Int16 age;
 String name;
 Object contactInfo;
Nên sử dụng Enum ở bất kì nơi nào cần thiết. Không nên dùng số hay chuỗi để kiểm tra các giá trị
Tốt 
enum MailType
 {
  Html,
  PlainText,
  Attachment
 }
 void SendMail (string message, MailType mailType)
 {
  switch ( mailType )
  {
   case MailType.Html:
    // Do something
    break;
   case MailType.PlainText:
    // Do something
    break;
   case MailType.Attachment:
    // Do something
    break;
   default:
    // Do something
    break;
  }
 }
Không tốt 
void SendMail (string message, string mailType)
{
  switch ( mailType )
  {
   case "Html":
    // Do something
    break;
   case "PlainText":
    // Do something
    break;
   case "Attachment":
    // Do something
    break;
   default:
    // Do something
    break;
  }
}
      Nên sử dụng private thay vì public hay protected cho biến. Nếu muốn, hãy dùng properties và thiết lập code để bảo vệ tài nguyên. 
      Không sử dụng được dẫn tĩnh cục bộ trong lập trình ("D:\software\..."). Hãy sử dụng đường dẫn tương đối ("../images/home.jpg")
      Trước khi chương trình hiển thị, hãy kiểm tra lại toàn bộ các yêu cầu về tập tin, ràng buộc, kiểm tra liên kết cơ sở dữ liệu, ... để đảm bảo rằng chương trình sẽ hoạt động tốt
      Nếu phát hiện lỗi phát sinh, nên thông báo cho người dùng biết và "ghi chú" lại để có thể thực hiện các bước kiểm tra và khắc phục lỗi hoặc tạo các bản cập nhật.
Xem chi tiết

Shell: Viết script tính tổng S = 1 + ½ + 1/3 + ¼ + ... + 1/n (n nguyên, nhập từ bàn phím)

Shell: Viết script tính tổng S = 1 + ½ + 1/3 + ¼ + ... + 1/n  (n nguyên, nhập từ bàn phím)

Mã nguồn:
clear
echo "n="
read n
i=1
s=0
while [ $i -le $n ]
do
  x=$(echo "scale=4; 1 / $i" | bc)
  s=$(echo "scale=4; $s + $x" | bc)
  i=`expr $i + 1`
done
echo "tong la: $s"
Tags: Lập trình Shell, lập trình Linux, Ubuntu, Script tính tổng
Xem chi tiết

Shell: Viết script tính can chi của năm dương lịch.

Shell: Viết script tính can chi của năm dương lịch.
clear
echo "nam bang"
read nam
case `expr $nam % 10` in
    0)can="canh" ;;
    1)can="tan" ;;
    2)can="nham" ;;
    3)can="quy" ;;
    4)can="giap" ;;
    5)can="at" ;;
    6)can="binh" ;;
    7)can="dinh" ;;
    8)can="mau" ;;
    9)can="ky" ;;
esac
case `expr $nam % 12` in
    0)chi="than." ;;
    1)chi="dau." ;;
    2)chi="tuat." ;;
    3)chi="hoi." ;;
    4)chi="ty." ;;
    5)chi="suu." ;;
    6)chi="dan." ;;
    7)chi="mao." ;;
    8)chi="thin." ;;
    9)chi="ti." ;;
    10)chi="ngo." ;;
    11)chi="mui." ;;
esac
echo "$can - $chi"
Tags: Lập trình Shell, lập trình Linux, Ubuntu, Script tính tổng
Xem chi tiết

Shell: Viết Script tính tổng các số lẻ từ 1-n (n nguyên, nhập từ bàn phím)

Shell: Viết Script tính tổng các số lẻ từ 1-n (n nguyên, nhập từ bàn phím)
clear
echo "n="
read n
i=1
tong=0
while [ $i -lt $n ]
do
  if [ `expr $i % 2` -ne 0 ]; then
      tong=`expr $tong + $i`
  fi
  i=`expr $i + 1`
done
echo "tong la: $tong"
Tags: Lập trình Shell, lập trình Linux, Ubuntu, Script tính tổng lẻ
Xem chi tiết

Shell: Viết chương trình Shell giải phương trình bậc nhất : Ax + B = 0 (a, b nguyên, nhập từ bàn phím)

Shell: Viết chương trình Shell giải phương trình bậc nhất : Ax + B = 0 (a, b nguyên, nhập từ bàn phím)

clear
echo "Chuong trinh giai phuong trinh bac nhat"
echo "Nhap gia tri a = "
read a
echo "Nhap gia tri b = "
read b

if [ $a -eq 0 ];then
            if [ $b -eq 0 ];then
                        echo "Phuong trinh vo so nghiem"
            else
                        echo "Phuong trinh vo nghiem"
            fi
else
            x=$(echo "scale=3; (-$b)/$a" | bc)
            echo "Phuong trinh co 1 nghiem x = $x"
fi
Tags: Lập trình Shell, lập trình Linux, Ubuntu, Script tính tổng, giải phương trình bậc nhất
Xem chi tiết

Shell: Viết Script giải hệ phương trình bậc nhất 2 ẩn.

Shell: Viết Script giải hệ phương trình bậc nhất 2 ẩn.
Ax + By = C
A1x + B1y = C1


hpt(){
          D=$(echo "scale=3; $1 * $5 - $2 * $4" | bc)
          Dx=$(echo "scale=3; $3 * $5 - $2 * $6" | bc)
          Dy=$(echo "scale=3; $1 * $6 - $3 * $4" | bc)
          if [ $D -ne 0 ];then
                   x1=$(echo "scale=3; $Dx/$D" | bc)
                   x2=$(echo "scale=3; $Dy/$D" | bc)
                   echo "Phuong trinh co nghiem duy nhat: x = ($x1,$x2)."
          elif [ $D -eq 0 ] && [ $Dx -eq 0 ] && [ $Dy -eq 0 ];then
                   echo "Phuong trinh vo so nghiem"
          else
                   echo "Phuong trinh vo nghiem"
          fi
}

hpt $1 $2 $3 $4 $5 $6

#Lưu ý: khi chạy admin@ubuntu~#/demo/bai1.sh  4 3 8 5 1 6

Tags: Lập trình Shell, lập trình Linux, Ubuntu, Script tính tổng, giải hệ phương trình bậc nhất 2 ẩn
Xem chi tiết

Shell: Viết script in ra chuỗi đảo ngược từ chuỗi ban đầu.

Shell: Viết script in ra chuỗi đảo ngược từ chuỗi ban đầu.
Ví dụ: Chuỗi ban đầu: 123. Chuỗi đảo ngược: 321.
clear
echo -e -n "Nhap chuoi:\t"
read sau
h=${#sau}
until [ $h -le 0 ]
do     
          echo -n `expr substr $sau $h 1`
          h=$(($h - 1))
done
echo -e "\n"
Tags: Lập trình Shell, lập trình Linux, Ubuntu, Script tính tổng, in chuỗi, chuỗi đảo ngược
Xem chi tiết

Shell: Viết script tính tổng các chữ số của 1 số nguyên được nhập vào từ bàn phím.

Shell: Viết script tính tổng các chữ số của 1 số nguyên được nhập vào từ bàn phím.
clear
t=1
while [ $t -eq 1 ]
do
          clear
          echo -e -n "Nhap so:\t"
          read so

          if [ ${#so} -eq 3 ]; then
                   a=$(($so % 10))
                   b=$((($so / 10) % 10))
                   c=$((($so / 100) % 10))
                   echo -en "Tong cac ky so la: `expr $a + $b + $c`"
          else
                   echo -en "\nNhap so trong pham vi tu 100 -> 999."
          fi
         
          while [ $t -ne 0 ]
          do
                   echo -en "\nBan co muon tiep tuc? (Nhap 0 hoac 1)\t"
                   read t
                   if [ $t -eq 1 ];then
                             break
                   fi
          done
done
Tags: Lập trình Shell, lập trình Linux, Ubuntu, Script tính tổng
Xem chi tiết

Shell: Viết script tìm số lớn nhất, nhỏ nhất trong 3 số được nhập từ dòng lệnh

Shell: Viết script tìm số lớn nhất, nhỏ nhất trong 3 số được nhập từ dòng lệnh
clear
declare -a a
a=( [0]=$1 [1]=$2 [2]=$3 )
max=${a[0]}
min=${a[0]}
l=${#a[*]}
for ((i=0;i<$l;i++))
do
          if [ $max -le ${a[i]} ];then
                   max=${a[i]}
          else
                   min=${a[i]}
          fi
done
echo "Phan tu lon nhat la: $max"
echo "Phan tu nho nhat la: $min"

#Chạy lệnh:” admin@ubuntu~#/demo/test.sh 5 2 9 
Xem chi tiết

JavaScript: Kiểm tra số n (nguyên, nhập từ bàn phím) có phải số nguyên tố không ?

JavaScript: Kiểm tra số n (nguyên, nhập từ bàn phím) có phải số nguyên tố không ?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<script>
var i,n,nt=1;
function nguyento(x){
if(x==1 || x==2) nt=1;
if(x>2){
for(i=2;i<=Math.sqrt(x);i++){
if(x%i==0){nt=0; break;}
}
}
return nt;
}
n=prompt("Nhap gia tri n:");
if(nguyento(n)==1) document.write(n + " LA so nguyen to")
else document.write(n + " KHONG la so nguyen to")
</script>
</body>
</html>

Xem chi tiết

JavaScript: Tìm UCLN, BCNN của 2 số a, b (nguyên, nhập từ bàn phím)

JavaScript: Tìm UCLN, BCNN của 2 số a, b (nguyên, nhập từ bàn phím)
<html>
<head>
<title>UCLN</title>
</head>
<body>
<script language="JavaScript">
var a,b;
function UCLN(x,y){
while(x!=y)   {
            if(x>y) x=x-y;
            else y=y-x;
}
return x;
}
a=prompt("Nhap gia tri a:");
b=prompt("Nhap gia tri b:");
document.write("Uoc chung lon nhat: " + UCLN(a,b))
document.write("Boi chung nho nhat: " + a*b/UCLN(a,b))
</script>
</body>
</html>
Tags: Lập trình, JavaScript, BCNN, UCLN
Xem chi tiết