Chuẩn viết code và thiết kế giao diện trong C#

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

pdf13 trang | Chia sẻ: franklove | Lượt xem: 4815 | Lượt tải: 1download
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.ẽ ị ả ưở ọ