QUY ĐỊNH ĐẶT TÊN - Pascal - Camel - Uppercase I.1. I.2. Tên biến - Kiểu Camel 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. I.6. I.7. Tên thuộc tính - Tên kiểu Pascal Tên phương thức - Tên kiểu Pascal 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 BackColor backColor BACKCOLOR .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
                
              
                                            
                                
            
                       
            
                 13 trang
13 trang | 
Chia sẻ: franklove | Lượt xem: 5294 | Lượt tải: 1 
              
            Bạn đang xem nội dung tài liệu Chuẩn viết code và thiết kế giao diện trong C#, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
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 
when the specific type is unknown) 
ctr ctrCurrent 
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ứ ạ :
/// 
/// Di n gi i m c đíchễ ả ụ
///
///Di n gi i cho Tham s 1ố ễ ả ố
///Di n gi i cho Tham s 2ố ễ ả ố
/// …
/// Di n gi i cho Tham s nố ễ ả ố
/// Nh n xét (n u có)ậ ế
/// 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 :ụ
 /// 
 /// Hàm l y kho ng th i gian là ngày đ u và ngày cu i c a tháng tr c.ấ ả ờ ầ ố ủ ướ
 /// 
 /// Ngày đ u tháng tr cầ ướ 
 /// Ngày cu i tháng tr cố ướ 
 /// Tháng hi n t iệ ạ 
 /// Năm hi n t iệ ạ 
 /// 
 /// 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.ẽ ị ả ưở ọ