1. Trang chủ
  2. » Tất cả

Coding Standard 4.0

27 385 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Coding Standard 4.0
Tác giả Group I – XDPM
Người hướng dẫn Ngô Huy Biên
Trường học Trường Đại Học Khoa Học Tự Nhiên
Chuyên ngành Công Nghệ Thông Tin
Thể loại Tài liệu
Năm xuất bản 2011
Thành phố Hồ Chí Minh
Định dạng
Số trang 27
Dung lượng 74,19 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Qui t c đ t tên namespaces ắc đặt tên namespaces ặt tên namespaces Quy tắc chung cho việc đặt tên namespaces là sử dụng tên công ty và theo sau là tên công nghệ và nếu có chức năng và th

Trang 1

Trường Đại Hoc Khoa Hoc Tự Nhiên Khoa Công Nghệ Thông Tin Môn Hoc : Xây Dựng Phần Mềm



Giáo Viên : Ngô Huy Biên

Version 4.0 Date: 17/05/2011 Writer by Group I – XDPM

Trang 2

I Giới Thiệu : 4

1 Mục Đích: 4

2 Phạm vi tài liệu: 4

3 Tài liệu tham khảo : 4

II Qui Ước Đặt Tên 4

1 Qui ước viết hoa : 4

1.1 Pascal case – cú pháp Pascal 4

1.2 Camel case – cú pháp Lạc đà 4

1.3 Uppercase 5

2 Qui Ước Viết Tắt 6

3 Chi tiết các chuẩn 6

3.1 Qui tắc đặt tên namespaces 6

3.2 Qui tắc đặt tên Lớp 7

3.3 Qui tắc đặt tên Form 8

3.4 Qui tắc đặt tên kiểu dữ liệu 8

3.5 Qui tắc đặt tên kiểu Enum 9

3.6 Qui tắc đạt tên cho trường Static 9

3.7 Qui tắc đặt tên cho tham biến 10

3.8 Qui tắc đặt tên cho thuộc tính 10

3.9 Qui tắc đặt tên biến 11

3.10 Qui tắc đặt tên biến toàn cục 12

3.11 Qui tắc đặt tên sự kiện 14

3.12 Bảng qui tắc control prefix Name 15

3.13 Qui tắc đặt tên hằng số 17

3.14 Qui tắc lớp kế thừa Attribute 18

3.15 Qui tắc kế thừa Exception 18

3.16 Qui tắc đặt tên hàm phương thức 18

3.17 Qui tắc đặt tên kiểu dữ liệu 19

3.18 Tránh để hàm trả về giá trị boolean trong mệnh đề điều kiện, hãy đặt một biến cục bộ và kiểm tra nó vd : 20

3.19 Luôn sử dụng mảng bắt đầu từ 0; 20

Trong tập hợp có chỉ mục(index), chỉ mục bắt đầu từ không 20

3.20 Luôn luôn khởi tạo mảng reference type bẳng vòng lặp for 20

Trang 3

III QUI ƯỚC CODE FORMATS 21

1 Qui ước về Tab 21

2 Qui ước về Block code 21

3 Qui ước Khoảng cách 21

4 Qui ước về comment 21

5 Đặt dấu '{' và dấu '}' riêng biệt ở một dòng 22

6 Tránh đặt nhiều class trong 1 file 23

7 Tránh có nhiều namespace trong 1 file 1 file nên kết hợp các type vào 1 namespace 23

8 Tránh 1 file có nhiều hơn 500 dòng ( không bao gồm mã máy) 23

9 Tránh những phương thức có nhiều hơn 200 dòng 23

10 Tránh những phương thức có hơn 5 đối số 23

11 Một dòng không được quá 120 ký tự 23

12 Không nên tự sửa bất kỳ dòng nào của mã máy 23

13 Tránh ghi chú thích những điểu quá hiển nhiên trog code Tự code nên giải thích nó code được gọi là tốt khi tên biến và tên hàm rõ ràng, không cần giải thích 23

14 Văn bản chỉ dùng để giải thích giải thuật 23

15 Các câu lệnh lồng nhau tối đa 4 cấp 23

16 Các vòng lặp đơn giản có thể được dùng các biến i, j, k, l để đếm 23

17 Khi dùng so sánh biến với số nên viết số trước biến sau 23

18 Khi dùng lệnh switch chú ý có lệnh break trong mỗi case 23

