dotnet coding standards

Upload: srinivasa-rao-konakanchi

Post on 05-Jul-2018

226 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/15/2019 DotNet Coding Standards

    1/66

    Page 1 of

    DOT NET Coding Standards

  • 8/15/2019 DotNet Coding Standards

    2/66

    Table of Contents

    1. DESIGN GUIDE .................................................................................................................................................................... 5

    1.1 Abstractions ................................................................................................................................................................. 51.2 Inheritance vs. Helpers ................................................................................................................................................... 51.3 Interfaces vs. Abstract Classes .......................................................................................................................................... 51.4 Modifin! interfaces ....................................................................................................................................................... "1.5 Dele!ates vs. Interfaces .................................................................................................................................................. "1.6 Methods vs. #roperties .................................................................................................................................................... "1.7 $irt%al  Methods ............................................................................................................................................................ &1.8 Choosin! Tpes ............................................................................................................................................................. &1.9 Desi!n'b'Contract ........................................................................................................................................................ &

    0 (b)ect Co*position .................................................................................................................................................................................... 71 (b)ect Model + A#I Desi!n ............................................................................................................................................................................ 8

    1.12 Asnchrono%s #ro!ra**in! .............................................................................................................................................. ,1.13 M%lti'Threadin! ............................................................................................................................................................ ,

    2 NAMES#ACES ..................................................................................................................................................................... -

    2.1 Usa!e ......................................................................................................................................................................... -2.2 Na*in! ..................................................................................................................................................................... /

    3 0(1MATTING ................................................................................................................................................................... /

    3.1 Indentin! and Spacin! ................................................................................................................................................... /.. Co**ents .............................................................................................................................................................. /

    3.2 2loc3 Co**ents .......................................................................................................................................................... /3.3 Sin!le 4ine Co**ents ................................................................................................................................................... /3.4 Doc%*entation Co**ents ............................................................................................................................................. /3.5 2races ...................................................................................................................................................................... /3.6 #roperties .................................................................................................................................................................. /3.7 Methods .................................................................................................................................................................... /3.8 En%*erations ............................................................................................................................................................. /3.9 #arentheses ............................................................................................................................................................... 3.10 E*pt 4ines ............................................................................................................................................................... 3.11 4ine 2rea3in! ..............................................................................................................................................................

    3.11.1 Inter'ter* spacin! ....................................................................................................................................................... 6

  • 8/15/2019 DotNet Coding Standards

    3/66

    3.11.2 Table li3e for*attin! .................................................................................................................................................... 63.11.3 7hiteSpace 8or9 Ne:4ine 8or9 4ine2ra3e %sa!e s%**ar ........................................................................................................ 6

    4 NAMING ........................................................................................................................................................................... 5

    4.1 2asic Co*position ........................................................................................................................................................ 54.1.1 $alid Characters .......................................................................................................................................................... 54.1.2 General  1%les ............................................................................................................................................................. "4.1.3 Collision and Matchin! ................................................................................................................................................... "4.1.4 Capitali;ation ............................................................................................................................................................. "..5 Capitali;ation Stles .................................................................................................................................................. "

    4.1.4.1 #ascal  Casin! .............................................................................................................................................................. "4.1.4.2 Ca*el Casin! .............................................................................................................................................................. &4.1.4.3 Upper case ................................................................................................................................................................. &

    4.1.5 Na*in! G%idelines ....................................................................................................................................................... &4.1.5.1 Class Na*in! G%idelines ................................................................................................................................................ &

    4.1.5.2 Interface Na*in! G%idelines ........................................................................................................................................... &4.1.5.3 En%* Na*in! G%idelines ............................................................................................................................................... ,4.1.5.4 1ead(nl and Const 0ield Na*es ..................................................................................................................................... ,4.1.5.5 #ara*eter

  • 8/15/2019 DotNet Coding Standards

    4/66

    7 E11(1S  AND E>CE#TI(NS .................................................................................................................................................. "

    7.1 E?ception Thro:in! ...................................................................................................................................................... "7.2 E?ception Handlin! ...................................................................................................................................................... &

    8 1ES(U1CE  C4EANU# .......................................................................................................................................................... -

    8.1 Tr'finall 2loc3 .......................................................................................................................................................... -8.2 2asic Dispose #attern .................................................................................................................................................... 6/8.3 0inali;able Tpes ......................................................................................................................................................... 6=8.4 (verridin! Dispose ....................................................................................................................................................... 6,

    9 C(MM(N (NE  4INE1S ........................................................................................................................................................ 6-

  • 8/15/2019 DotNet Coding Standards

    5/66

    1.DESIGN GUIDEIn gnra!" dsign d#isions t$at in%o!% t$in&ing a'o(t t$ )o!!o*ing to+i#s s$o(!d not ' ,ad a!on. -o( s$o(!d a++! t$s +rin#i+!s to #o, (+

    *it$ a dsign" '(t s$o(!d a!*as s& t$ ad%i# and a++ro%a! o) at !ast on ot$r ta, ,,'r ')or +ro#ding. It is as to #o, (+ *it$ a do#(,nt" '(t t$ s+irit o) 'st #oding standards #o,s )ro, t$ d%!o+rs" *$o ado+t t$ )o!!o*ing r#o,,ndations.

    1.1 A2ST1ACTI(NS

    T$ )irst r(! o) dsign is /don‟t o%rdsign. O%rdsign !ads to a )ra,*or& t$at o))rs (n(sd )(n#tiona!it and $as intr)a#s t$at ar 

    di))i#(!t to (ndrstand and i,+!,nt. On! #rat a'stra#tions *$r t$r *i!! ' ,or t$an on i,+!,ntation or *$r t$r is a 

    rasona'! nd to +ro%id )or ot$r i,+!,ntations in t$ )(t(r.

    T$is !ads dir#t! to t$ s#ond r(! o) dsign /don t‟  (ndrdsign. Undrstand o(r +ro'!, do,ain *!! no(g$ ')or starting to #od so

    t$at o( a##o,,odat rasona'! )orsa'! additiona! r(ir,nts. or a,+!" *$t$r or not t$r is a nd )or ,(!ti+! 

    i,+!,ntations in *$i#$ #as o( s$o(!d d)in intr)a#s or a nd )or #od s$aring in *$i#$ #as a'stra#t intr)a#s ar in ordr. -o( 

    s$o(!d #rat a'stra#tions *$r t$ +r%nt r+atd #od a++!ing t$ D- +rin#i+! or *$r t$ +ro%id d#o(+!ing.

    I) o( do #rat an a'stra#tion" ,a& s(r t$at t$r ar tsts *$i#$ r(n against t$ a'stra#tion rat$r t$an a #on#rt i,+!,ntation so 

    t$at a!! )(t(r i,+!,ntations #an ' tstd. or a,+!" data'as a##ss )or a +arti#(!ar data'as s$o(!d in#!(d an a'stra#tion and

    tsts  )or t$at a'stra#tion t$at #an ' (sd to %ri) a!! s(++ortd data'ass.

    1.2 INHE1ITANCE $S. HE4#E1S

    T$ r(! $r is to on! (s in$ritan# *$r it ,a&s s,anti# sns to do so. I) t*o #!asss #o(!d s$ar #od '#a(s t$ +r)or,

    si,i!ar  tas&s" '(t arn t‟  ra!! r!atd" do not gi% t$, a #o,,on an#stor (st to a%oid r+ating o(rs!). Etra#t t$ s$ard #od intoa $!+r  #!ass and (s t$at #!ass )ro, 'ot$ i,+!,ntations. : $!+r #!ass #an ' stati#" '(t ,a a!so ' an instan#.

    1.3 INTE10ACES $S. A2ST1ACT C4ASSES

    ;$t$r or not to (s intr)a#s is a $ot!d'atd to+i#. On t$ on $and" intr)a#s o))r a #!an a'stra#tion and /intr)a# to a !i'rar 

    #o,+onnt and" on t$ ot$r $and" t$ rstri#t )(t(r (+grads ' )or#ing n* ,t$ods or +ro+rtis on isting i,+!,ntations. In a 

    )ra,*or& or !i'rar" o( #an sa)! add ,,'rs to #!asss t$at $a% ds#ndants in a++!i#ation #od *it$o(t )or#ing a #$ang in t$at 

    a++!i#ation #od.

  • 8/15/2019 DotNet Coding Standards

    6/66

    ;$r intr)a#s #an ' (s)(! is in rstri#ting write-access to #rtain +ro+rtis or #ontainrs. T$at is" an intr)a# #an ' d#!ard *it$

    on!  a gttr" '(t t$ i,+!,ntation in#!(ds 'ot$ a gttr and sttr. T$is a!!o*s an a++!i#ation to st t$ +ro+rt *$n it *or&s *it$ an

    intrna! i,+!,ntation" '(t to rstri#t t$ #od r#i%ing t$ intr)a# to a radon! +ro+rt.

    1.4 M(DI0@ING INTE10ACES

    In gnra!" ' tr,! #ar)(! o) ,odi)ing intr)a#s t$at ar (sd ' #od not (ndr o(r #ontro! i.. #od t$at $as s$i++d and 'n 

    intgratd into ot$r #od'ass. I) a #$ang nds to ' ,ad" it ,(st ' %r #!ar! do#(,ntd in t$ r!as nots )or t$ #od and

    ,(st  in#!(d ti+s )or i,+!,nting > (+dating t$ i,+!,ntation )or t$ intr)a#.

    :not$r so!(tion is to d%!o+ a +ara!!! +at$ t$at #ons(,s a n* intr)a# in$ritd )ro, t$ isting on.

    1.5 DE4EGATES $S. INTE10ACES

    ?ot$ d!gats and intr)a#s #an ' (sd to #onn#t #o,+onnts in a !oos!#o(+!d *a. : d!gat is ,or !oos!#o(+!d t$an an 

    intr)a# '#a(s it s+#i)is t$ a'so!(t ,ini,(, a,o(nt o) in)or,ation ndd in ordr to intro+rat *$ras an intr)a# )or#s t$ 

    i,+!,nting #o,+onnt to satis) a st o) #!ar!d)ind )(n#tiona!it.

    I) t$ 'ridg 't*n t*o #o,+onnts is tr(! t$at o) an %nt sin& #o,,(ni#ating *it$ an %nt !istnr" t$n o( s$o(!d (s %nt $and!rs

    and d!gats to #o,,(ni#at.

  • 8/15/2019 DotNet Coding Standards

    7/66

    • Bro+rtis don t‟  r(ir +arnt$ss and rs(!t in #!anr #od *$n #a!!d s+#ia!! *$n ,an ar #$aind togt$r

    • It #!ar! indi#ats t$at t$ %a!( is a !ogi#a! +ro+rt o) t$ #onstr(#t instad o) an o+ration.

  • 8/15/2019 DotNet Coding Standards

    8/66

    1.7 $I1TUA4 METH(DS

    C$oos #ar)(!! *$i#$ ,t$ods ar ,ar&d as %irt(a! as t$ in#(r dsign" tst and ,aintnan# #osts not s$ard ' non%irt(a! ,t$ods.

    1.8 CH((SING T@#ES

    Us t$ !astdri%d +ossi'! t+ )or !o#a! %aria'!s and ,t$od +ara,trsA t$is ,a&s t$ +#td :BI as +!i#it and o+n as +ossi'!.

    Us isting intr)a#s *$r%r +ossi'!" %n *$n d#!aring !o#a! or ,,'r %aria'!s. Intr)a#s s$o(!d ' (s)(! in ,ost instan#sA 

    ot$r*is t$ %‟  +ro'a'! 'n dsignd +oor!.

    IssagStor ,ssags n* ssagStorA 

    IE+rssionContt #ontt n* E+rssionConttt$isA

    Us t$ a#t(a! instantiatd #!ass )or t$ ,,'r t+ *$n o( nd to a##ss ,,'rs not a%ai!a'! in t$ intr)a#. Do not ,odi) t$ 

    intr)a# so!! in ordr to &+ (sing t$ intr)a# instad o) t$ #!ass.

    1.9 DESIGN'2@'C(NT1ACT

    Us assrtions at t$ 'ginning o) a ,t$od to assrt +r#onditionsA assrt +ost#onditions i) a++ro+riat.

    • Us D'(g.:ssrt or t$ro* standard sst, #+tions )or +r and +ost#onditions

    • -o( ,a t$ro* t$ #+tion on t$ sa, !in as t$ #$#&" to ,irror t$ )or,atting o) t$ assrtion.

    i) #onn#tion n(!! t$ro* n* :rg(,ntN(!!E#+tionF#onn#tionFA

    • I) t$ assrtion #annot ' )or,(!atd in #od" add a #o,,nt ds#ri'ing it instad

    • I) #!ass in%ariants ar not s(++ortd" ds#ri' t$ rstri#tions in t$ #!ass do#(,ntation or not t$ in%ariant in #o,,ntd )or, at

    t$  nd o) t$ #!ass• :!! ,t$ods and +ro+rtis (sd to tst +r#onditions ,(st $a% t$ sa, %isi'i!it as t$ ,t$od 'ing #a!!d.

    ./ (2ECT C(M#(SITI(N

    • :!*as d#!ar t+s +!i#it! *it$in a na,s+a#. Do not (s t$ d)a(!t /g!o'a! na,s+a#.

    • :%oid o%r(s o) t$ +('!i# a##ss ,odi)ir. T+i#a!! )*r t$an 10H o) o(r t+s and ,,'rs *i!! '

    Bart o) a +('!i# :BI" (n!ss o( ar *riting a #!ass !i'rar.

    • Considr (sing intrna! or +ri%at a##ss ,odi)irs )or t+s and ,,'rs (n!ss o( intnd to s(++ort

    T$, as +art o) a +('!i# :BI.

    • N%r (s t$ +rot#td a##ss ,odi)ir *it$in sa!d #!asss (n!ss o%rriding a +rot#td ,,'r o) 

  • 8/15/2019 DotNet Coding Standards

    9/66

    :n in$ritd t+.

    • :%oid d#!aring ,t$ods *it$ ,or t$an 5 +ara,trs. Considr r)a#toring t$is #od.

    • Tr to r+!a# !arg +ara,trsts t$an 5 +ara,trs *it$ on or ,or #!ass or str(#t +ara,trs J

    Es+#ia!! *$n (sd in ,(!ti+! ,t$od signat(rs.

    •  Do not (s t$ /n* &*ord on ,t$od and +ro+rt d#!arations to $id ,,'rs o) a dri%d t+.• On! (s t$ /'as &*ord *$n in%o&ing a 'as #!ass #onstr(#tor or 'as i,+!,ntation *it$in an

    O%rrid.

    • Considr (sing ,t$od o%r!oading instad o) t$ +ara,s attri'(t '(t ' #ar)(! not to 'ra& CKS

    Co,+!ian# o) o(r :BILs.

    • :!*as %a!idat an n(,ration %aria'! or +ara,tr %a!( ')or #ons(,ing it. T$ ,a #ontain an %a!(

    T$at t$ (ndr!ing En(, t+ d)a(!t int s(++orts.

    E?a*ple+('!i# %oid Tst?oo&Catgor #ati) En(,.IsD)indt+o)?oo&Catgor" #at

     M

    . (2ECT M(DE4 + A#I DESIGN

    • :!*as +r)r aggrgation o%r in$ritan#.• :%oid /Br,at(r Gnra!iation. Crat a'stra#tions on! *$n t$ intnt is (ndrstood.• Do t$ si,+!st t$ing t$at *or&s" t$n r)a#tor *$n n#ssar.• :!*as ,a& o'#t'$a%ior trans+arnt to :BI #ons(,rs.• :%oid (n+#td sida))#ts *$n +ro+rtis" ,t$ods" and #onstr(#tors ar in%o&d.• :!*as s+arat +rsntation !ar )ro, '(sinss !ogi#.• :!*as +r)r intr)a#s o%r a'stra#t #!asss.• Tr to in#!(d t$ dsign+attrn na,s s(#$ as /?ridg" /:da+tr" or /a#tor as a s())i to #!ass na,s

    ;$r a++ro+riat.• On! ,a& ,,'rs %irt(a! i) t$ ar dsignd and tstd )or tnsi'i!it.• )a#tor o)tn

    . AS@NCH1(N(US #1(G1AMMING

    • :%oid asn# %oid. Br)r asn# Tas& ,t$ods o%r asn# %oid ,t$ods• :sn# a!! t$ *a. DonLt ,i '!o#&ing and asn# #od• Con)ig(r #ontt. Us Con)ig(r:*ait)a!s *$n o( #an

    .6 MU4TI'TH1EADING

  • 8/15/2019 DotNet Coding Standards

    10/66

    • DonPt (s T$rad.:'ort to tr,inat ot$r t$rads. Ca!!ing :'ort on anot$r t$rad is a&in to t$ro*ing an #+tion on t$at t$rad"*it$o(t &no*ing *$at +oint t$at t$rad $as ra#$d in its +ro#ssing.

    • DonPt (s T$rad.S(s+nd and T$rad.s(, to sn#$roni t$ a#ti%itis o) ,(!ti+! t$rads. Do (s (t" an(a!stE%nt":(tostE%nt" and onitor.

    • DonPt #ontro! t$ #(tion o) *or&r t$rads )ro, o(r ,ain +rogra, (sing %nts" )or a,+!. Instad" dsign o(r +rogra, so t$at*or&r t$rads ar rs+onsi'! )or *aiting (nti! *or& is a%ai!a'!" #(ting it" and noti)ing ot$r +arts o) o(r +rogra, *$n )inis$d. I) o(r *or&r t$rads do not '!o#&" #onsidr (sing t$rad +oo! t$rads. onitor.B(!s:!! is (s)(! in sit(ations *$r *or&r t$rads '!o#&.

    • DonPt (s t+s as !o#& o'#ts. T$at is" a%oid #od s(#$ as !o#&t+o)@ in CQ or Sn#Ko#&GtT+@ in Ris(a! ?asi#" or t$ (s o) onitor.Entr *it$ T+ o'#ts. or a gi%n t+" t$r is on! on instan# o) Sst,.T+ +r a++!i#ation do,ain. I) t$ t+ o( ta& a!o#& on is +('!i#" #od ot$r t$an o(r o*n #an ta& !o#&s on it" !ading to dad!o#&s. or additiona! iss(s" s !ia'i!it ?st Bra#ti#s.

    • Us #a(tion *$n !o#&ing on instan#s" )or a,+! !o#&t$is in CQ or Sn#Ko#& in Ris(a! ?asi#. I) ot$r #od in o(r a++!i#ation"trna! to t$ t+" ta&s a !o#& on t$ o'#t" dad!o#&s #o(!d o##(r.

    • Do ns(r t$at a t$rad t$at $as ntrd a ,onitor a!*as !a%s t$at ,onitor" %n i) an #+tion o##(rs *$i! t$ t$rad is in t$,onitor. T$ CQ !o#& stat,nt and t$ Ris(a! ?asi#Sn#Ko#& stat,nt +ro%id t$is '$a%ior a(to,ati#a!!" ,+!oing a )ina!! '!o#& tons(r t$at onitor.Eit is #a!!d. I) o( #annot ns(r t$at Eit *i!! ' #a!!d" #onsidr #$anging o(r dsign to (s (t. : ,(t isa(to,ati#a!! r!asd *$n t$ t$rad t$at #(rrnt! o*ns it tr,inats.

    • Do (s ,(!ti+! t$rads )or tas&s t$at r(ir di))rnt rso(r#s" and a%oid assigning ,(!ti+! t$rads to a sing! rso(r#. or a,+!"an tas& in%o!%ing I>O 'n)its )ro, $a%ing its o*n t$rad" '#a(s t$at t$rad *i!! '!o#& d(ring I>O o+rations and t$(s a!!o* ot$rt$rads to #(t. Usr in+(t is anot$r rso(r# t$at 'n)its )ro, a ddi#atd t$rad. On a sing!+ro#ssor #o,+(tr" a tas& t$atin%o!%s intnsi% #o,+(tation #oists *it$ (sr in+(t and *it$ tas&s t$at in%o!% I>O" '(t ,(!ti+! #o,+(tationintnsi% tas&s #ontnd*it$ a#$ ot$r.

    2 NAMES#ACES

    2.1 USAGE

    • Do not (s t$ g!o'a! na,s+a#A t$ on! #+tion is )or :SB.NET +ags t$at ar gnratd into t$ g!o'a! na,s+a#.

    • :%oid )(!!(a!i)id t+ na,sA (s t$ (sing stat,nt instad.

    • I) t$ IDE insrts a )(!!(a!i)id t+ na, in o(r #od" o( s$o(!d )i it. I) t$ (nadornd na, #on)!i#ts *it$ ot$r a!radin#!(dd

    na,s+a#s" ,a& an a!ias )or t$ #!ass *it$ a (sing #!a(s

    • :%oid +(tting a (sing stat,nt insid a na,s+a# (n!ss o( ,(st do so to rso!% a #on)!i#t

  • 8/15/2019 DotNet Coding Standards

    11/66

    • :%oid d+ na,s+a#$irar#$is )i% or ,or !%!s as t$at ,a&s it di))i#(!t to 'ro*s and (ndrstand.

    2.2 NAMING

    • :%oid ,a&ing too ,an na,s+a#sA instad" (s #at#$a!! na,s+a# s())is" !i& /Uti!itis" /Cor or /Gnra! (nti! it is

    #!arr  *$t$r a #!ass or gro(+ o) #!asss *arrant t$ir o*n na,s+a#. )a#toring is o(r )rind $r.

    • Do not in#!(d t$ %rsion n(,'r in a na,s+a# na,.

    • Us !ong!i%d idnti)irs in a na,s+a# na,.

    • Na,s+a#s s$o(!d ' +!(ra!" as t$ *i!! #ontain ,(!ti+! t+s

    • I) o(r )ra,*or& or a++!i#ation n#o,+asss ,or t$an on tir" (s t$ sa, na,s+a# idnti)irs )or si,i!ar tas&s. or a,+!"

    #o,,on dataa##ss #od gos in :++!i#ation.Data" '(t ,tadata'asd dataa##ss #od gos in :++!i#ation.taNa,.Data

    • :%oid (sing /rsr%d na,s+a# na,s !i& Sst, '#a(s t$s *i!! #on)!i#t *it$ standard .NET na,s+a#s and r(ir rso!(tion 

    (sing t$ g!o'a! na,s+a# +r)i.

    3 0(1MATTINGT$ )or,atting r(!s *r dsignd )or (s *it$ CQ. ;$r +ossi'!" t$ s$o(!d ' a++!id to ot$r !ang(ags CSS" a%aS#ri+t" t#. as *!!.

    3.1 INDENTING AND S#ACING

    • :n indnt is t*o s+a#sA it is n%r a ta'.

    • Us a sing! s+a# a)tr a #o,,a .g. 't*n )(n#tion arg(,nts.

    • T$r is no s+a# a)tr t$ !ading +arnt$sis>'ra#&t or ')or t$ #!osing Barnt$sis > 'ra#&t

    • T$r is no s+a# 't*n a ,t$od na, and t$ !ading +arnt$sis" '(t t$r is a s+a# ')or t$ !ading +arnt$sis o) a )!o*

    #ontro! stat,nt• Us a sing! s+a# to s(rro(nd all2 in)i o+ratorsA t$r is no s+a# 't*n a +r)i o+rator .g. / or / and its arg(,nt

    • Do not (s s+a#ing to a!ign t+ ,,'rs on t$ sa, #o!(,n .g. as *it$ t$ ,,'rs o) an n(,ratd t+

    3.2 C(MMENTS

    24(CB C(MMENTS

    ?!o#& #o,,nts s$o(!d (s(a!! ' a%oidd. or ds#ri+tions (s o) t$ >>> #o,,nts to gi% CQ standard ds#ri+tions is r#o,,ndd.

    ;$n  o( *is$ to (s '!o#& #o,,nts o( s$o(!d (s t$ )o!!o*ing st!

  • 8/15/2019 DotNet Coding Standards

    12/66

    > Kin 1

    Kin 2

  • 8/15/2019 DotNet Coding Standards

    13/66

    Kin 3>

    :s t$is *i!! st o)) t$ '!o#& %is(a!! )ro, #od )or t$ $(,an radr. :!trnati%! o( ,ig$t (s t$is o!d )as$iond C st! )or sing! !in#o,,nts" %n t$o(g$ it is not r#o,,ndd. In #as o( (s t$is st!" a !in 'ra& s$o(!d )o!!o* t$ #o,,nt" as it is $ard to s #od

    +ro#dd ' #o,,nts in t$ sa, !in

    > '!a$ '!a$ '!a$ >

    ?!o#& #o,,nts ,a ' (s)(! in rar #ass" r)r to t$ T#$Not PT$ )in :rt o) Co,,ntingP )or an a,+!. Gnra!! '!o#& #o,,nts 

    ar (s)(! )or #o,,nt o(t !arg s#tions o) #od.

    3.4 SING4E 4INE C(MMENTS

    -o( s$o(!d (s t$ >> #o,,nt st! to F#o,,nt o(tF #od. It ,a ' (sd )or #o,,nting s#tions o) #od too.

    Sing! !in #o,,nts ,(st ' indntd to t$ indnt !%! *$n t$ ar (sd )or #od do#(,ntation. Co,,ntd o(t #od s$o(!d ' 

    #o,,ntd o(t in t$ )irst !in to n$an# t$ %isi'i!it o) #o,,ntd o(t #od.

    : r(! o) t$(,' sas t$at gnra!!" t$ !ngt$ o) a #o,,nt s$o(!d not #d t$ !ngt$ o) t$ #od +!aind ' too ,(#$" as t$is is an 

    indi#ation o) too #o,+!i#atd" +otntia!! '(gg" #od.

    3.5 D(CUMENTATI(N C(MMENTS

    In t$ .nt )ra,*or&" i#roso)t $as introd(#d a do#(,ntation gnration sst, 'asd on @K #o,,nts. T$s #o,,nts ar )or,a!!

    sing! !in C  ♯ #o,,nts #ontaining @K tags. T$ )o!!o* t$is +attrn )or sing! !in #o,,nts

    >>> s(,,ar

    >>> T$is is a #o,,nt )or #!ass>>> >s(,,ar

    (!ti!in @K #o,,nts )o!!o* t$is +attrn

    >>>#+tion #r)FtstE#+tionF

    >>>T$is is an #+tion #o,,nt>>>t$ro*n )or tst #+tion

  • 8/15/2019 DotNet Coding Standards

    14/66

    >>>>#+tion

    :!! !ins ,(st ' +r#dd ' t$r s!as$s to ' a##+td as @K #o,,nt !ins. Tags )a!! into t*o #atgoris

  • 8/15/2019 DotNet Coding Standards

    15/66

    Page 10 of 

    • Do#(,ntation it,s

    • or,atting>)rn#ing

    T$ )irst #atgor #ontains tags !i& s(,,ar" +ara, or >#+tion. T$s r+rsnt it,s t$at r+rsnt t$ !,nts o) a +rogra,Ps:BI *$i#$ ,(st ' do#(,ntd )or t$ +rogra, to ' (s)(! to ot$r +rogra,,rs. T$s tags (s(a!! $a% attri'(ts s(#$ as na, or #r)

    as  d,onstratd in t$ ,(!ti!in a,+! a'o%. T$s attri'(ts ar #$#&d ' t$ #o,+i!r" so t$ s$o(!d ' %a!id.

    T$ !attr #atgor go%rns t$ !ao(t o) t$ do#(,ntation" (sing tags s(#$ as #od" !ist or +ara.

    Do#(,ntation #an t$n ' gnratd (sing t$ Pdo#(,ntationP it, in t$ Qd%!o+ P'(i!dP ,n(. T$ do#(,ntation gnratd is in 

  • 8/15/2019 DotNet Coding Standards

    16/66

    Page 11 of

    3.10 #A1ENTHESES

    • CQ $as a di))rnt o+rator +r#dn# t$an Bas#a! or C" so o( #an *rit

    #ontt n(!! VV #ontt.Co(nt 0

    *it$o(t #on)(sing t$ #o,+i!r.

  • 8/15/2019 DotNet Coding Standards

    17/66

    Page 12 of

    ?t*n do#(,ntd n(, %a!(sA (ndo#(,ntd ,a ' gro(+d togt$r

  • 8/15/2019 DotNet Coding Standards

    18/66

    ?t*n !ogi#a! gro(+s o) #od in a ,t$odA t$is notion is s('#ti% and ,or a ,attr o) st!. -o( s$o(!d (s ,+t !ins to

    i,+ro% rada'i!it" '(t s$o(!d not o%r(s t$,.

    ?t*n t$ !ast !in o) #od in a '!o#& and a #o,,nt )or t$ nt '!o#& o) #od.

    ?t*n stat,nts t$at ar 'ro&n (+ into ,(!ti+! !ins.

    ?t*n a Qrgion tag and t$ )irst !in o) #od in t$at rgion. ?t*n t$ !ast !in o) #od in a rgion and t$ Qndrgion tag.

    Do not +!a# an ,+t !in in t$ )o!!o*ing +!a#s

    • :)tr anot$r ,+t !in

    • ?t*n rtri%a! #od and $and!ing )or t$at #od. Instad" t$ s$o(!d ' )or,attd togt$r.

    Itaada'!O'#t o' #ontt.indItaada'!O'#tA 

    i) o' n(!!

    #ont5t.8#ordr.Kog6K%!.4ata!" String.4or,at6FError077A 

    rt(rn n(!!A

    • ?t*n an !in and a !in t$at $as on! an o+ning or #!osing 'ra# on it i.. t$r s$o(!d ' no !ading or trai!ing n*!ins in a '!o#&

    • ?t*n (ndo#(,ntd )i!ds (s(a!! +ri%atA i) t$r ar ,an s(#$ )i!ds" o( ,a (s ,+t !ins to gro(+ t$, ' +(r+os.

    3.12 4INE 21EABING

    ?!an& !ins i,+ro% rada'i!it. T$ st o)) '!o#&s o) #od *$i#$ ar in t$,s!%s !ogi#a!! r!atd. T*o '!an& !ins s$o(!d a!*as ' (sd 't*n

    • Kogi#a! s#tions o) a so(r# )i!

    • C!ass and intr)a# d)initions tr on #!ass>intr)a# +r )i! to +r%nt t$is #as

    On '!an& !in s$o(!d a!*as ' (sd 't*n

    • t$ods

    • Bro+rtis

    • Ko#a! %aria'!s in a ,t$od and its )irst stat,nt

    • Kogi#a! s#tions insid a ,t$od to i,+ro% rada'i!it

  • 8/15/2019 DotNet Coding Standards

    19/66

    Not t$at '!an& !ins ,(st ' indntd as t$ *o(!d #ontain a stat,nt t$is ,a&s insrtion in t$s !ins ,(#$ asir.

  • 8/15/2019 DotNet Coding Standards

    20/66

    3.13 INTE1'TE1M S#ACING

    T$r s$o(!d ' a sing! s+a# a)tr a #o,,a or a s,i#o!on" 

    or a,+!

    DonPt (s

    %oid Tstt$oda"'"# 

    or

    %oid Tstt$od a" '" #

    #o,,ndd to Us  

    %oid Tstt$oda" '" #

    3.14 TA24E 4IBE 0(1MATTING

    : !ogi#a! '!o#& o) !ins s$o(!d ' )or,attd as a ta'!

    string na, Fr. EdFA 

    int ,Ra!( 5A

    Ki'rarUsr !i'Usr C!ass.GtN*UsrA

    Us s+a#s )or t$ ta'! !i& )or,atting and not ta's '#a(s t$ ta'! )or,atting ,a !oo& strang in 

    s+#ia! ta' intnt !%!s.

    3.15 7HITES#ACE 8(19 NE74INE 8(19 4INE21ABE USAGE SUMMA1@

    • No !in s$o(!d #d 100 #$ara#trsA (s t$ !in'ra&ing r(!s !istd '!o* to 'ra& (+ a !in.

    • Us !in'ra&ing on! *$n n#ssarA do not ado+t it as standard +ra#ti#.

    • I) on or ,or !in'ra&s is r(ird" (s as )* as +ossi'!

    • Kin'ra&ing s$o(!d o##(r at nat(ra! 'o(ndarisA t$ ,ost #o,,on s(#$ 'o(ndar is 't*n +ara,trs in a ,t$od #a!! or d)inition.

    • Kins a)tr s(#$ a !in'ra& at s(#$ a 'o(ndar s$o(!d ' indntd.

  • 8/15/2019 DotNet Coding Standards

    21/66

    • T$ s+arator .g. a #o,,a 't*n !,nts )or,attd onto ,(!ti+! !ins gos on t$ sa, !in a)tr t$ !,ntA t$ IDE is ,(#$ 

    ,or $!+)(! *$n )or,atting t$at *a.

    • T$ ,ost nat(ra! !in'ra&ing 'o(ndar is o)tn ')or and a)tr a !ist o) !,nts. or a,+!" t$ )o!!o*ing ,t$od #a!! $as !in 

    'ra&s at t$ 'ginning and nd o) t$ +ara,tr !ist.

    +o+!.DataSo(r# C(rrntCo,+an.E,+!os.GtKist

    #onn#tion" ,taC!ass" Gti!tr" n(!!

    A

    • I) on o) t$ +ara,trs is ,(#$ !ongr" t$n o( add !in'ra&ing 't*n t$ +ara,trsA in t$at #as" all +ara,trs

    ar  )or,attd onto t$ir o*n !ins

    +o+!.DataSo(r# C(rrntCo,+an.E,+!os.GtKist

    #onn#tion"

    ,taC!ass" 

    Gti!trFG!o'a!.:++!i#ations.U+datr.BrsonKist.Sar#$F " 

    n(!!

    A

    • Not in t$ a,+!s a'o% t$at t$ +ara,trs ar indntd. I) t$ assign,nt or ,t$od #a!! *as !ongr" t$ *o(!d no !ongr )it on t$ 

    sa, !in. In t$at #as" o( s$o(!d (s two !%!s o) indnting.

    :++!i#ation.od!.+o+!.DataSo(r#  

    G!o'a!.:++!i#ationEn%iron,nt.C(rrntCo,+an.E,+!os.GtKist#onn#tion" 

    ,taC!ass"

    Gti!trFG!o'a!.:++!i#ations.U+datr.BrsonKist.Sar#$F " 

    n(!!

    A

    • I) t$r is a !ogi#a! gro(+ing )or +ara,trs" o( ,a a++! !in'ra&ing at t$os 'o(ndaris instad 'ra&ing t$ a!!onon!in or a#$ 

    onitso*n!in r(! statd a'o%. or a,+!" t$ )o!!o*ing ,t$od s+#i)is Cartsian #oordinats

  • 8/15/2019 DotNet Coding Standards

    22/66

    Go,tr.B!otIn?o

    FG!o'a!.:++!i#ations.ain;indo*F" 

    to+K)t.@" to+K)t.-" 

    'otto,ig$t.@" 'otto,ig$t.-

  • 8/15/2019 DotNet Coding Standards

    23/66

    A

    4 NAMING

    T$ na,ing r(!s *r dsignd )or (s *it$ CQ. ;$r +ossi'!" t$ s$o(!d ' a++!id to !,nts o) ot$r !ang(ags CSS" 

    a%aS#ri+t" t#. as *!!. o!!o* a!! .NET ra,*or& Dsign G(id!ins )or 'ot$ intrna! and trna! ,,'rs.

  • 8/15/2019 DotNet Coding Standards

    24/66

    4.3 GENE1A4 1U4ES

    • Na,s ar in USEng!is$ .g. (s /#o!or instad o) /#o!o(r.

    • Na,s #on)or, to Eng!is$ gra,,ati#a! #on%ntions .g. (s I,+orta'!Data'as instad o) Data'asI,+orta'!.

    • Na,s s$o(!d ' as s$ort as +ossi'! *it$o(t !osing ,aning.

    • Br)r *$o! *ords or sti#& to +rd)ind s$ort )or,s or a''r%iations o) *ords

    • a& s(r to #a+ita!i #o,+o(nd *ords #orr#t!A i) t$ *ord is not $+$natd" t$n it dos not nd a #a+ita! !ttr in t$  #a,! or

    Bas#a!#asd )or,. or a,+!" /,tadata is *rittn as tadata in Bas#a!#as" not taData.

    • :#ron,s s$o(!d ' Bas#a!#as as *!! .g. /@,! or /S! (n!ss t$ ar on! t*o !ttrs !ong. :#ron,s at t$ 'ginning  o) a

    #a,!#as idnti)ir ar a!*as a!! !o*r#as.

    • Idnti)irs di))ring on! ' #as ,a ' d)ind *it$in t$ sa, s#o+ on! i) t$ idnti) di))rnt !ang(ag !,nts .g.  a !o#a!

    %aria'! and a +ro+rt.

    +('!i# %oid U+datKngt$int n*Kngt$" 'oo! r)rs$Ri*s

    int !ngt$ Kngt$A

    • -o( ,a not (s idnti)irs t$at ar &*ords in CQA nit$r ,a o( (s t$ Ys,'o! to t(rn a &*ord into a %a!id  idnti)ir.

    4.4 C(44ISI(N AND MATCHING

    • Do not na, an !,nt *it$ t$ sa, idnti)ir as its #ontaining !,nt .g. don‟t #rat a stati# #!ass na,d E+rssions  *it$in a

    na,s+a# #a!!d E+rssions

    Sin# CQ a!!o*s it" o( s$o(!d (s t$ sa, idnti)ir )or a +ro+rt as its t+ i) t$at is t$ ,ost a++ro+riat na, in t$at  #onttt$is is o)tn t$ #as *it$ n(, +ro+rtis

    4.5 CA#ITA4IATI(N

    T$ )o!!o*ing ta'! !ists t$ #a+ita!iation and na,ing r(!s )or di))rnt !ang(ag !,nts. Bas#a!#as #a+ita!is %r indi%id(a! *ord 

    *it$in an idnti)ir" in#!(ding t$ )irst on. Ca,!#as #a+ita!is a!! '(t t$ )irst *ord in an idnti)ir.

    4.6 CA#ITA4IATI(N ST@4ES

    #ASCA4 CASING

  • 8/15/2019 DotNet Coding Standards

    25/66

    T$is #on%ntion #a+ita!is t$ )irst #$ara#tr o) a#$ *ord as in TstCo(ntr.

  • 8/15/2019 DotNet Coding Standards

    26/66

    4.8 CAME4 CASING

    T$is #on%ntion #a+ita!is t$ )irst #$ara#tr o) a#$ *ord #+t t$ )irst on. E.g. tstCo(ntr.

    4.9 U##E1 CASE

    On! (s a!! (++r #as )or idnti)irs i) it #onsists o) an a''r%iation *$i#$ is on or t*o #$ara#trs !ong" idnti)irs o) t$r or ,or 

    #$ara#trs s$o(!d (s Bas#a! Casing instad.

    or Ea,+! 

    +('!i# #!ass at$

    +('!i# const do('! BI

    3.14A  +('!i# #onst string E

    Fasd)FA

    +('!i# #onst int )ign?a(,N(,'r 91A

    4.10 NAMING GUIDE4INES

    Gnra!! t$ (s o) (ndrs#or #$ara#trs insid na,s and na,ing a##ording to t$ g(id!ins )or

  • 8/15/2019 DotNet Coding Standards

    27/66

    4.12 INTE10ACE NAMING GUIDE4INES

    • Na, intr)a#s *it$ no(ns or no(n +$rass or ad#ti%s ds#ri'ing '$a%ior. Ea,+! ICo,+onnt or IEn(,'ra'!

  • 8/15/2019 DotNet Coding Standards

    28/66

    • Us Bas#a! Casing

    • Us I as +r)i )or t$ na," it is )o!!o*d ' a #a+ita! !ttr )irst #$ar o) t$ intr)a# na,

    4.13 ENUM NAMING GUIDE4INES• Us Bas#a! Casing )or n(, %a!( na,s and n(, t+ na,s

    • Don‟t +r)i or s())i a n(, t+ or n(, %a!(s

    • Us sing(!ar na,s )or n(,s

    • Us +!(ra! na, )or 'it )i!ds.

    4.14 1EAD(N4@ AND C(NST 0IE4D NAMES

    • Na, stati# )i!ds *it$ no(ns" no(n +$rass or a''r%iations )or no(ns

    • Us Bas#a! Casing

    4.15 #A1AMETE1

  • 8/15/2019 DotNet Coding Standards

    29/66

    • t$od na,s s$o(!d not r+at in)or,ation )ro, t$ n#!osing t+. or a,+!" an intr)a# na,d Issags s$o(!d not $a% a 

    ,t$od na,d KogssagA instad na, t$ ,t$od Kog.

  • 8/15/2019 DotNet Coding Standards

    30/66

    • Stat *$at a ,t$od dosA do not ds#ri' t$ +ara,trs !t #od#o,+!tion and t$ signat(r do t$at )or o(.

    • t$ods t$at rt(rn %a!(s s$o(!d indi#at t$is in t$ir na," !i& GtKist" GtIt, or CratD)a(!tData'as. T$o(g$ t$r is 

    gar'ag #o!!#tion in CQ" o( s$o(!d sti!! (s Gt to indi#at rtri%a! o) a !o#a! %a!( and Crat to indi#at a )a#tor ,t$od" *$i#$ 

    a!*as #rats a n* r)rn#. or a,+!" instad o) *riting

    +('!i# IDataKistGnri#O'#t GtKistItaC!ass #!s

    rt(rn Ri*:++!i#ation.:++!i#ation.CratCont5tGnri#O'9#t6#!s7A

    -o( s$o(!d *rit

    +('!i# IDataKistGnri#O'#t CratKistItaC!ass #!s

    rt(rn Ri*:++!i#ation.:++!i#ation.CratCont5tGnri#O'9#t6#!s7A

    • :%oid d)ining %rt$ing as a no(n or a ,anagr. Br)r na,s t$at ar !ogi#a!! r!%ant" !i& issi!.Ka(n#$ rat$r t$an 

    issi!Ka(n#$r.E#(t,issi!.

    • t$ods t$at st a sing! +ro+rt %a!( s$o(!d 'gin *it$ t$ %r' St.

    4.18 #1(#E1T@ NAMES

    • Na, +ro+rtis (sing no(ns or no(n +$rass

    • Us Bas#a! Casing

    • Considr na,ing a +ro+rt *it$ t$ sa, na, as it s‟  t+

    • Bro+rtis s$o(!d ' no(ns or ad#ti%s

    • Br+nd /Is to t$ na, )or ?oo!an +ro+rtis on! i) t$ intnt is (n#!ar *it$o(t it. T$ nt a,+! s$o*s s(#$ a #as

    +('!i# 'oo! E,+t gtA  

    +('!i# 'oo! IsE,+t gtA

    :!t$o(g$ it‟s a +ro+rt not a ,t$od" t$ )irst a,+! ,ig$t sti!! ' intr+rtd as a %r' rat$r t$an an ad#ti%. T$ s#ond a,+! 

    adds t$ %r' /Is to a%oid #on)(sion" '(t 'ot$ )or,(!ations ar a##+ta'!.

  • 8/15/2019 DotNet Coding Standards

    31/66

    • : +ro+rt‟s 'a#&ing )i!d i) +rsnt ,(st ' an (ndrs#or )o!!o*d ' t$ na, o) t$ +ro+rt in #a,! #as.

    • Us #o,,on na,s" !i& It, or Ra!(" )or a##ssing t$ #ntra! +ro+rt o) a t+

  • 8/15/2019 DotNet Coding Standards

    32/66

    Page 20 of 

    • Do not in#!(d t+ in)or,ation in +ro+rt na,s. or a,+!" )or a +ro+rt o) t+ Ita!ation" (s t$ na, !ation instad 

    o) t$ na, ta!ation

    • a& t$ idnti)ir as s$ort as +ossi'! *it$o(t !osing in)or,ation. or a,+!" i) a #!ass na,d IRi*Contt $as a +ro+rt o) t+ 

    IRi*Contt

  • 8/15/2019 DotNet Coding Standards

    33/66

    Page 20 of 

    or, s())i @@@or,

    Gro(+?o gr+

    I,agKist i,!Ka'! !'

    Kist?o !st

    KistRi* !%*

    n( ,n(

    n(It, ,n(

    Noti)i#ationI#on n)

    Ban! +n!

    Bi#t(r?o +#t

    Brogrss?ar +rg

    adio?(tton rad

    S+!ittr s+!

    Stat(s?ar sts

    Ta'Contro! ta'

    Ta'Bag ta'

    Tt?o t'

    Ti,r t,r

    TrRi* t%*

    or a,+!" )or t$ /i! Z Sa% ,n( o+tion" t$ /Sa% n(It, *o(!d ' #a!!d /,n(i!Sa%.

    4.21 CA#ITA4IATI(N SUMMA1@

    Identifier Casin! Na*in! Str%ct%re E?a*ple

    Class Str%ct%re

    Bas#a!Casing No(n+('!i# #!ass Co,+!N(,'r ...

    +('!i# str(#t Co,+!tStr(#t ...

  • 8/15/2019 DotNet Coding Standards

    34/66

    Page 20 of 

    Na*espace Bas#a!Casing No(nDo not (s t$ sa, na, 

    )or a na,s+a# and a t+ int$at na,s+a#.

    na,s+a# i#roso)t.Sa,+!.;indo*s7

    En%*eration Bas#a!Casing No(n Do na, )!ag n(,s *it$ 

    +!(ra! no(ns or no(n +$rassand si,+! n(,s *it$ sing(!ar no(ns or no(n +$rass.

    [!ags\+('!i# n(, Conso!odi)irs :!t" Contro!

    Method Bas#a!Casing Rr' or Rr' +$ras +('!i# %oid Brint ...+('!i# %oid Bro#ssIt, ...

    #%blic 

    #ropert

    Bas#a!Casing No(n or :d#ti%

    Do na, #o!!#tion +ro+ritis *it$ a +!(ra! +$ras ds#ri'ing t$ it,s int$ #o!!#tion" as o++osd to a sing(!ar +$ras )o!!o*d ' /Kist or /Co!!#tion.

    Do na, ?oo!an 

    +ro+ritis *it$ an a))ir,ati% +$ras CanS&instad o) CantS&.O+tiona!!" o( #an a!so +r)i ?oo!an +ro+rtis *it$

    /Is" /Can" or /

  • 8/15/2019 DotNet Coding Standards

    35/66

    Page 20 of 

    tns.Do not (s /?)or or /:)tr +r)is or +ost)is

    to indi#at +r and +ost %nts.

    >> : #!os %nt t$at is raisd ')ora *indo* is #!osd.+('!i# %nt ;indo*C!osing

    Dele!ate Bas#a!Casing   Do add t$ s())i]E%nt

  • 8/15/2019 DotNet Coding Standards

    36/66

    Page 20 of 

    Do +r)i ds#ri+ti% t+ 

    +ara,tr na,s *it$ T. @o% sho%ld (sing T as t$ 

    t+ +ara,tr na, )or t+s *it$ on sing!!ttr t+ +ara,tr.

    1eso%rce Bas#a!Casing No(n Do +ro%id ds#ri+ti% 

    rat$r t$an s$ort idnti)irs.^+ t$, #on#is *$r +ossi'!" '(t do not sa#ri)i#rada'i!it )or s+a#.

    Do (s on! a!+$an(,ri# 

    #$ara#trs and (ndrs#ors inna,ing rso(r#s.

    :rg(,ntE#+tionIn%a!idNa,

    5 DEC4A1ATI(NS

    5.1 NUM2E1 (0 DEC4A1ATI(NS #E1 4INE

    On d#!aration +r !in is r#o,,ndd sin# it n#o(rags #o,,nting1. In ot$r *ords"

    int !%!A >> indntation !%! 

    int siA >> si o) ta'!

    Do not +(t ,or t$an on %aria'! or %aria'!s o) di))rnt t+s on t$ sa, !in *$n d#!aring t$,. 

    Ea,+!

    int a" 'A >>;$at is PaPX ;$at dos P'P stand )orX

    T$ a'o% a,+! a!so d,onstrats t$ dra*'a#&s o) nono'%io(s %aria'! na,s. ? #!ar *$n na,ing %aria'!s.

    5.2 INITIA4IATI(N

    Tr to initia!i !o#a! %aria'!s as soon as t$ ar d#!ard. or a,+!

  • 8/15/2019 DotNet Coding Standards

    37/66

    string na, Ki'rarUsr.(!!Na,A 

    or

    int #(rrS# DatTi,.No*.i!!is#ondA

    Not I) o( initia!i a dia!og tr to (s t$ (sing stat,nt

    (sing O+ni!Dia!og o+ni!Dia!og n* O+ni!Dia!og

    ...

    5.3 C4ASS AND INTE10ACE DEC4A1ATI(NS

    ;$n #oding CQ #!asss and intr)a#s" t$ )o!!o*ing )or,atting r(!s s$o(!d ' )o!!o*d

    • No s+a# 't*n a ,t$od na, and t$ +arnt$sis FF starting its +ara,tr !ist.

    • T$ o+ning 'ra# FF a++ars in t$ nt !in a)tr t$ d#!aration stat,nt.

    • T$ #!osing 'ra# F F starts a !in ' its!) indntd to ,at#$ its #orrs+onding o+ning 'ra#.

    or a,+! #!ass Sa,+! C!ass" IIntr)a#

    int ,IntA

    +('!i# Sa,+!int ,Int

    t$is.,Int ,IntA

    %oid In#

    __,IntA

    %oid E,+tt$od

  • 8/15/2019 DotNet Coding Standards

    38/66

  • 8/15/2019 DotNet Coding Standards

    39/66

    6 STATEMENTS

    6.1 SIM#4E STATEMENTS

    Ea#$ !in s$o(!d #ontain on! on stat,nt.

    6.2 1ETU1N STATEMENTS

    : rt(rn stat,nt s$o(!d not (s o(tr ,ost +arnt$ss.

    DonPt (s

    rt(rn n n _ 1 > 2A

    #o,,ndd to Us 

    rt(rn n n _ 1 > 2A

    7 E11(1S AND E>CE#TI(NS

    7.1 E>CE#TI(N TH1(7ING

    Do r+ort #(tion )ai!(rs ' t$ro*ing #+tions. E#+tions ar t$ +ri,ar ,ans o) r+orting rrors in )ra,*or&s. I) a ,,'r 

    #annot s(##ss)(!! do *$at it is dsignd to do" it s$o(!d ' #onsidrd an #(tion )ai!(r and an #+tion s$o(!d ' t$ro*n. Do not

    rt(rn  rror #ods.

    Do t$ro* t$ ,ost s+#i)i# t$ ,ost dri%d #+tion t$at ,a&s sns. or a,+!" t$ro* :rg(,ntN(!!E#+tion and not its 'as t+ 

    :rg(,ntE#+tion i) a n(!! arg(,nt is +assd. T$ro*ing Sst,.E#+tion as *!! as #at#$ing Sst,.E#+tion is nar! a!*as t$ *rong 

    t$ing to do.

    Do not (s #+tions )or t$ nor,a! )!o* o) #ontro!" i) +ossi'!. E#+t )or sst, )ai!(rs and o+rations *it$ +otntia! ra# #onditions" 

    o( s$o(!d *rit #od t$at dos not t$ro* #+tions. or a,+!" o( #an #$#& +r#onditions ')or #a!!ing a ,t$od t$at ,a )ai! and 

    t$ro* #+tions. or a,+!"

    >> CQ sa,+!i) #o!!#tion n(!! VV #o!!#tion.IsadOn!

    #o!!#tion.:ddadditiona!N(,'rA

  • 8/15/2019 DotNet Coding Standards

    40/66

    Do not t$ro* #+tions )ro, #+tion )i!tr '!o#&s. ;$n an #+tion )i!tr raiss an #+tion" t$ #+tion is #a(g$t ' t$ CK"

    and  t$ )i!tr rt(rns )a!s. T$is '$a%ior is indisting(is$a'! )ro, t$ )i!tr #(ting and rt(rning )a!s +!i#it! and is t$r)or %r

    di))i#(!t  to d'(g.

    P R?.NET sa,+!P T$is is 'ad dsign. T$ #+tion )i!tr ;$n #!a(s

    P ,a t$ro* an #+tion *$n t$ InnrE#+tion +ro+rt 

    P rt(rns n(!!

    Tr

    ...Cat#$ :s :rg(,ntE#+tion W;$n .InnrE5#+tion.ssag.Starts;it$6F4i!F7

    ...

    End Tr

    Do not +!i#it! t$ro* #+tions )ro, )ina!! '!o#&s. I,+!i#it! t$ro*n #+tions rs(!ting )ro, #a!!ing ,t$ods t$at t$ro* ar 

    a##+ta'!.

    7.2 E>CE#TI(N HAND4ING

    @o% sho%ld not s*a!!o* rrors ' #at#$ing nons+#i)i# #+tions" s(#$ as Sst,.E#+tion" Sst,.Sst,E#+tion" and so on in .NET

    #od. Do #at#$ on! s+#i)i# rrors t$at t$ #od &no*s $o* to $and!. -o( s$o(!d #at#$ a ,or s+#i)i# #+tion" or rt$ro* t$ gnra!

    #+tion as t$ !ast stat,nt in t$ #at#$ '!o#&. T$r ar #ass *$n s*a!!o*ing rrors in a++!i#ations is a##+ta'!" '(t s(#$ #ass ar

    rar.

    Good 

    tr

    ...

    #at#$Sst,.N(!!)rn#E#+tion #

    ...

  • 8/15/2019 DotNet Coding Standards

    41/66

    #at#$6Sst,.:rg(,ntO(tO)8angE5#+tion 5#7

    ...

  • 8/15/2019 DotNet Coding Standards

    42/66

    #at#$Sst,.In%a!idCastE#+tion #

    ...

    ?ad 

    tr

    ...#at#$ E#+tion

    ...

    Do +r)r (sing an ,+t t$ro* *$n #at#$ing and rt$ro*ing an #+tion. T$is is t$ 'st *a to +rsr% t$ #+tion #a!! sta#&.

    Good 

    tr

    ... >> Do so, rading *it$ t$ )i!#at#$

    )i!.Bosition +ositionA >> Un*ind on )ai!(r 

    t$ro*A >> t$ro*

    ?ad 

    tr

    ... >> Do so, rading *it$ t$ )i!

  • 8/15/2019 DotNet Coding Standards

    43/66

    #at#$ E#+tion

    )i!.Bosition +ositionA >> Un*ind on )ai!(r

  • 8/15/2019 DotNet Coding Standards

    44/66

    t$ro* A >> t$ro*

    8 1ES(U1CE C4EANU#Do not )or# gar'ag #o!!#tions *it$ GC.Co!!#t.

    8.1 T1@'0INA44@ 24(CB 

    Do (s tr)ina!! '!o#&s )or #!an(+ #od and tr#at#$ '!o#&s )or rror r#o%r #od. Do not (s #at#$ '!o#&s )or #!an(+ #od. Us(a!!" 

    t$ #!an(+ !ogi# ro!!s 'a#& rso(r# +arti#(!ar!" nati% rso(r# a!!o#ations. or a,+!"

    i!Stra, stra, n(!!A 

    tr

    stra, n* i!Stra,...A

    ...

    )ina!!

    i) stra, n(!!

    stra,.C!osA

    CQ and R?.NET +ro%id t$ (sing stat,nt t$at #an ' (sd instad o) +!ain tr)ina!! to #!an (+ o'#ts i,+!,nting t$ 

    IDis+osa'! intr)a#.

    >> CQ sa,+!

    (sing i!Stra, stra, n* i!Stra,...

    ...

  • 8/15/2019 DotNet Coding Standards

    45/66

  • 8/15/2019 DotNet Coding Standards

    46/66

    Page 30 of 

    an !ang(ag #onstr(#ts ,it tr)ina!! '!o#&s a(to,ati#a!! )or o(. Ea,+!s ar CQ>R? s‟  (sing stat,nt" CQ ‟s !o#&

    stat,nt"  R?‟s Sn#Ko#& stat,nt" CQ ‟s )ora#$ stat,nt" and R?‟s 4or Ea#$ stat,nt.

    8.2 2ASIC DIS#(SE #ATTE1N

    T$ 'asi# i,+!,ntation o) t$ +attrn in%o!%s i,+!,nting t$ Sst,.IDis+osa'! intr)a# and d#!aring t$ Dis+os'oo! ,t$od

    t$at  i,+!,nts a!! rso(r# #!an(+ !ogi# to ' s$ard 't*n t$ Dis+os ,t$od and t$ o+tiona! )ina!ir. B!as not t$at t$is

    s#tion dos  not dis#(ss +ro%iding a )ina!ir. ina!ia'! t+s ar tnsions to t$is 'asi# +attrn and ar dis#(ssd in t$ nt s#tion.

    T$ )o!!o*ing  a,+! s$o*s a si,+! i,+!,ntation o) t$ 'asi# +attrn

    +('!i# #!ass Dis+osa'!so(r# :!!o#ats t$ nati% rso(r#

    +('!i# %oid DoSo,t$ing

    i) dis+osd

    t$ro* n* O'#tDis+osdE#+tion...A

    >> No* #a!! so, nati% ,t$ods (sing t$ rso(r#

    ...

    +('!i# %oid Dis+os

    Dis+ostr(A 

    GC.S(++rssina!it$isA

  • 8/15/2019 DotNet Coding Standards

    47/66

    Page 30 of 

  • 8/15/2019 DotNet Coding Standards

    48/66

    Page 31 of

    +rot#td %irt(a! %oid Dis+os'oo! dis+osing

    >> Brot#t )ro, 'ing #a!!d ,(!ti+! ti,s. 

    i) dis+osd

    rt(rnA

    i) dis+osing

    >> C!an (+ a!! ,anagd rso(r#s.

    i) rso(r# n(!!

    rso(r#.Dis+osA

    dis+osd tr(A

    Do i,+!,nt t$ ?asi# Dis+os Battrn on t+s #ontaining instan#s o) dis+osa'! t+s.

    Do tnd t$ ?asi# Dis+os Battrn to +ro%id a )ina!ir on t+s $o!ding rso(r#s t$at nd to ' )rd +!i#it! and t$at do not $a% 

    )ina!irs. or a,+!" t$ +attrn s$o(!d ' i,+!,ntd on t+s storing (n,anagd ,,or '())rs.

    @o% sho%ld i,+!,nt t$ ?asi# Dis+os Battrn on #!asss t$at t$,s!%s don‟t $o!d (n,anagd rso(r#s or dis+osa'! o'#ts '(t ar 

    !i&! to $a% s('t+s t$at do. : grat a,+! o) t$is is t$ Sst,.IO.Stra, #!ass. :!t$o(g$ it is an a'stra#t 'as #!ass t$at dosn t‟  $o!d

    an rso(r#s" ,ost o) its s('#!asss do and '#a(s o) t$is" it i,+!,nts t$is +attrn.

    Do d#!ar a +rot#td %irt(a! %oid Dis+os'oo! dis+osing ,t$od to #ntra!i a!! !ogi# r!atd to r!asing (n,anagd rso(r#s. :!! 

    rso(r# #!an(+ s$o(!d o##(r in t$is ,t$od. T$ ,t$od is #a!!d )ro, 'ot$ t$ )ina!ir and t$ IDis+osa'!.Dis+os ,t$od. T$ 

  • 8/15/2019 DotNet Coding Standards

    49/66

    Page 32 of

    +ara,tr *i!! ' )a!s i) 'ing in%o&d )ro, insid a )ina!ir. It s$o(!d ' (sd to ns(r an #od r(nning d(ring )ina!iation is not a##ssing 

    ot$r )ina!ia'! o'#ts. Dtai!s o) i,+!,nting )ina!irs ar ds#ri'd in t$ nt s#tion.

    +rot#td %irt(a! %oid Dis+os'oo! dis+osing

  • 8/15/2019 DotNet Coding Standards

    50/66

    >> Brot#t )ro, 'ing #a!!d ,(!ti+! ti,s. 

    i) dis+osd

    rt(rnA

    i) dis+osing

    >> C!an (+ a!! ,anagd rso(r#s. 

    i) rso(r# n(!!

    rso(r#.Dis+osA

    dis+osd tr(A

    Do i,+!,nt t$ IDis+osa'! intr)a# ' si,+! #a!!ing Dis+ostr( )o!!o*d ' GC.S(++rssina!it$is. T$ #a!! to S(++rssina!i 

    s$o(!d on! o##(r i) Dis+ostr( #(ts s(##ss)(!!.

    +('!i# %oid Dis+os

    Dis+ostr(A 

    GC.S(++rssina!it$isA

    Do not ,a& t$ +ara,tr!ss Dis+os ,t$od %irt(a!. T$ Dis+os'oo! ,t$od is t$ on t$at s$o(!d ' o%rriddn ' s('#!asss.

    -o% sho%ld not t$ro* an #+tion )ro, *it$in Dis+os'oo! #+t (ndr #riti#a! sit(ations *$r t$ #ontaining +ro#ss $as 'n 

    #orr(+td !a&s" in#onsistnt s$ard stat" t#.. Usrs +#t t$at a #a!! to Dis+os *o(!d not rais an #+tion. or a,+!" #onsidr

    t$  ,an(a! tr)ina!! in t$is CQ sni++t

  • 8/15/2019 DotNet Coding Standards

    51/66

    Ttadr tr n* Stra,adri!.O+nadF)oo.ttFA 

    tr

  • 8/15/2019 DotNet Coding Standards

    52/66

    >> Do so, st()) )ina!!

    tr.Dis+osA>> or st()) 

    I) Dis+os #o(!d rais an #+tion" )(rt$r )ina!! '!o#& #!an(+ !ogi# *i!! not #(t. To *or& aro(nd t$is" t$ (sr *o(!d nd to *ra+ 

    %r #a!! to Dis+os *it$in t$ir )ina!! '!o#& in a tr '!o#&" *$i#$ !ads to %r #o,+! #!an(+ $and!rs. I) #(ting a Dis+os'oo! 

    dis+osing ,t$od" n%r t$ro* an #+tion i) dis+osing is )a!s. Doing so *i!! tr,inat t$ +ro#ss i) #(ting insid a )ina!ir #ontt.

    Do t$ro* an O'#tDis+osdE#+tion )ro, an ,,'r t$at #annot ' (sd a)tr t$ o'#t $as 'n dis+osd. 

    +('!i# #!ass Dis+osa'!so(r# > No* #a!! so, nati% ,t$ods (sing t$ rso(r#

    ...

    +rot#td %irt(a! %oid Dis+os'oo! dis+osing

    i) dis+osd

  • 8/15/2019 DotNet Coding Standards

    53/66

    rt(rnA

  • 8/15/2019 DotNet Coding Standards

    54/66

    >> C!an(+...dis+osd tr(A

    8.3 0INA4IA24E T@#ES

    ina!ia'! t+s ar t+s t$at tnd t$ ?asi# Dis+os Battrn ' o%rriding t$ )ina!ir and +ro%iding )ina!iation #od +at$ in

    t$  Dis+os'oo! ,t$od. T$ )o!!o*ing #od s$o*s an a,+! o) a )ina!ia'! t+

    +('!i# #!ass Co,+!so(r# Dis+osa'! $and! to a rso(r#

    +('!i# Co,+!so(r#

  • 8/15/2019 DotNet Coding Standards

    55/66

    `Co,+!so(r#

  • 8/15/2019 DotNet Coding Standards

    56/66

    Dis+os)a!sA

    +('!i# %oid Dis+os

    Dis+ostr(A 

    GC.S(++rssina!it$isA

    +rot#td %irt(a! %oid Dis+os'oo! dis+osing

    >> Brot#t )ro, 'ing #a!!d ,(!ti+! ti,s. 

    i) dis+osd

    rt(rnA

    i) dis+osing

    >> C!an (+ a!! ,anagd rso(r#s. 

    i) rso(r# n(!!

    rso(r#.Dis+osA

    >> C!an (+ a!! nati% rso(r#s. 

    !as?())r'())rA

    dis+osd tr(A

    Do ,a& a t+ )ina!ia'!" i) t$ t+ is rs+onsi'! )or r!asing an (n,anagd rso(r# t$at dos not $a% its o*n )ina!ir. ;$n 

    i,+!,nting t$ )ina!ir" si,+! #a!! Dis+os)a!s and +!a# a!! rso(r# #!an(+ !ogi# insid t$ Dis+os'oo! dis+osing ,t$od.

  • 8/15/2019 DotNet Coding Standards

    57/66

    +('!i# #!ass Co,+!so(r#

  • 8/15/2019 DotNet Coding Standards

    58/66

    ...`Co,+!so(r#>> s(,,ar

    >>> +rsnts a *ra++r #!ass )or a +i+ $and!.>>> >s(,,ar 

    [S#(ritCriti#a!S#(ritCriti#a!S#o+.E%rt$ing"

  • 8/15/2019 DotNet Coding Standards

    59/66

  • 8/15/2019 DotNet Coding Standards

    60/66

    'astr(

    +('!i# Sa)Bi+

  • 8/15/2019 DotNet Coding Standards

    61/66

    'as.St

  • 8/15/2019 DotNet Coding Standards

    62/66

    [8!ia'i!itContra#t6Consistn#.;i!!NotCorr(+tStat" Cr.S(##ss7" 

    D!!I,+ortF&rn!32.d!!F" C$arSt C$arSt.:(to" StKastError tr(\ +ri%at stati# trn IntBtr Ko#a!rIntBtr $,A

    +rot#td o%rrid 'oo! !as

  • 8/15/2019 DotNet Coding Standards

    63/66

    Dis+os)a!sA

  • 8/15/2019 DotNet Coding Standards

    64/66

    +('!i# %oid Dis+os

    Dis+ostr(A 

    GC.S(++rssina!it$isA

    +rot#td %irt(a! %oid Dis+os'oo! dis+osing

    >> ...

    +('!i# #!ass Dis+osa'!S('#!ass Dis+osa'!?as

    +rot#td o%rrid %oid Dis+os'oo! dis+osing

    tr

    i) dis+osing

    >> C!an (+ ,anagd rso(r#s.

    >> C!an (+ nati% rso(r#s.

    )ina!!

    9 C(MM(N (NE 4INE1S

    'as.Dis+osdis+osingA

  • 8/15/2019 DotNet Coding Standards

    65/66

    1. Us !ong na,s )or %aria'!s

    2. Initia!i %aria'!s at t$ ti, o) d#!aration

  • 8/15/2019 DotNet Coding Standards

    66/66

    Page 40 of 

    3. Us .E%als instad o)

    4. Us #onditiona! o+rator X instad o) I

    5. Us XX *$n +#ting t$ n(!! r)rn#

    6. Us .Kngt$ #o,+arison to %a!idat string *it$ %a!(s7. Us String?(i!dr instad o) strings #on#atnation

    8. Us String?(i!dr r+!a# instad o) string.+!a#

    9. Us sing! !in assign,nts )or #o,,on %a!(s

    10. :%oid tr #at#$ as ,(#$ +ossi'!

    11. Organi Usings and r,o% V sort t$ r)rn#s

    12. Us *$it s+a#s *it$in %r +rssion

    13. S+arat (sr ,t$ods )ro, sst, gnratd ,t$ods. Us o) gion

    14. Gi% :(t$or dtai!s on %r +ag

    15. aintain t$ $istor o) ,odi)i#ation

    16. ;rit t$ #od in as s,a!! r(sa'! ,t$ods as +ossi'!.

    17. N%r assign o'#ts to n(!! *$n t$ ar *it$in t$ !oo+

    18. I) o( #an (s t$ GC.^+:!i%" ,a& t$ 'st (s o) it

    19. Tr to s+arat t$ ina!i ,t$od into a di))rnt #!ass and instantiat in t$ #a!!r #!ass t$at i,+!,nts t$ IDis+osa'! intr)a#

    20. a& (s o) ;a&)rn# to a%oid t$ ,(!ti+! #onn#tions > rads )ro, stati# #ontnt

    21. Us int.TrBars" instad o) Con%rt.ToInt or int.Bars  N%r V E%r Tr(st

    t$ Usr In+(t" do (s En#oding *$r %r n#ssar