SlideShare une entreprise Scribd logo
1  sur  13
Télécharger pour lire hors ligne
CHU N VI T CODE VÀ THI T Ẩ Ế Ế KẾ GIAO DIỆN TRONG C# 
(Bản tóm tắt) 
I. QUY ĐỊNH ĐẶT TÊN 
- Pascal BackColor 
- Camel backColor 
- Uppercase BACKCOLOR 
I.1. Tên biến 
- Kiểu Camel 
I.2. Tên hằng số 
- Sử dụng Uppercase 
- Gạch nối giữa các từ 
I.3. Tên kiểu Enum 
- Tên kiểu Pascal 
- Không tiền, hậu tố 
I.4. Tham số 
- Tên kiểm Camel 
I.5. Tên thuộc tính 
- Tên kiểu Pascal 
I.6. Tên phương thức 
- Tên kiểu Pascal 
I.7. Sự kiện 
- Kiểu Pascal 
- Thường có hậu tố: EventHandler 
I.8. Tên lớp 
- Tên kiểu Pascal 
- Không sử dụng gạch chân
I.9. Giao diện 
- Tên kiểu Pascal 
- Bắt đầu bằng tiền tố “I” 
I.10. Không gian tên 
- Cú pháp: [Tên công ty].[Tên Công nghệ][.Đặc trưng][.Thiết kế] 
Ví dụ: SDGVN.Web.Utility 
SDGVN.Web.ModuleBase 
I.11. Tên tiền tố của các điều khiển 
Control type Prefix Example 
Panel pnl pnlGroup 
Check box chk chkReadOnly 
Combo box, drop-down list box cbo cboEnglish 
Command button btn btnExit 
Common dialog dlg dlgFileOpen 
Control (used within procedures 
ctr ctrCurrent 
when the specific type is unknown) 
Data dat datBiblio 
Data-bound combo box cbo cboLanguage 
Data-bound grid grd grdQueryResult 
Data-bound list box lst lstJobType 
Repeater rpt drpLocation 
Date Time Picker dtp dtpPublished 
Form frm frmEntry 
Frame fra fraLanguage 
DataGridView dgv dgvPrices 
GridView grd grdProduct 
DataList dtl dtlOrders
Control type Prefix Example 
Horizontal scroll bar hsb hsbVolume 
Image img imgIcon 
ImageList ils ilsAllIcons 
ImageButton ibt ibtNext 
HyperLink hpl hplHome 
LinkButton lbt lbtClick 
Label lbl lblHelpMessage 
List box lst lstPolicyCodes 
ListView lvw lvwHeadings 
Menu mnu mnuFileOpen 
Option button opt optGender 
Picture box pic picVGA 
Picture clip clp clpToolbar 
ProgressBar prg prgLoadFile 
RichTextBox rtf rtfReport 
Slider sld sldScale 
Spin spn spnPages 
StatusBar sta staDateTime 
Text Box txt txtLastName 
Timer tmr tmrAlarm 
Toolbar tlb tlbActions 
TreeView tre treOrganization 
UpDown upd updDirection 
Vertical scroll bar vsb vsbRate 
SqlDataSource sql sqlAccounts 
LinqDataSource linq linqCategories
II. THIẾT KẾ GIAO DIỆN 
II.1. Thiết kế form 
Thiết lập Option Layout Settings của Form như sau: 
 Quy định kích thước Form 
Luôn cố gắng đảm bảo tỷ lệ 4x3: Form rộng 4 thì cao 3 để đảm bảo cân xứng 
với màn hình. 
 Quy định kích thước Control 
o Chiều cao: sử dụng chiều cao mặc định sẵn của Control. 
Trường hợp đặc biệt: 
 TextBox multi-lines: đảm bảo không bị che 1 phần của dòng 
 Button có image: đảm bảo hiển thị vừa đủ image 16x16 pixel 
o Độ rộng: tùy độ rộng của text 
 Đảm bảo nguyên tắc các TexBox, Combo trên cùng một Form có độ 
rộng thống nhất. 
 Đảm bảo nguyên tắc các Button trên tất cả các Form có độ rộng thống 
nhất, text trên Button không nên vượt quá 2 từ. 
 Nếu text trên Button gồm 2 từ trở xuống: bắt buộc sử dụng độ rộng 
mặc định (75). 
o Đối với những trường có độ rộng cố định hoặc ít khi thay đổi (ví dụ như 
trường có kiểu dữ liệu là Date thì độ rộng là cố định là 10 ký tự), tuân thủ 
theo quy định sau:
 Đ r ng control đ c binding v i tr ng này ộ ộ ượ ớ ườ chỉ được phép rộng đủ 
để hiện thị hết thông tin trong đó. 
 Không được để độ rộng control vượt quá độ rộng của trường. 
o Lưu ý: Label đặt AutoSize=FALSE, TextBox đặt AutoSize=TRUE 
 Quy định khoảng cách giữa các Control 
o Các Control cách mép Form 01 ô grid (cả 4 phía). 
o TextBox, ComboBox cách Label dài nhất 01 ô grid 
o Các Control cách nhau 01 ô grid cả chiều dọc và ngang.
Riêng tr ng ườ hợp sử dụng GroupBox có caption thì các Control bên trong 
GroupBox cách mép trên của GroupBox 02 ô grid. GroupBox không có caption 
khoảng cách vẫn là 1 ô grid.
 Diện mạo Control 
o Font & Color: sử dụng thiết lập mặc định. Chỉ thay đổi khi yêu cầu thiết kế 
chỉ rõ. 
o Hot track: thiết lập Hot track cho Button, Combo và DropDown. 
o Căn lề Text trên Control: 
 Chiều ngang (HAlign): 
· Chữ căn trái 
· Số căn phải 
· Riêng với Button thì luôn căn giữa. 
 Chiều dọc (VAlign): căn giữa (Middle) 
 Dóng Control 
o Label: dóng trái 
o Textbox, Combo: dóng đều hai bên 
 Tab Order: 
o Phải thiết lập Tab Order trên mọi giao diện (Form, Control, …) theo nguyên 
tắc: từ trái sang phải, từ trên xuống dưới. 
o Yêu cầu bắt buộc thiết lập TabOrder theo đúng thứ tự cho mọi Control trên 
Form, kể cả Control không focus vào được như Label, GroupBox, hay Control 
invisible. Lưu ý tuân thủ tuyệt đối quy định này vì nó phục vụ nhiều mục đích 
quan trọng như tạo shortcut key, valid required data, … 
 Anchor & Dock: phải thiết lập Anchor và Dock cho Control trên các Form, Container 
không cố định kích thước (Sizable). 
 Với thông tin yêu cầu người dùng không dược bỏ trống mà bắt buộc nhập 