19 Không truy cập hay thay đổi đối tượng nhiều lần trong một biểu thức 23

20 Không sử dụng câu lệnh lựa chọn (if, switch) thay vì một nhiệm vụ đơn giản hoặc khởi tạo 23 21 Exception Handling 24

22 Đừng so sánh rõ ràng với true, false 24

23 Gán object = null để báo rằng object đó không còn cần thiết 24

24 Mỗi dòng code không nên quá dài 24

IV CÀI ĐẶT PROJECT 24

V MÔ TẢ CHI TIẾT FRAMEWORK 26

Trang 4

1 21/03/2011 1.0 Hoàn thiện dần nội dung bản chuẩn mã nguồn Nhóm I

2 22/04/2011 2.0 Hoàn thiện dần nội dung bản chuẩn mã nguồn Nhóm I

3 13/05/2011 3.0 Hoàn thiện dần nội dung bản chuẩn mã nguồn Nhóm I

4 17/05/2011 4.0 Hoàn thành tài liệu chuẩn mã nguồn Nhóm I

I Giới Thiệu :

1 Mục Đích:

Theo yêu cầu của Thầy cũng như tạo hiệu quả cao trong việc phát triển phần mềm , thống nhất trong phong cách và giảm chi phí cho việc sửa lổi , bảo trì hệ thống Nhóm I xây dựng tài liệu này đưa ra một số đề xuất cũng như mô tả về luật thống nhất cho việc xây dựng phần mềm quản lý Ký Túc Xá mà nhóm đang xây dựng trong môn hoc Xây Dựng Phần Mềm

3 Tài liệu tham khảo :

- Tham khảo slide thuyết trình của nhóm chuẩn mã nguồn thực hiện trong môn hoc

- Bộ chuẩn mã nguồn của phần mềm hoc toán lớp 11

- Bộ chuẩn mã nguồn của phần mềm hoc toán lớp 8

- Bài viết về chuẩn mã nguồn trên Wikipedia

- Có sự tham khảo phần mềm StyleCop

Trang 5

II Qui Ước Đặt Tên

1 Qui ước viết hoa :

1.1 Pascal case – cú pháp Pascal

Sau đây là bảng quy tắc cùng với ví dụ:

Enum Value Pascal FatalError

Exception class Pascal WebException

Note: Always ends with the suffix ExceptionRead-only

Static field Pascal RedValue

Interface Pascal IDisposable

Note: Always begins with the prefix I

Trang 6

Identifier Case Example

Namespace Pascal System.Drawing

Protected

instance field Camel

redValueNote: Rarely used A property is preferable to using a protected instance field

Public instance

RedValueNote: Rarely used A property is preferable to using a public instance field

2 Qui Ước Viết Tắt

Để tránh sự nhầm lẫn và lạm dụng viết tắt, sau đây là những quy tắc về việc viết tắt:

 Không sử dụng quy ước viết tắt hoặc viết rút gọn đối với những định danh tên Ví dụ, sử dụng GetWindow thay vì GetWin

 Không sử dụng acronym - những từ mà được cấu tạo từ những chữ đầu của một nhóm từ

mà không được chấp nhận trong lĩnh vực máy tính

 Trong trường hợp thích hợp, tốt nhất sử dụng acronym để thay thế cho những tên dài Ví

dụ, sử dụng UI thay cho User Interface and OLAP thay cho On-line Analytical Processing

 Khi sử dụng acronym, sử dụng cú pháp Pascal hoặc Lạc đà cho những acronym có nhiều hơn 2 ký tự Ví dụ, sử dụng HtmlButton hoặc htmlButton Tuy nhiên, nên viết hoa tât cả ký

tự khi chỉ gồm 2 ký tự, chẳng hạn System.IO thay vì System.Io

 Không viết tắt đối với định danh hoặc tham biến Nếu phải viết tắt thì sử dụng cú pháp Lạc đà của những từ có nhiều hơn 2 ký tự mặc dù mâu thuẫn quy ước viết tắt

3 Chi tiết các chuẩn

3.1 Qui t c đ t tên namespaces ắc đặt tên namespaces ặt tên namespaces

Quy tắc chung cho việc đặt tên namespaces là sử dụng tên công ty và theo sau là tên công nghệ và nếu có chức năng và thiết kế theo sau

CompanyName.Technology[.Feature][.Design]

Trang 7

Ví dụ:

Microsoft.Media

Microsoft.Media.Design

- Tên namespace bắt đầu với tên công ty hoặc nhãn khác tránh tình trạng hai

namespace cùng tên Ví dụ, Microsoft.Office

- Namespace phải bao gồm kiểu mà được yêu cầu lúc thiết kế hàm cho namespace cơ

sở với hậu tố Design Ví dụ, namespace System.Windows.Forms.Design bao gồm những trình thiết kế và có liên hệ với lớp cơ sở System.Windows.Forms

- Có một sự lệ thuộc trên kiểu của namespace Chằng hạn, lớp the

System.Web.UI.Design lệ thuộc vào lớp System.Web.UI Tuy nhiên lớp

System.Web.U không lệ thuộc vào lớp System.Web.UI.Design.

- Sử dụng cú pháp Pascal, và ngăn cách những thành phần logic với dấu chấm ( ), như Microsoft.Office.PowerPoint

- Sử dụng tên namespace là số nhiều nếu thích hợp Chằng hạn, sử dụng

System.Collecions hơn là System.Collection Không kể những trường hợp tên viết tắt.Chằng hạn sử dụng System.IO hơn là System.IOs

- Không sử dụng cùng tên cho một namespace và một class Ví dụ, không có cả

namespace Debug và lớp Debug

 Tránh sử dụng từ khóa Using trong một namespace :

Trang 8

Cuối cùng, chú ý rằng tên namespace không có song song với nó một thư viện liên kết có cùng tên.

3.2 Qui t c đ t tên L p ắc đặt tên namespaces ặt tên namespaces ớp

 Sử dụng một danh từ hoặc cụm danh từ

 Đôi khi tên class có thể bắt đầu với ký tự I, mặc dù class không phải là một interface

Thỉnh thoảng, sử dụng từ ghép cho một lớp dẫn xuất Thành phần thứ hai của tên lớp dẫn xuất là tên của lớp cơ sở Ví dụ, ApplicationException là tên của một lớp dẫn xuất từ lớp Exception, bởi vì ApplicationException là một loại của Exception

 Sau đây là những cách đặt tên lớp đúng quy tắc:

public class FileStream

public class Button

public class String

 Tên Class phải phản ánh được nội dung chứa nó Phần mềm xây dựng theo mô hình 3 lớp nên tên Class được qui định như sau : Tên đối tượng + Tên lớp(BUS, DAO, DTO)

 VD : KhuBUS , KhuDAO , SinhVienDAO ……

 Khi sử dụng kiểu partial để chia một lớp ra thành nhiều file thì phải đặt tên file đúng với tên lớp và nhiệm vụ mà phần lớp chứa trong file đó đảm nhiệm một cách logic:

Trong file MyClass.cs: chứa các thuộc tính và phương thức thực thi của lớp

public partial MyClass

Trang 9

public partial MyClass

{

}

 Tên của file chứa source code của một lớp(class) phải cùng tên với lớp đó

3.3 Qui t c đ t tên Form ắc đặt tên namespaces ặt tên namespaces

Đặt tên theo Pascal case nhưng phản ảnh được công việc mà form đó thực hiện

VD : QuanLyDienNuoc , ThongTin , QuanLyPhong

3.4 Qui t c đ t tên ki u d li u ắc đặt tên namespaces ặt tên namespaces ểu dữ liệu ữ liệu ệu

Đặt tên theo Pascal case nhưng phản ảnh được nội dung cũng như dữ liệu mà file đó lưu trữ , Nếu tên là từ viết tắt thì sử dụng theo Upper case

VD : RangBuoc.xml , KTX.mdf

3.5 Qui t c đ t tên ki u Enum ắc đặt tên namespaces ặt tên namespaces ểu dữ liệu

Giá trị kiểu Enum được kế thừa từ lớp Enum Sau đây là những quy tắc đặt tên cho

enumerations:

 Sử dụng cú pháp Pascal cho kiểu Enum và giá trị tên

 Hạn chế viết tắt

 Không sử dụng hậu tố Enum trong tên kiểu Enum

 Sử dụng tên số ít cho hầu hết những kiểu Enum

Ví dụ, không đặt tên Protocols mà đặt là Protocol

publicenum Protocol

Trang 10

 Thường xuyên thêm FlagsAttribute đến một trường bit kiểu Enum.

