Tải bản đầy đủ (.pdf) (13 trang)

CHUẨN VIẾT CODE VÀ THIẾT KẾ GIAO DIỆN TRONG C# docx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (326.55 KB, 13 trang )

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ứ ạ :
/// <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.ẽ ị ả ưở ọ

×