(AllowNull = FALSE) thì Label cho thông tin đó phải sử dụng ký hiệu “(*)” ở cuối 
và thiết lập shortcut key. 
II.2. Quy định khi tạo MessageBox 
- Caption: sử dụng Application.ProductName 
- Icon: 
· MessageBoxIcon.Exclamation: dùng cho các trường hợp sau 
o Cảnh báo lỗi 
o Cảnh báo xóa dữ liệu 
o Cảnh báo nhập thiếu, nhập sai dữ liệu 
· MessageBoxIcon.Information: dùng cho các thông báo không có tính chất 
cảnh báo, ví dụ Kết quả Import, Thông tin về CSDL, …
- Nội dung Message: không được phép viết trực tiếp nội dung message mà phải dùng 
Resource (sử sụng hàm String.Format để truyền tham số cho Resource nếu cần). 
II.3. Quy tắc viết mô tả (comment) cho code 
Sử dụng tiếng Việt có dấu (Unicode) để viết comment. 
Comment cho Module, Class 
Mỗi Module, Class cần có mô tả ngắn về mục đích của Module hay Class đó. Nội dung 
gồm: 
Mục đích: Module hay Class thực hiện những công việc gì. 
Người lập: Người tạo Module hay Class 
Những biến/hàm quan trọng (không bắt buộc): Liệt kê tên các biến và hàm quan trọng 
trong Module/Class 
Comment cho Method và Event 
- Tất cả các Method và Event phải có comment. 
- Comment cho Method/Event gồm hai phần: 
o Phần 1 (không bắt buộc): mô tả mục đích và diễn giải ngắn gọn ý nghĩa 
các tham số đầu vào, đầu ra. 
Lưu ý: mô tả Method đó làm gì (What), không mô tả Method đó thực hiện 
thế nào (How). 
Từ VC# 2005 trở đi, Microsoft cung cấp sẵn một macro dành cho việc 
viết comment mục đích. Sử dụng như sau: gõ liên tiếp 3 dấu nháy đơn (‘) 
trên đầu mỗi Method. 
Lập trình viên có thể không cần viết phần mô tả mục đích này với các 
Method/Event đơn giản, không phức tạp. 
o Phần 2 (bắt buộc): ghi thông tin về history tạo và sửa Method/Event đó 
(người tạo/ngày tạo, người sửa/ngày sửa). Thông tin này bắt buộc phải có 
với mọi Method/Event. 
- Mẫu comment cho Method/Event đơn giản: 
// Created by (người tạo) – (ngày/tháng/năm tạo): diễn giải ngắn gọn mục đích 
// Modified by (người sửa 1) – (ngày/tháng/năm sửa 1): diễn giải việc sửa 1 
// Modified by (người sửa 2) – (ngày/tháng/năm sửa 2): diễn giải việc sửa 2 
//…
// Modified by (ng i s a n) – (ngày/tháng/năm s a ườ ử ử n): diễn giải việc sửa n 
Ví dụ 
// Created by lhhoa - 20/02/2008: hàm lấy khoảng thời gian là ngày đầu và ngày cuối của 
tháng trước 
// Modified by nvkieu - 25/02/2008: sửa lỗi gì đó 
// Modified by nqhoang - 27/02/3008: bổ sung gì đó 
private void GetDateLastMonth(fromDate datetime, toDate datetime, currentMonth int, 
currentYear int) 
{ 
if (currentMonth == 1) 
{ 
fromDate = DateSerial(currentYear - 1, 12, 1); 
toDate = DateSerial(currentYear - 1, 12, DaysInMonth(currentYear - 1, 12)); 
} 
else 
{ 
fromDate = DateSerial(currentYear, currentMonth - 1, 1); 
toDate = DateSerial(currentYear, currentMonth - 1, DaysInMonth(currentYear, 
currentMonth - 1)); 
} 
……………………………. 
} 
- Mẫu comment cho Method/Event phức tạp: 
/// <summary> 
/// Diễn giải mục đích
///</summary> 
///<param name="Tham s 1">Di n gi i cho ố ễ ả Tham số 1</param> 
///<param name="Tham số 2">Diễn giải cho Tham số 2</param> 
/// … 
/// <param name="Tham số n">Diễn giải cho Tham số n</param> 
/// <remarks>Nhận xét (nếu có)</remarks> 
/// Created by (người tạo) – (ngày/tháng/năm tạo) 
/// Modified by (người sửa 1) – (ngày/tháng/năm sửa 1): diễn giải việc sửa 1 
/// Modified by (người sửa 2) – (ngày/tháng/năm sửa 2): diễn giải việc sửa 2 
/// … 
/// Modified by (người sửa n) – (ngày/tháng/năm sửa n): diễn giải việc sửa n 
Ví dụ: 
/// <summary> 
/// Hàm lấy khoảng thời gian là ngày đầu và ngày cuối của tháng trước. 
/// </summary> 
/// <param name="fromDate">Ngày đầu tháng trước</param> 
/// <param name="toDate">Ngày cuối tháng trước</param> 
/// <param name="currentMonth">Tháng hiện tại</param> 
/// <param name="currentYear">Năm hiện tại</param> 
/// <remarks></remarks> 
/// Created by lhhoa - 20/02/2008 
/// Modified by nvkieu - 25/02/2008: sửa lỗi gì đó 
/// Modified by nqhoang - 27/02/3008: bổ sung gì đó 
private void GetDateLastMonth(fromDate datetime, toDate datetime, currentMonth int,
currentYear int) 
{ 
if (currentMonth == 1) 
{ 
fromDate = DateSerial(currentYear - 1, 12, 1); 
toDate = DateSerial(currentYear - 1, 12, DaysInMonth(currentYear - 1, 12)); 
} 
else 
{ 
fromDate = DateSerial(currentYear, currentMonth - 1, 1); 
toDate = DateSerial(currentYear, currentMonth - 1, DaysInMonth(currentYear, 
currentMonth - 1)); 
} 
……………………………. 
} 
Comment cho đoạn Code 
- Những đoạn code phức tạp cần có comment gắn liền bên trên để chú giải. 
- Những đoạn code được sửa đổi (modified), bổ sung (added) hoặc rem (removed) 
bởi người không phải tác giả cần có comment rõ ngay tại nơi sửa đổi, bổ sung: 
người sửa, ngày sửa, mục đích. 
- Comment cho đoạn code áp dụng bắt buộc với các Base Form/Base Class/Base 
Control. 
II.4. Quy tắc phân nhóm (region) khi coding: 
Phải sử dụng Region phân nhóm code để tiện cho việc sửa đổi, bảo trì. 
Phân nhóm code theo cấu trúc như sau: (theo thứ tự bắt buộc, nhưng không bắt buộc có 
đủ tất cả các region)
Declaration 
Constructor 
Property 
Method/Function 
Event 
Tùy theo yêu c u c a các form, class và module, l p trình viên ầ ủ ậ có thể chia nhỏ các 
Region chính trên thành các sub-region. VD: region Method/Function có thể chứa các 
region con sau: 
Method/Function 
Public 
Overridable (trường hợp là base form/class) 
Override (trường hợp là derive form/class) 
Private 
Other 
Trường hợp form hoặc class có sử dụng các component độc lập (Security, Document, 
MassEmail,…) thì phải tạo các Region riêng cho từng component, chứa toàn bộ code 
liên quan đến việc tương tác với các component đó. 
II.5. Quy định bẫy lỗi khi coding 
- Bắt buộc bẫy lỗi (sử dụng try … catch) trong tất cả các Event của Form và 
Control trên Form. 
- Nghiêm cấm sử dụng cú pháp try … catch để che dấu lỗi (không xử lý gì sau từ 
khóa catch).
Bad!!! 
Good!!! 
II.6. Quy định thiết kế Dataset: 
- Tên của Dataset khi visual design đặt như sau: “Dataset” + Mục đích. VD: 
DatasetDictionary, DatasetCAPayment, … 
- Số lượng DataTable trong một Dataset: quy định từ 10 trở xuống. Mỗi Dataset chỉ 
được phép có tối đa 10 DataTable. Khi thiết kế phải tách Dataset để đảm bảo 
nguyên tắc này. Nếu một Dataset có nhiều DataTable thì tốc độ load/save dữ liệu 
sẽ bị ảnh hưởng nghiêm trọng.