3.6 Qui t c đ t tên cho tr ắc đặt tên namespaces ạt tên cho trường Static ường Static ng Static

 Sử dụng danh từ, cụm danh từ hoặc danh từ viết tắt

 Sử dụng cú pháp Pascal

 Không sử dụng cú pháp Hungarian cho tên trường static

 Nên sử dụng thuộc tính static thay vì public static khi có thể

3.7 Qui t c đ t tên cho tham bi n ắc đặt tên namespaces ặt tên namespaces ến

Không sử dụng tham biến có sẵn Đây là những tham biến riêng

 Không sử dụng tên tham biến theo cú pháp Hungari

Ví dụ về tên tham biến đúng:

type GetType(typeName As string)

string Format(string format, object args())

3.8 Qui t c đ t tên cho thu c tính ắc đặt tên namespaces ặt tên namespaces ộc tính

 Sử dụng danh từ hoặc cụm danh từ

Trang 11

 Sử dụng cú pháp Pascal.

 Không sử dụng cú pháp Hungari

 Thuộc tính được tạo phải có tên giống với kiểu bên dưới của nó Chằng hạn, thuộc tính Color, thì kiểu của thuộc tính là Color

Ví dụ về cách đặt tên cho thuộc tính:

public class SampleClass

Ví dụ trình bày thuộc tính với tên giống như kiểu

public enum Color

Ví dụ sai vì thuộc tính Color mà kiểu là Integer

public enum Color

Trang 12

3.9 Qui t c đ t tên bi n ắc đặt tên namespaces ặt tên namespaces ến

Đặt tên biến miêu tả được nội dung/mục đích sử dụng của nó

Tránh đặt tên biến với chỉ một chữ cái, chẳng hạn như i, t thay vào đó ta nên đặt tên là index, temp

Không viết tắt, ví dụ không được viết là num thay cho number

Sử dụng danh từ hoặc cụm danh từ

 Sử dụng cú pháp Lạc đà

 Sử dụng cú pháp Hungari cho kiểu nguyên thủy

 Do not use Hungarian notation for scope of variables

 Sử dụng objCommand, objConn, param như là những tên chuẩn cho SQLCommand và SQLConnection, SQLParameter Sử dụng da như là tên cho SqlDataAdapter ad ds cho đối tượng DataSet

 Sử dụng i, j, k cho biến đếm

Ví dụ về cách đặt tên đúng cho biến có kiểu dữ liệu nguyên thủy

Trang 13

int Int32 int intQuantity

3.10 Qui t c đ t tên bi n toàn c c ắc đặt tên namespaces ặt tên namespaces ến ục

Sử dụng kiểu Camel để đặt tên cho biến cục bộ và đối số của các hàm/phương thức:

public void Method(int myArgument)

Trang 14

private int m_SecondVariable;

Đây là dòng trống public void FirstMethod()

Khai báo biến cục bộ gần nhất so với vị trí lần đầu tiên nó được sử dụng:

public List<int> GetRandomIntegersList(int numberOfintegers)