Contenu connexe

Tendances

NHỮNG TÁC ĐỘNG CỦA CÁCH MẠNG CÔNG NGHIỆP 4.0 ĐỐI VỚI GIÁO DỤC VIỆT NAM. TS. B...
NHỮNG TÁC ĐỘNG CỦA CÁCH MẠNG CÔNG NGHIỆP 4.0 ĐỐI VỚI GIÁO DỤC VIỆT NAM. TS. B...NHỮNG TÁC ĐỘNG CỦA CÁCH MẠNG CÔNG NGHIỆP 4.0 ĐỐI VỚI GIÁO DỤC VIỆT NAM. TS. B...
NHỮNG TÁC ĐỘNG CỦA CÁCH MẠNG CÔNG NGHIỆP 4.0 ĐỐI VỚI GIÁO DỤC VIỆT NAM. TS. B...Bùi Quang Xuân
 
Bài giảng kỹ thuật điều khiển tự động
Bài giảng kỹ thuật điều khiển tự độngBài giảng kỹ thuật điều khiển tự động
Bài giảng kỹ thuật điều khiển tự độngNguyễn Nam Phóng
 
Bài tập kiến trúc máy tính
Bài tập kiến trúc máy tínhBài tập kiến trúc máy tính
Bài tập kiến trúc máy tínhHa Nguyen
 
RichTetxtBox control
RichTetxtBox controlRichTetxtBox control
RichTetxtBox controlAn Nguyen
 
Bai giang cau truc may tinh
Bai giang cau truc may tinhBai giang cau truc may tinh
Bai giang cau truc may tinhDong Van
 
Slide he dieu hanh
Slide he dieu hanhSlide he dieu hanh
Slide he dieu hanhPhan Duy
 
Bài 3 : Các ràng buộc toàn vẹn dữ liệu - SQL server
Bài 3 : Các ràng buộc toàn vẹn dữ liệu - SQL serverBài 3 : Các ràng buộc toàn vẹn dữ liệu - SQL server
Bài 3 : Các ràng buộc toàn vẹn dữ liệu - SQL serverMasterCode.vn
 
Giáo trình c++ full tiếng việt
Giáo trình c++ full tiếng việtGiáo trình c++ full tiếng việt
Giáo trình c++ full tiếng việtMôi Trường Việt
 
Đề thi môn công nghệ phần mềm
Đề thi môn công nghệ phần mềmĐề thi môn công nghệ phần mềm
Đề thi môn công nghệ phần mềmLenhHoXung283
 
Bài TL : Xây dựng Website nghe nhạc cạnh tranh với mp3.zing.vn
Bài TL : Xây dựng Website nghe nhạc cạnh tranh với mp3.zing.vnBài TL : Xây dựng Website nghe nhạc cạnh tranh với mp3.zing.vn
Bài TL : Xây dựng Website nghe nhạc cạnh tranh với mp3.zing.vnĐô Dương Tuấn
 
KTCT- 5.3 Các quan hệ lợi ích kinh tế ở Việt Nam.pptx
KTCT- 5.3 Các quan hệ lợi ích kinh tế ở Việt Nam.pptxKTCT- 5.3 Các quan hệ lợi ích kinh tế ở Việt Nam.pptx
KTCT- 5.3 Các quan hệ lợi ích kinh tế ở Việt Nam.pptxHongYn889320
 
Báo cáo thí nghiệm cơ sở máy cnc đh bách khoa hà nội 5868537
Báo cáo thí nghiệm cơ sở máy cnc đh bách khoa hà nội 5868537Báo cáo thí nghiệm cơ sở máy cnc đh bách khoa hà nội 5868537
Báo cáo thí nghiệm cơ sở máy cnc đh bách khoa hà nội 5868537jackjohn45
 
Giải Ngân Hàng Đảm Bảo Chất Lượng Phần Mềm PTIT - SQA
Giải Ngân Hàng Đảm Bảo Chất Lượng Phần Mềm PTIT - SQAGiải Ngân Hàng Đảm Bảo Chất Lượng Phần Mềm PTIT - SQA
Giải Ngân Hàng Đảm Bảo Chất Lượng Phần Mềm PTIT - SQAPopping Khiem - Funky Dance Crew PTIT
 
Danh Sach Lien Ket
Danh Sach Lien KetDanh Sach Lien Ket
Danh Sach Lien KetTony Nhân
 
Bai 4 bieu dien do thi va thuat toan tim kiem
Bai 4   bieu dien do thi va thuat toan tim kiemBai 4   bieu dien do thi va thuat toan tim kiem
Bai 4 bieu dien do thi va thuat toan tim kiemDuy Vọng
 
Báo cáo Đồ án tốt nghiệp
Báo cáo Đồ án tốt nghiệpBáo cáo Đồ án tốt nghiệp
Báo cáo Đồ án tốt nghiệpDanh Huỳnh
 
Thêm sửa-xóa-combobox - c#
Thêm sửa-xóa-combobox - c#Thêm sửa-xóa-combobox - c#
Thêm sửa-xóa-combobox - c#Văn Dũng
 

Tendances (20)

NHỮNG TÁC ĐỘNG CỦA CÁCH MẠNG CÔNG NGHIỆP 4.0 ĐỐI VỚI GIÁO DỤC VIỆT NAM. TS. B...
NHỮNG TÁC ĐỘNG CỦA CÁCH MẠNG CÔNG NGHIỆP 4.0 ĐỐI VỚI GIÁO DỤC VIỆT NAM. TS. B...NHỮNG TÁC ĐỘNG CỦA CÁCH MẠNG CÔNG NGHIỆP 4.0 ĐỐI VỚI GIÁO DỤC VIỆT NAM. TS. B...
NHỮNG TÁC ĐỘNG CỦA CÁCH MẠNG CÔNG NGHIỆP 4.0 ĐỐI VỚI GIÁO DỤC VIỆT NAM. TS. B...
 
Bài giảng kỹ thuật điều khiển tự động
Bài giảng kỹ thuật điều khiển tự độngBài giảng kỹ thuật điều khiển tự động
Bài giảng kỹ thuật điều khiển tự động
 
Bài tập kiến trúc máy tính
Bài tập kiến trúc máy tínhBài tập kiến trúc máy tính
Bài tập kiến trúc máy tính
 
RichTetxtBox control
RichTetxtBox controlRichTetxtBox control
RichTetxtBox control
 
Bai giang cau truc may tinh
Bai giang cau truc may tinhBai giang cau truc may tinh
Bai giang cau truc may tinh
 
Slide he dieu hanh
Slide he dieu hanhSlide he dieu hanh
Slide he dieu hanh
 
Bài 3 : Các ràng buộc toàn vẹn dữ liệu - SQL server
Bài 3 : Các ràng buộc toàn vẹn dữ liệu - SQL serverBài 3 : Các ràng buộc toàn vẹn dữ liệu - SQL server
Bài 3 : Các ràng buộc toàn vẹn dữ liệu - SQL server
 
Giáo trình c++ full tiếng việt
Giáo trình c++ full tiếng việtGiáo trình c++ full tiếng việt
Giáo trình c++ full tiếng việt
 
Đề thi môn công nghệ phần mềm
Đề thi môn công nghệ phần mềmĐề thi môn công nghệ phần mềm
Đề thi môn công nghệ phần mềm
 
Bài TL : Xây dựng Website nghe nhạc cạnh tranh với mp3.zing.vn
Bài TL : Xây dựng Website nghe nhạc cạnh tranh với mp3.zing.vnBài TL : Xây dựng Website nghe nhạc cạnh tranh với mp3.zing.vn
Bài TL : Xây dựng Website nghe nhạc cạnh tranh với mp3.zing.vn
 
KTCT- 5.3 Các quan hệ lợi ích kinh tế ở Việt Nam.pptx
KTCT- 5.3 Các quan hệ lợi ích kinh tế ở Việt Nam.pptxKTCT- 5.3 Các quan hệ lợi ích kinh tế ở Việt Nam.pptx
KTCT- 5.3 Các quan hệ lợi ích kinh tế ở Việt Nam.pptx
 
Báo cáo thí nghiệm cơ sở máy cnc đh bách khoa hà nội 5868537
Báo cáo thí nghiệm cơ sở máy cnc đh bách khoa hà nội 5868537Báo cáo thí nghiệm cơ sở máy cnc đh bách khoa hà nội 5868537
Báo cáo thí nghiệm cơ sở máy cnc đh bách khoa hà nội 5868537
 
Giải Ngân Hàng Đảm Bảo Chất Lượng Phần Mềm PTIT - SQA
Giải Ngân Hàng Đảm Bảo Chất Lượng Phần Mềm PTIT - SQAGiải Ngân Hàng Đảm Bảo Chất Lượng Phần Mềm PTIT - SQA
Giải Ngân Hàng Đảm Bảo Chất Lượng Phần Mềm PTIT - SQA
 
Tìm hiểu về Joomla
Tìm hiểu về Joomla Tìm hiểu về Joomla
Tìm hiểu về Joomla
 
Danh Sach Lien Ket
Danh Sach Lien KetDanh Sach Lien Ket
Danh Sach Lien Ket
 
Bai 4 bieu dien do thi va thuat toan tim kiem
Bai 4   bieu dien do thi va thuat toan tim kiemBai 4   bieu dien do thi va thuat toan tim kiem
Bai 4 bieu dien do thi va thuat toan tim kiem
 
Chuong2 cấu trúc phần cứng 8051
Chuong2 cấu trúc phần cứng 8051Chuong2 cấu trúc phần cứng 8051
Chuong2 cấu trúc phần cứng 8051
 
Báo cáo Đồ án tốt nghiệp
Báo cáo Đồ án tốt nghiệpBáo cáo Đồ án tốt nghiệp
Báo cáo Đồ án tốt nghiệp
 
Thêm sửa-xóa-combobox - c#
Thêm sửa-xóa-combobox - c#Thêm sửa-xóa-combobox - c#
Thêm sửa-xóa-combobox - c#
 
Đề tài: Mô hình điều khiển, giám sát bãi giữ xe ô tô tự động, 9đ
Đề tài: Mô hình điều khiển, giám sát bãi giữ xe ô tô tự động, 9đĐề tài: Mô hình điều khiển, giám sát bãi giữ xe ô tô tự động, 9đ
Đề tài: Mô hình điều khiển, giám sát bãi giữ xe ô tô tự động, 9đ
 

En vedette

Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#An Nguyen
 
Bài 3: Lập trình giao diện điều khiển & Xử lý sự kiện - Lập trình winform - G...
Bài 3: Lập trình giao diện điều khiển & Xử lý sự kiện - Lập trình winform - G...Bài 3: Lập trình giao diện điều khiển & Xử lý sự kiện - Lập trình winform - G...
Bài 3: Lập trình giao diện điều khiển & Xử lý sự kiện - Lập trình winform - G...MasterCode.vn
 
Bài 2: Lập trình hướng đối tượng & Collection - Lập trình winform - Giáo trìn...
Bài 2: Lập trình hướng đối tượng & Collection - Lập trình winform - Giáo trìn...Bài 2: Lập trình hướng đối tượng & Collection - Lập trình winform - Giáo trìn...
Bài 2: Lập trình hướng đối tượng & Collection - Lập trình winform - Giáo trìn...MasterCode.vn
 
C# Báo cáo môn lập trình hướng đối tượng - Xây dựng chương trinh quản lí sinh...
C# Báo cáo môn lập trình hướng đối tượng - Xây dựng chương trinh quản lí sinh...C# Báo cáo môn lập trình hướng đối tượng - Xây dựng chương trinh quản lí sinh...
C# Báo cáo môn lập trình hướng đối tượng - Xây dựng chương trinh quản lí sinh...Long Kingnam
 
Bài 3 Làm việc với vùng chọn & công cụ tạo vùng chọn trong PHOTOSHOP - Giáo t...
Bài 3 Làm việc với vùng chọn & công cụ tạo vùng chọn trong PHOTOSHOP - Giáo t...Bài 3 Làm việc với vùng chọn & công cụ tạo vùng chọn trong PHOTOSHOP - Giáo t...
Bài 3 Làm việc với vùng chọn & công cụ tạo vùng chọn trong PHOTOSHOP - Giáo t...MasterCode.vn
 
Bài 8 - Collection Generics - Nền tảng lập trình ứng dụng với C#
Bài 8 - Collection Generics - Nền tảng lập trình ứng dụng với C#Bài 8 - Collection Generics - Nền tảng lập trình ứng dụng với C#
Bài 8 - Collection Generics - Nền tảng lập trình ứng dụng với C#MasterCode.vn
 
Bài 10 - Threading - Nền tảng lập trình ứng dụng với C#
Bài 10 - Threading - Nền tảng lập trình ứng dụng với C#Bài 10 - Threading - Nền tảng lập trình ứng dụng với C#
Bài 10 - Threading - Nền tảng lập trình ứng dụng với C#MasterCode.vn
 