{

List<int> randomIntegerslist = new List<int>();

Random randomCreator = new Random(DateTime.Now.Millisecond);

for (int i = 0; i < numberOfintegers; ++i)

3.11 Qui t c đ t tên s ki n ắc đặt tên namespaces ặt tên namespaces ự kiện ệu

Những luật sau chỉ ra cách đặt tên cho các sự kiện:

 Cú pháp Pascal

 Không sử dụng cú pháp Hungari

 Sử dụng một hậu tố EventHandler trong tên của sự kiện Ví dụ sau khai báo sự kiện Close đúng

public delegate CloseEventHandler(object sender, EventArgs arguments)

Chỉ định 2 biến được đặt tên là sender và e Biến sender thể hiện đối tượng bắt lấy sự

kiện Biến sender luôn có kiểu object, mặc dù nó có thể sử dụng những kiểu khác Tình trạng được kết hợp với sự kiện thì được tóm lượt trong trường hợp của một lớp sự kiện

được đặt tên là e

 Tên đối số của một lớp sự kiện với hậu tố EventArgs

Trang 15

 Đặt tên sự kiện bằng một động từ Ví dụ, cách đặt tên sự kiện đúng Clicked, Painting, và DroppedDown

 Sử dụng gerund (Động từ thêm ing) để tạo ra một sự kiện để miêu tả khái niệm của

pre-event, Và dùng động từ quá khứ để thể hiện post-event Ví dụ, sự kiện Close có thể bị xóa

bỏ nên có các sự kiện Closing và Closed Không sử dụng cách đặt tên sau:

BeforeXxx/AfterXxx

 Không sử dụng tiền tố hay hậu tố cho việc khai báo sự kiện Ví dụ, sử dụng Close thay vì OnClose

 Tóm lại, bạn nên cung cấp một phương thức protected gọi là OnXxx trong những kiểu sự

kiện có thể bị override từ những lớp ban đầu Phương thức này nên chỉ có biến sự kiện e

Ví dụ sau minh họa sự kiện với các biến

public delegate MouseEventHandler(object sender, MouseEventArgs e ){}

Ví dụ sau minh họa cách đặt tên đúng cho lớp sự kiện

public class MouseEventArgs: EventArgs

Trang 16

3.12 B ng qui t c control prefix Name ảng qui tắc control prefix Name ắc đặt tên namespaces

Combo box, drop-down list box cbo cboEnglish

Control (used within procedures when

the specific type is unknown)

Trang 17

Control type Prefix Example

Hierarchical flex grid flex flexOrders

Trang 18

Control type Prefix Example

3.13 Qui t c đ t tên h ng s ắc đặt tên namespaces ặt tên namespaces ằng số ố

Sử dụng kiểu viết hoa để đặt tên cho hằng số Ví dụ:

Const MIN_QUAL = 25

3.14 Qui t c l p k th a Attribute ắc đặt tên namespaces ớp ến ừa Attribute

Sử Hậu tố của lớp kế thừa từ Attribute là Attribute:

public class MyCustomAttribute: Attribute

{

………

}

3.15 Qui t c k th a Exception ắc đặt tên namespaces ến ừa Attribute

Sử Hậu tố của lớp kế thừa từ Exception là Exception:

public class MyCustom Exception: Exception

{

………

}

Trang 19

3.16 Qui t c đ t tên hàm ph ắc đặt tên namespaces ặt tên namespaces ương thức ng th c ức

Đặt tên hàm/phương thức theo kiểu Động từ + Đối tượng (verbobject):

public void ShowDialog()

Trang 20

Tránh khai báo kiểu dữ liệu dạng "namespace"[".subnamespace.[ ]"]."kiểu dữ liệu" bằng cách sử dụng từ khóa using:

3.18 Tránh đ hàm tr v giá tr boolean trong m nh đ đi u ki n, hãy đ t m t ểu dữ liệu ảng qui tắc control prefix Name ề giá trị boolean trong mệnh đề điều kiện, hãy đặt một ị boolean trong mệnh đề điều kiện, hãy đặt một ệu ề giá trị boolean trong mệnh đề điều kiện, hãy đặt một ề giá trị boolean trong mệnh đề điều kiện, hãy đặt một ệu ặt tên namespaces ộc tính

bi n c c b và ki m tra nó vd : ến ục ộc tính ểu dữ liệu

Trang 21

//Đúng

bool ok = IsEverythingOk();

if(ok)

{}

3.19 Luôn s d ng m ng b t đ u t 0; ử dụng mảng bắt đầu từ 0; ục ảng qui tắc control prefix Name ắc đặt tên namespaces ầu từ 0; ừa Attribute

Trong tập hợp có chỉ mục(index), chỉ mục bắt đầu từ không.

3.20 Luôn luôn kh i t o m ng reference type b ng vòng l p for ởi tạo mảng reference type bẳng vòng lặp for ạt tên cho trường Static ảng qui tắc control prefix Name ẳng vòng lặp for ặt tên namespaces

Public class MyClass()

{}

Const int ArrarSize = 100;

MyClass[] array = new MyClass[ArraySize];

For(int index = 0; index < array.Length; index++)

{

Array[index] = new MyClass[]

}

III QUI ƯỚC CODE FORMATS

1 Qui ước về Tab

Sử dụng tab chèn vào đầu dòng code để định hình, không sử dụng khoảng trắng để thay thế tab Số lượng tab chèn vào đầu mỗi dòng code không nên quá 4

2 Qui ước về Block code

Các Block code cùng cấp phải trong cùng 1 tab

3 Qui ước Khoảng cách

Nên đặt khoảng cách sau dấu phẩy hoặc chấm phẩy

Ngày đăng: 20/03/2013, 07:30

TỪ KHÓA LIÊN QUAN

w