Bài 4 - Classes, objects và namespaces - Nền tảng lập trình ứng dụng với C#
Bài 4 - Classes, objects và namespaces - Nền tảng lập trình ứng dụng với C#Bài 4 - Classes, objects và namespaces - Nền tảng lập trình ứng dụng với C#
Bài 4 - Classes, objects và namespaces - Nền tảng lập trình ứng dụng với C#MasterCode.vn
 
Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theo
Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theoBài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theo
Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theoMasterCode.vn
 
Bài 6: Các cấu trúc dữ liệu đặc biệt: ngăn xếp, hàng đợi, cây - Giáo trình FPT
Bài 6: Các cấu trúc dữ liệu đặc biệt: ngăn xếp, hàng đợi, cây - Giáo trình FPTBài 6: Các cấu trúc dữ liệu đặc biệt: ngăn xếp, hàng đợi, cây - Giáo trình FPT
Bài 6: Các cấu trúc dữ liệu đặc biệt: ngăn xếp, hàng đợi, cây - Giáo trình FPTMasterCode.vn
 
Bài 4: NGÔN NGỮ TRUY VẤN CÓ CẤU TRÚC (SQL)
Bài 4: NGÔN NGỮ TRUY VẤN CÓ CẤU TRÚC (SQL)Bài 4: NGÔN NGỮ TRUY VẤN CÓ CẤU TRÚC (SQL)
Bài 4: NGÔN NGỮ TRUY VẤN CÓ CẤU TRÚC (SQL)MasterCode.vn
 
Bài 1: Tổng quan về cấu trúc và giải thuật - Giáo trình FPT
Bài 1: Tổng quan về cấu trúc và giải thuật - Giáo trình FPTBài 1: Tổng quan về cấu trúc và giải thuật - Giáo trình FPT
Bài 1: Tổng quan về cấu trúc và giải thuật - Giáo trình FPTMasterCode.vn
 
Lập trình sáng tạo creative computing textbook mastercode.vn
Lập trình sáng tạo creative computing textbook mastercode.vnLập trình sáng tạo creative computing textbook mastercode.vn
Lập trình sáng tạo creative computing textbook mastercode.vnMasterCode.vn
 
[Báo cáo] Bài tập lớn Ngôn ngữ lập trình: Quản lý thư viện
[Báo cáo] Bài tập lớn Ngôn ngữ lập trình: Quản lý thư viện[Báo cáo] Bài tập lớn Ngôn ngữ lập trình: Quản lý thư viện
[Báo cáo] Bài tập lớn Ngôn ngữ lập trình: Quản lý thư việnThe Nguyen Manh
 

En vedette (19)

Bài tập thực hành C#
Bài tập thực hành C#Bài tập thực hành C#
Bài tập thực hành C#
 
BTL Lập trình C#
BTL Lập trình C#BTL Lập trình C#
BTL Lập trình C#
 
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
 
Bai tap thuc hanh
Bai tap thuc hanhBai tap thuc hanh
Bai tap thuc hanh
 
Bài 3: Lập trình giao diện điều khiển & Xử lý sự kiện - Lập trình winform - G...
Bài 3: Lập trình giao diện điều khiển & Xử lý sự kiện - Lập trình winform - G...Bài 3: Lập trình giao diện điều khiển & Xử lý sự kiện - Lập trình winform - G...
Bài 3: Lập trình giao diện điều khiển & Xử lý sự kiện - Lập trình winform - G...
 
Dotnet
DotnetDotnet
Dotnet
 
Bài 2: Lập trình hướng đối tượng & Collection - Lập trình winform - Giáo trìn...
Bài 2: Lập trình hướng đối tượng & Collection - Lập trình winform - Giáo trìn...Bài 2: Lập trình hướng đối tượng & Collection - Lập trình winform - Giáo trìn...
Bài 2: Lập trình hướng đối tượng & Collection - Lập trình winform - Giáo trìn...
 
C# Báo cáo môn lập trình hướng đối tượng - Xây dựng chương trinh quản lí sinh...
C# Báo cáo môn lập trình hướng đối tượng - Xây dựng chương trinh quản lí sinh...C# Báo cáo môn lập trình hướng đối tượng - Xây dựng chương trinh quản lí sinh...
C# Báo cáo môn lập trình hướng đối tượng - Xây dựng chương trinh quản lí sinh...
 
Ngôn ngữ lập trình C#
Ngôn ngữ lập trình C#Ngôn ngữ lập trình C#
Ngôn ngữ lập trình C#
 
Bài 3 Làm việc với vùng chọn & công cụ tạo vùng chọn trong PHOTOSHOP - Giáo t...
Bài 3 Làm việc với vùng chọn & công cụ tạo vùng chọn trong PHOTOSHOP - Giáo t...Bài 3 Làm việc với vùng chọn & công cụ tạo vùng chọn trong PHOTOSHOP - Giáo t...
Bài 3 Làm việc với vùng chọn & công cụ tạo vùng chọn trong PHOTOSHOP - Giáo t...
 
Bài 8 - Collection Generics - Nền tảng lập trình ứng dụng với C#
Bài 8 - Collection Generics - Nền tảng lập trình ứng dụng với C#Bài 8 - Collection Generics - Nền tảng lập trình ứng dụng với C#
Bài 8 - Collection Generics - Nền tảng lập trình ứng dụng với C#
 
Bài 10 - Threading - Nền tảng lập trình ứng dụng với C#
Bài 10 - Threading - Nền tảng lập trình ứng dụng với C#Bài 10 - Threading - Nền tảng lập trình ứng dụng với C#
Bài 10 - Threading - Nền tảng lập trình ứng dụng với C#
 
Bài 4 - Classes, objects và namespaces - Nền tảng lập trình ứng dụng với C#
Bài 4 - Classes, objects và namespaces - Nền tảng lập trình ứng dụng với C#Bài 4 - Classes, objects và namespaces - Nền tảng lập trình ứng dụng với C#
Bài 4 - Classes, objects và namespaces - Nền tảng lập trình ứng dụng với C#
 
Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theo
Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theoBài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theo
Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theo
 
Bài 6: Các cấu trúc dữ liệu đặc biệt: ngăn xếp, hàng đợi, cây - Giáo trình FPT
Bài 6: Các cấu trúc dữ liệu đặc biệt: ngăn xếp, hàng đợi, cây - Giáo trình FPTBài 6: Các cấu trúc dữ liệu đặc biệt: ngăn xếp, hàng đợi, cây - Giáo trình FPT
Bài 6: Các cấu trúc dữ liệu đặc biệt: ngăn xếp, hàng đợi, cây - Giáo trình FPT
 
Bài 4: NGÔN NGỮ TRUY VẤN CÓ CẤU TRÚC (SQL)
Bài 4: NGÔN NGỮ TRUY VẤN CÓ CẤU TRÚC (SQL)Bài 4: NGÔN NGỮ TRUY VẤN CÓ CẤU TRÚC (SQL)
Bài 4: NGÔN NGỮ TRUY VẤN CÓ CẤU TRÚC (SQL)
 
Bài 1: Tổng quan về cấu trúc và giải thuật - Giáo trình FPT
Bài 1: Tổng quan về cấu trúc và giải thuật - Giáo trình FPTBài 1: Tổng quan về cấu trúc và giải thuật - Giáo trình FPT
Bài 1: Tổng quan về cấu trúc và giải thuật - Giáo trình FPT
 
Lập trình sáng tạo creative computing textbook mastercode.vn
Lập trình sáng tạo creative computing textbook mastercode.vnLập trình sáng tạo creative computing textbook mastercode.vn
Lập trình sáng tạo creative computing textbook mastercode.vn
 
[Báo cáo] Bài tập lớn Ngôn ngữ lập trình: Quản lý thư viện
[Báo cáo] Bài tập lớn Ngôn ngữ lập trình: Quản lý thư viện[Báo cáo] Bài tập lớn Ngôn ngữ lập trình: Quản lý thư viện
[Báo cáo] Bài tập lớn Ngôn ngữ lập trình: Quản lý thư viện
 

Similaire à Chuan viet code va thiet ke giao dien trong C#

Cai tien trong lenh t sql cua sql server 2008 (2)
Cai tien trong lenh t sql cua sql server 2008 (2)Cai tien trong lenh t sql cua sql server 2008 (2)
Cai tien trong lenh t sql cua sql server 2008 (2)khanhtoankmz
 
Cac ham va thu tuc trong pascal
Cac ham va thu tuc trong pascalCac ham va thu tuc trong pascal
Cac ham va thu tuc trong pascalVõ Tâm Long
 
Một số lệnh tắt trong auto cad và những lệnh hay trong autocad
Một số lệnh tắt trong auto cad và những lệnh hay trong autocadMột số lệnh tắt trong auto cad và những lệnh hay trong autocad
Một số lệnh tắt trong auto cad và những lệnh hay trong autocadTrung Lưu
 
Bài giảng ACCESS - VBA
Bài giảng ACCESS - VBABài giảng ACCESS - VBA
Bài giảng ACCESS - VBAhg4ever
 
Lect04 functions
Lect04 functionsLect04 functions
Lect04 functionsHồ Lợi
 
Bồi dưỡng HSG Tin chuyên đề thuật toán
Bồi dưỡng HSG Tin chuyên đề thuật toánBồi dưỡng HSG Tin chuyên đề thuật toán
Bồi dưỡng HSG Tin chuyên đề thuật toánNguyễn Đức
 
Meo lap trinh_tech24.vn
Meo lap trinh_tech24.vnMeo lap trinh_tech24.vn
Meo lap trinh_tech24.vnphiagame
 
Lap trinh c_tu_co_ban_den_nang_cao
Lap trinh c_tu_co_ban_den_nang_caoLap trinh c_tu_co_ban_den_nang_cao
Lap trinh c_tu_co_ban_den_nang_caoHuy Nguyễn
 
Lap trinh c_tu_co_ban_den_nang_cao
Lap trinh c_tu_co_ban_den_nang_caoLap trinh c_tu_co_ban_den_nang_cao
Lap trinh c_tu_co_ban_den_nang_caoBác Luân
 
Storedprocedure 140411073406-phpapp02
Storedprocedure 140411073406-phpapp02Storedprocedure 140411073406-phpapp02
Storedprocedure 140411073406-phpapp02huynhtrong774129
 
Tai lieu huong_dan_tu_hoc_visual_studio2010
Tai lieu huong_dan_tu_hoc_visual_studio2010Tai lieu huong_dan_tu_hoc_visual_studio2010
Tai lieu huong_dan_tu_hoc_visual_studio2010Nhat Linh Luong
 
Giáo trình vb.net
Giáo trình vb.netGiáo trình vb.net
Giáo trình vb.netHung Pham
 
Xây dựng mô hình gián đoạn của động cơ một chiều kích từ độc lập
Xây dựng mô hình gián đoạn của động cơ một chiều kích từ độc lậpXây dựng mô hình gián đoạn của động cơ một chiều kích từ độc lập
Xây dựng mô hình gián đoạn của động cơ một chiều kích từ độc lậpnataliej4
 

Similaire à Chuan viet code va thiet ke giao dien trong C# (20)

Cai tien trong lenh t sql cua sql server 2008 (2)
Cai tien trong lenh t sql cua sql server 2008 (2)Cai tien trong lenh t sql cua sql server 2008 (2)
Cai tien trong lenh t sql cua sql server 2008 (2)
 
Cac ham va thu tuc trong pascal
Cac ham va thu tuc trong pascalCac ham va thu tuc trong pascal
Cac ham va thu tuc trong pascal
 
Một số lệnh tắt trong auto cad và những lệnh hay trong autocad
Một số lệnh tắt trong auto cad và những lệnh hay trong autocadMột số lệnh tắt trong auto cad và những lệnh hay trong autocad
Một số lệnh tắt trong auto cad và những lệnh hay trong autocad
 
Bài giảng ACCESS - VBA
Bài giảng ACCESS - VBABài giảng ACCESS - VBA
Bài giảng ACCESS - VBA
 
Lect04 functions
Lect04 functionsLect04 functions
Lect04 functions
 
Bồi dưỡng HSG Tin chuyên đề thuật toán
Bồi dưỡng HSG Tin chuyên đề thuật toánBồi dưỡng HSG Tin chuyên đề thuật toán
Bồi dưỡng HSG Tin chuyên đề thuật toán
 
Unit Test
Unit TestUnit Test
Unit Test
 
Giới thiệu chung về plc s7 1200
Giới thiệu chung về plc s7 1200Giới thiệu chung về plc s7 1200
Giới thiệu chung về plc s7 1200
 
Meo lap trinh_tech24.vn
Meo lap trinh_tech24.vnMeo lap trinh_tech24.vn
Meo lap trinh_tech24.vn
 
Lap trinh c_tu_co_ban_den_nang_cao
Lap trinh c_tu_co_ban_den_nang_caoLap trinh c_tu_co_ban_den_nang_cao
Lap trinh c_tu_co_ban_den_nang_cao
 
Lap trinh c_tu_co_ban_den_nang_cao
Lap trinh c_tu_co_ban_den_nang_caoLap trinh c_tu_co_ban_den_nang_cao
Lap trinh c_tu_co_ban_den_nang_cao
 
Chuong 01
Chuong 01Chuong 01
Chuong 01
 
Chuong 01 mo dau
Chuong 01 mo dauChuong 01 mo dau
Chuong 01 mo dau
 
Bai 18
Bai 18Bai 18
Bai 18
 
Ctdl lab01
Ctdl lab01Ctdl lab01
Ctdl lab01
 
Storedprocedure 140411073406-phpapp02
Storedprocedure 140411073406-phpapp02Storedprocedure 140411073406-phpapp02
Storedprocedure 140411073406-phpapp02
 
Stored procedure
Stored procedureStored procedure
Stored procedure
 
Tai lieu huong_dan_tu_hoc_visual_studio2010
Tai lieu huong_dan_tu_hoc_visual_studio2010Tai lieu huong_dan_tu_hoc_visual_studio2010
Tai lieu huong_dan_tu_hoc_visual_studio2010
 
Giáo trình vb.net
Giáo trình vb.netGiáo trình vb.net
Giáo trình vb.net
 
Xây dựng mô hình gián đoạn của động cơ một chiều kích từ độc lập
Xây dựng mô hình gián đoạn của động cơ một chiều kích từ độc lậpXây dựng mô hình gián đoạn của động cơ một chiều kích từ độc lập
Xây dựng mô hình gián đoạn của động cơ một chiều kích từ độc lập
 

Chuan viet code va thiet ke giao dien trong C#

  • 1. CHU N VI T CODE VÀ THI T Ẩ Ế Ế KẾ GIAO DIỆN TRONG C# (Bản tóm tắt) I. QUY ĐỊNH ĐẶT TÊN - Pascal BackColor - Camel backColor - Uppercase BACKCOLOR I.1. Tên biến - Kiểu Camel I.2. Tên hằng số - Sử dụng Uppercase - Gạch nối giữa các từ I.3. Tên kiểu Enum - Tên kiểu Pascal - Không tiền, hậu tố I.4. Tham số - Tên kiểm Camel I.5. Tên thuộc tính - Tên kiểu Pascal I.6. Tên phương thức - Tên kiểu Pascal I.7. Sự kiện - Kiểu Pascal - Thường có hậu tố: EventHandler I.8. Tên lớp - Tên kiểu Pascal - Không sử dụng gạch chân
  • 2. I.9. Giao diện - Tên kiểu Pascal - Bắt đầu bằng tiền tố “I” I.10. Không gian tên - Cú pháp: [Tên công ty].[Tên Công nghệ][.Đặc trưng][.Thiết kế] Ví dụ: SDGVN.Web.Utility SDGVN.Web.ModuleBase I.11. Tên tiền tố của các điều khiển Control type Prefix Example Panel pnl pnlGroup Check box chk chkReadOnly Combo box, drop-down list box cbo cboEnglish Command button btn btnExit Common dialog dlg dlgFileOpen Control (used within procedures ctr ctrCurrent when the specific type is unknown) Data dat datBiblio Data-bound combo box cbo cboLanguage Data-bound grid grd grdQueryResult Data-bound list box lst lstJobType Repeater rpt drpLocation Date Time Picker dtp dtpPublished Form frm frmEntry Frame fra fraLanguage DataGridView dgv dgvPrices GridView grd grdProduct DataList dtl dtlOrders
  • 3. Control type Prefix Example Horizontal scroll bar hsb hsbVolume Image img imgIcon ImageList ils ilsAllIcons ImageButton ibt ibtNext HyperLink hpl hplHome LinkButton lbt lbtClick Label lbl lblHelpMessage List box lst lstPolicyCodes ListView lvw lvwHeadings Menu mnu mnuFileOpen Option button opt optGender Picture box pic picVGA Picture clip clp clpToolbar ProgressBar prg prgLoadFile RichTextBox rtf rtfReport Slider sld sldScale Spin spn spnPages StatusBar sta staDateTime Text Box txt txtLastName Timer tmr tmrAlarm Toolbar tlb tlbActions TreeView tre treOrganization UpDown upd updDirection Vertical scroll bar vsb vsbRate SqlDataSource sql sqlAccounts LinqDataSource linq linqCategories
  • 4. II. THIẾT KẾ GIAO DIỆN II.1. Thiết kế form Thiết lập Option Layout Settings của Form như sau:  Quy định kích thước Form Luôn cố gắng đảm bảo tỷ lệ 4x3: Form rộng 4 thì cao 3 để đảm bảo cân xứng với màn hình.  Quy định kích thước Control o Chiều cao: sử dụng chiều cao mặc định sẵn của Control. Trường hợp đặc biệt:  TextBox multi-lines: đảm bảo không bị che 1 phần của dòng  Button có image: đảm bảo hiển thị vừa đủ image 16x16 pixel o Độ rộng: tùy độ rộng của text  Đảm bảo nguyên tắc các TexBox, Combo trên cùng một Form có độ rộng thống nhất.  Đảm bảo nguyên tắc các Button trên tất cả các Form có độ rộng thống nhất, text trên Button không nên vượt quá 2 từ.  Nếu text trên Button gồm 2 từ trở xuống: bắt buộc sử dụng độ rộng mặc định (75). o Đối với những trường có độ rộng cố định hoặc ít khi thay đổi (ví dụ như trường có kiểu dữ liệu là Date thì độ rộng là cố định là 10 ký tự), tuân thủ theo quy định sau:
  • 5.  Đ r ng control đ c binding v i tr ng này ộ ộ ượ ớ ườ chỉ được phép rộng đủ để hiện thị hết thông tin trong đó.  Không được để độ rộng control vượt quá độ rộng của trường. o Lưu ý: Label đặt AutoSize=FALSE, TextBox đặt AutoSize=TRUE  Quy định khoảng cách giữa các Control o Các Control cách mép Form 01 ô grid (cả 4 phía). o TextBox, ComboBox cách Label dài nhất 01 ô grid o Các Control cách nhau 01 ô grid cả chiều dọc và ngang.
  • 6. Riêng tr ng ườ hợp sử dụng GroupBox có caption thì các Control bên trong GroupBox cách mép trên của GroupBox 02 ô grid. GroupBox không có caption khoảng cách vẫn là 1 ô grid.
  • 7.  Diện mạo Control o Font & Color: sử dụng thiết lập mặc định. Chỉ thay đổi khi yêu cầu thiết kế chỉ rõ. o Hot track: thiết lập Hot track cho Button, Combo và DropDown. o Căn lề Text trên Control:  Chiều ngang (HAlign): · Chữ căn trái · Số căn phải · Riêng với Button thì luôn căn giữa.  Chiều dọc (VAlign): căn giữa (Middle)  Dóng Control o Label: dóng trái o Textbox, Combo: dóng đều hai bên  Tab Order: o Phải thiết lập Tab Order trên mọi giao diện (Form, Control, …) theo nguyên tắc: từ trái sang phải, từ trên xuống dưới. o Yêu cầu bắt buộc thiết lập TabOrder theo đúng thứ tự cho mọi Control trên Form, kể cả Control không focus vào được như Label, GroupBox, hay Control invisible. Lưu ý tuân thủ tuyệt đối quy định này vì nó phục vụ nhiều mục đích quan trọng như tạo shortcut key, valid required data, …  Anchor & Dock: phải thiết lập Anchor và Dock cho Control trên các Form, Container không cố định kích thước (Sizable).  Với thông tin yêu cầu người dùng không dược bỏ trống mà bắt buộc nhập (AllowNull = FALSE) thì Label cho thông tin đó phải sử dụng ký hiệu “(*)” ở cuối và thiết lập shortcut key. II.2. Quy định khi tạo MessageBox - Caption: sử dụng Application.ProductName - Icon: · MessageBoxIcon.Exclamation: dùng cho các trường hợp sau o Cảnh báo lỗi o Cảnh báo xóa dữ liệu o Cảnh báo nhập thiếu, nhập sai dữ liệu · MessageBoxIcon.Information: dùng cho các thông báo không có tính chất cảnh báo, ví dụ Kết quả Import, Thông tin về CSDL, …
  • 8. - Nội dung Message: không được phép viết trực tiếp nội dung message mà phải dùng Resource (sử sụng hàm String.Format để truyền tham số cho Resource nếu cần). II.3. Quy tắc viết mô tả (comment) cho code Sử dụng tiếng Việt có dấu (Unicode) để viết comment. Comment cho Module, Class Mỗi Module, Class cần có mô tả ngắn về mục đích của Module hay Class đó. Nội dung gồm: Mục đích: Module hay Class thực hiện những công việc gì. Người lập: Người tạo Module hay Class Những biến/hàm quan trọng (không bắt buộc): Liệt kê tên các biến và hàm quan trọng trong Module/Class Comment cho Method và Event - Tất cả các Method và Event phải có comment. - Comment cho Method/Event gồm hai phần: o Phần 1 (không bắt buộc): mô tả mục đích và diễn giải ngắn gọn ý nghĩa các tham số đầu vào, đầu ra. Lưu ý: mô tả Method đó làm gì (What), không mô tả Method đó thực hiện thế nào (How). Từ VC# 2005 trở đi, Microsoft cung cấp sẵn một macro dành cho việc viết comment mục đích. Sử dụng như sau: gõ liên tiếp 3 dấu nháy đơn (‘) trên đầu mỗi Method. Lập trình viên có thể không cần viết phần mô tả mục đích này với các Method/Event đơn giản, không phức tạp. o Phần 2 (bắt buộc): ghi thông tin về history tạo và sửa Method/Event đó (người tạo/ngày tạo, người sửa/ngày sửa). Thông tin này bắt buộc phải có với mọi Method/Event. - Mẫu comment cho Method/Event đơn giản: // Created by (người tạo) – (ngày/tháng/năm tạo): diễn giải ngắn gọn mục đích // Modified by (người sửa 1) – (ngày/tháng/năm sửa 1): diễn giải việc sửa 1 // Modified by (người sửa 2) – (ngày/tháng/năm sửa 2): diễn giải việc sửa 2 //…
  • 9. // Modified by (ng i s a n) – (ngày/tháng/năm s a ườ ử ử n): diễn giải việc sửa n Ví dụ // Created by lhhoa - 20/02/2008: hàm lấy khoảng thời gian là ngày đầu và ngày cuối của tháng trước // Modified by nvkieu - 25/02/2008: sửa lỗi gì đó // Modified by nqhoang - 27/02/3008: bổ sung gì đó private void GetDateLastMonth(fromDate datetime, toDate datetime, currentMonth int, currentYear int) { if (currentMonth == 1) { fromDate = DateSerial(currentYear - 1, 12, 1); toDate = DateSerial(currentYear - 1, 12, DaysInMonth(currentYear - 1, 12)); } else { fromDate = DateSerial(currentYear, currentMonth - 1, 1); toDate = DateSerial(currentYear, currentMonth - 1, DaysInMonth(currentYear, currentMonth - 1)); } ……………………………. } - Mẫu comment cho Method/Event phức tạp: /// <summary> /// Diễn giải mục đích
  • 10. ///</summary> ///<param name="Tham s 1">Di n gi i cho ố ễ ả Tham số 1</param> ///<param name="Tham số 2">Diễn giải cho Tham số 2</param> /// … /// <param name="Tham số n">Diễn giải cho Tham số n</param> /// <remarks>Nhận xét (nếu có)</remarks> /// Created by (người tạo) – (ngày/tháng/năm tạo) /// Modified by (người sửa 1) – (ngày/tháng/năm sửa 1): diễn giải việc sửa 1 /// Modified by (người sửa 2) – (ngày/tháng/năm sửa 2): diễn giải việc sửa 2 /// … /// Modified by (người sửa n) – (ngày/tháng/năm sửa n): diễn giải việc sửa n Ví dụ: /// <summary> /// Hàm lấy khoảng thời gian là ngày đầu và ngày cuối của tháng trước. /// </summary> /// <param name="fromDate">Ngày đầu tháng trước</param> /// <param name="toDate">Ngày cuối tháng trước</param> /// <param name="currentMonth">Tháng hiện tại</param> /// <param name="currentYear">Năm hiện tại</param> /// <remarks></remarks> /// Created by lhhoa - 20/02/2008 /// Modified by nvkieu - 25/02/2008: sửa lỗi gì đó /// Modified by nqhoang - 27/02/3008: bổ sung gì đó private void GetDateLastMonth(fromDate datetime, toDate datetime, currentMonth int,
  • 11. currentYear int) { if (currentMonth == 1) { fromDate = DateSerial(currentYear - 1, 12, 1); toDate = DateSerial(currentYear - 1, 12, DaysInMonth(currentYear - 1, 12)); } else { fromDate = DateSerial(currentYear, currentMonth - 1, 1); toDate = DateSerial(currentYear, currentMonth - 1, DaysInMonth(currentYear, currentMonth - 1)); } ……………………………. } Comment cho đoạn Code - Những đoạn code phức tạp cần có comment gắn liền bên trên để chú giải. - Những đoạn code được sửa đổi (modified), bổ sung (added) hoặc rem (removed) bởi người không phải tác giả cần có comment rõ ngay tại nơi sửa đổi, bổ sung: người sửa, ngày sửa, mục đích. - Comment cho đoạn code áp dụng bắt buộc với các Base Form/Base Class/Base Control. II.4. Quy tắc phân nhóm (region) khi coding: Phải sử dụng Region phân nhóm code để tiện cho việc sửa đổi, bảo trì. Phân nhóm code theo cấu trúc như sau: (theo thứ tự bắt buộc, nhưng không bắt buộc có đủ tất cả các region)
  • 12. Declaration Constructor Property Method/Function Event Tùy theo yêu c u c a các form, class và module, l p trình viên ầ ủ ậ có thể chia nhỏ các Region chính trên thành các sub-region. VD: region Method/Function có thể chứa các region con sau: Method/Function Public Overridable (trường hợp là base form/class) Override (trường hợp là derive form/class) Private Other Trường hợp form hoặc class có sử dụng các component độc lập (Security, Document, MassEmail,…) thì phải tạo các Region riêng cho từng component, chứa toàn bộ code liên quan đến việc tương tác với các component đó. II.5. Quy định bẫy lỗi khi coding - Bắt buộc bẫy lỗi (sử dụng try … catch) trong tất cả các Event của Form và Control trên Form. - Nghiêm cấm sử dụng cú pháp try … catch để che dấu lỗi (không xử lý gì sau từ khóa catch).
  • 13. Bad!!! Good!!! II.6. Quy định thiết kế Dataset: - Tên của Dataset khi visual design đặt như sau: “Dataset” + Mục đích. VD: DatasetDictionary, DatasetCAPayment, … - Số lượng DataTable trong một Dataset: quy định từ 10 trở xuống. Mỗi Dataset chỉ được phép có tối đa 10 DataTable. Khi thiết kế phải tách Dataset để đảm bảo nguyên tắc này. Nếu một Dataset có nhiều DataTable thì tốc độ load/save dữ liệu sẽ bị ảnh hưởng nghiêm trọng.