SlideShare a Scribd company logo
1 of 85
HHiigghh--QQuuaalliittyy PPrrooggrraammmmiinngg 
CCooddee CCoonnssttrruuccttiioonn –– PPaarrtt II 
RReevveeaalliinngg tthhee SSeeccrreettss ooff SSeellff--DDooccuummeennttiinngg CCooddee 
SSvveettlliinn NNaakkoovv 
TTeelleerriikk CCoorrppoorraattiioonn 
wwwwww..tteelleerriikk..ccoomm 
FFoorr CC## DDeevveellooppeerrss
TTaabbllee ooff CCoonntteennttss 
WWhhaatt iiss HHiigghh--QQuuaalliittyy PPrrooggrraammmmiinngg CCooddee?? 
EExxtteerrnnaall aanndd IInntteerrnnaall CCooddee QQuuaalliittyy 
NNaammiinngg IIddeennttiiffiieerrss 
NNaammiinngg TTyyppeess,, CCllaasssseess,, IInntteerrffaacceess,, 
EEnnuummeerraattiioonnss,, PPrrooppeerrttiieess,, MMeetthhooddss,, 
PPaarraammeetteerrss,, VVaarriiaabblleess,, CCoonnssttaannttss,, eettcc.. 
 CCooddee FFoorrmmaattttiinngg 
DDeessiiggnniinngg HHiigghh--QQuuaalliittyy CCllaasssseess 
AAbbssttrraaccttiioonn,, EEnnccaappssuullaattiioonn,, 
IInnhheerriittaannccee,, RReeaassoonnss ttoo CCrreeaattee aa CCllaassss 
2
WWhhaatt iiss HHiigghh--QQuuaalliittyy 
PPrrooggrraammmmiinngg CCooddee??
WWhhyy tthhee CCooddee QQuuaalliittyy IIss 
IImmppoorrttaanntt?? 
WWhhaatt ddooeess tthhiiss ccooddee ddoo?? IIss iitt ccoorrrreecctt?? 
4 
ssttaattiicc vvooiidd MMaaiinn(()) 
{{ 
iinntt vvaalluuee==001100,, ii==55,, ww;; 
sswwiittcchh((vvaalluuee)){{ccaassee 
1100::ww==55;;CCoonnssoollee..WWrriitteeLLiinnee((ww));;bbrreeaakk;;ccaassee 99::ii==00;;bbrreeaakk;; 
ccaassee 88::CCoonnssoollee..WWrriitteeLLiinnee((""88 ""));;bbrreeaakk;; 
ddeeffaauulltt::CCoonnssoollee..WWrriitteeLLiinnee((""ddeeff ""));;{{ 
CCoonnssoollee..WWrriitteeLLiinnee((""hhoohhoo ""));; }} 
ffoorr ((iinntt kk == 00;; kk << ii;; kk++++,, CCoonnssoollee..WWrriitteeLLiinnee((kk -- 
''ff''))));;bbrreeaakk;;}} {{ CCoonnssoollee..WWrriitteeLLiinnee((""lloooopp!!""));; }} 
}}
WWhhyy tthhee CCooddee QQuuaalliittyy IIss 
IImmppoorrttaanntt?? ((22)) 
NNooww tthhee ccooddee iiss ffoorrmmaatttteedd,, bbuutt iiss ssttiillll uunncclleeaarr.. 
5 
ssttaattiicc vvooiidd MMaaiinn(()) 
{{ 
iinntt vvaalluuee == 001100,, ii == 55,, ww;; 
sswwiittcchh ((vvaalluuee)) 
{{ 
ccaassee 1100:: ww == 55;; CCoonnssoollee..WWrriitteeLLiinnee((ww));; bbrreeaakk;; 
ccaassee 99:: ii == 00;; bbrreeaakk;; 
ccaassee 88:: CCoonnssoollee..WWrriitteeLLiinnee((""88 ""));; bbrreeaakk;; 
ddeeffaauulltt:: 
CCoonnssoollee..WWrriitteeLLiinnee((""ddeeff ""));; 
CCoonnssoollee..WWrriitteeLLiinnee((""hhoohhoo ""));; 
ffoorr ((iinntt kk == 00;; kk << ii;; kk++++,, CCoonnssoollee..WWrriitteeLLiinnee((kk -- ''ff'')))) ;; 
bbrreeaakk;; 
}} 
CCoonnssoollee..WWrriitteeLLiinnee((""lloooopp!!""));; 
}}
SSooffttwwaarree QQuuaalliittyy 
 EExxtteerrnnaall qquuaalliittyy 
DDooeess tthhee ssooffttwwaarree bbeehhaavvee ccoorrrreeccttllyy?? 
AArree tthhee pprroodduucceedd rreessuullttss ccoorrrreecctt?? 
DDooeess tthhee ssooffttwwaarree rruunn ffaasstt?? 
IIss tthhee ssooffttwwaarree UUII eeaassyy--ttoo--uussee?? 
 IInntteerrnnaall qquuaalliittyy 
IItt tthhee ccooddee eeaassyy ttoo rreeaadd aanndd uunnddeerrssttaanndd?? 
IItt tthhee ccooddee wweellll ssttrruuccttuurreedd?? 
IIss tthhee ccooddee eeaassyy ttoo mmooddiiffyy?? 
6
WWhhaatt iiss HHiigghh--QQuuaalliittyy 
PPrrooggrraammmmiinngg CCooddee?? 
HHiigghh--qquuaalliittyy pprrooggrraammmmiinngg ccooddee:: 
EEaassyy ttoo rreeaadd aanndd uunnddeerrssttaanndd 
EEaassyy ttoo mmooddiiffyy aanndd mmaaiinnttaaiinn 
CCoorrrreecctt bbeehhaavviioorr iinn aallll ccaasseess 
WWeellll tteesstteedd 
WWeellll aarrcchhiitteeccttuurreedd aanndd ddeessiiggnneedd 
WWeellll ddooccuummeenntteedd 
SSeellff--ddooccuummeennttiinngg ccooddee 
WWeellll ffoorrmmaatttteedd 
7
CCooddee CCoonnvveennttiioonnss 
 CCooddee ccoonnvveennttiioonnss aarree ffoorrmmaall gguuiiddeelliinneess aabboouutt 
tthhee ssttyyllee ooff tthhee ssoouurrccee ccooddee:: 
CCooddee ffoorrmmaattttiinngg ccoonnvveennttiioonnss 
IInnddeennttaattiioonn,, wwhhiitteessppaaccee,, eettcc.. 
NNaammiinngg ccoonnvveennttiioonnss 
PPaassccaallCCaassee oorr ccaammeellCCaassee,, pprreeffiixxeess,, ssuuffffiixxeess,, eettcc.. 
BBeesstt pprraaccttiicceess 
CCllaasssseess,, iinntteerrffaacceess,, eennuummeerraattiioonnss,, ssttrruuccttuurreess,, 
iinnhheerriittaannccee,, eexxcceeppttiioonnss,, pprrooppeerrttiieess,, eevveennttss,, 
ccoonnssttrruuccttoorrss,, ffiieellddss,, ooppeerraattoorrss,, eettcc.. 
8
CCooddee CCoonnvveennttiioonnss ((22)) 
MMiiccrroossoofftt hhaass ooffffiicciiaall ccooddee ccoonnvveennttiioonnss ccaalllleedd 
DDeessiiggnn GGuuiiddeelliinneess ffoorr DDeevveellooppiinngg CCllaassss LLiibbrraarriieess:: 
hhttttpp::////mmssddnn..mmiiccrroossoofftt..ccoomm//eenn--uuss//lliibbrraarryy//mmss22229004422..aassppxx 
 LLaarrggee oorrggaanniizzaattiioonnss ffoollllooww ssttrriicctt ccoonnvveennttiioonnss 
CCooddee ccoonnvveennttiioonnss ccaann vvaarryy iinn ddiiffffeerreenntt tteeaammss 
MMoosstt ccoonnvveennttiioonnss ddeevveellooppeerrss ffoollllooww tthhee ooffffiicciiaall 
MMiiccrroossoofftt''ss rreeccoommmmeennddaattiioonnss bbuutt eexxtteenndd tthheemm 
 HHiigghh--qquuaalliittyy ccooddee ggooeess bbeeyyoonndd ccooddee ccoonnvveennttiioonnss 
SSooffttwwaarree qquuaalliittyy iiss nnoott jjuusstt aa sseett ooff ccoonnvveennttiioonnss –– 
iittss iiss aa wwaayy ooff tthhiinnkkiinngg 
9
MMaannaaggiinngg CCoommpplleexxiittyy 
MMaannaaggiinngg ccoommpplleexxiittyy ppllaayyss aa cceennttrraall rroollee iinn 
ssooffttwwaarree ccoonnssttrruuccttiioonn 
MMiinniimmiizzee tthhee aammoouunntt ooff ccoommpplleexxiittyy tthhaatt aannyyoonnee’’ss 
bbrraaiinn hhaass ttoo ddeeaall wwiitthh aatt cceerrttaaiinn ttiimmee 
 AArrcchhiitteeccttuurree aanndd ddeessiiggnn cchhaalllleennggeess 
DDeessiiggnn mmoodduulleess aanndd ccllaasssseess ttoo rreedduuccee ccoommpplleexxiittyy 
 CCooddee ccoonnssttrruuccttiioonn cchhaalllleennggeess 
AAppppllyy ggoooodd ssooffttwwaarree ccoonnssttrruuccttiioonn pprraaccttiicceess:: 
ccllaasssseess,, mmeetthhooddss,, vvaarriiaabblleess,, nnaammiinngg,, ssttaatteemmeennttss,, 
eerrrroorr hhaannddlliinngg,, ffoorrmmaattttiinngg,, ccoommmmeennttss,, eettcc.. 
10
MMaannaaggiinngg CCoommpplleexxiittyy ((22)) 
KKeeyy ttoo bbeeiinngg aann eeffffeeccttiivvee pprrooggrraammmmeerr:: 
MMaaxxiimmiizziinngg tthhee ppoorrttiioonn ooff aa pprrooggrraamm tthhaatt yyoouu 
ccaann ssaaffeellyy iiggnnoorree wwhhiillee wwoorrkkiinngg oonn aannyy oonnee 
sseeccttiioonn ooff ccooddee 
MMoosstt pprraaccttiicceess ddiissccuusssseedd llaatteerr pprrooppoossee wwaayyss ttoo 
aacchhiieevvee tthhiiss iimmppoorrttaanntt ggooaall 
11
KKeeyy CChhaarraacctteerriissttiiccss ooff 
HHiigghh--QQuuaalliittyy CCooddee 
 CCoorrrreecctt bbeehhaavviioorr 
CCoonnffoorrmmiinngg ttoo tthhee rreeqquuiirreemmeennttss 
SSttaabbllee,, nnoo hhaannggss,, nnoo ccrraasshheess 
BBuugg ffrreeee 
CCoorrrreecctt rreessppoonnssee ttoo iinnccoorrrreecctt uussaaggee 
 EEaassyy ttoo rreeaadd 
 EEaassyy ttoo uunnddeerrssttaanndd 
MMaaiinnttaaiinnaabbllee –– eeaassyy ttoo mmooddiiffyy wwhheenn rreeqquuiirreedd 
12
NNaammiinngg IIddeennttiiffiieerrss 
NNaammiinngg CCllaasssseess,, IInntteerrffaacceess,, EEnnuummeerraattiioonnss,, 
MMeetthhooddss,, VVaarriiaabblleess aanndd CCoonnssttaannttss
GGeenneerraall NNaammiinngg GGuuiiddeelliinneess 
AAllwwaayyss uussee EEnngglliisshh 
HHooww yyoouu wwiillll ffeeeell iiff yyoouu rreeaadd VViieettnnaammeessee ccooddee 
wwiitthh vvaarriiaabblleess nnaammeedd iinn VViieettnnaammeessee?? 
EEnngglliisshh iiss tthhee oonnllyy llaanngguuaaggee tthhaatt aallll ssooffttwwaarree 
ddeevveellooppeerrss ssppeeaakk 
AAvvooiidd aabbbbrreevviiaattiioonnss 
EExxaammppllee:: ssccrrppCCnntt vvss.. ssccrriippttssCCoouunntt 
AAvvooiidd hhaarrdd--ttoo--pprroonnoouunnccee nnaammeess 
EExxaammppllee:: ddttbbggRReeggEExxPPttrrnn vvss.. 
ddaatteeTTiimmeeBBuullggaarriiaannRReeggEExxPPaatttteerrnn 
14
UUssee MMeeaanniinnggffuull NNaammeess 
 AAllwwaayyss pprreeffeerr uussiinngg mmeeaanniinnggffuull nnaammeess 
NNaammeess sshhoouulldd aannsswweerr tthheessee qquueessttiioonnss:: 
WWhhaatt ddooeess tthhiiss ccllaassss ddoo?? WWhhaatt iiss tthhee iinntteenntt ooff tthhiiss 
vvaarriiaabbllee?? WWhhaatt iiss tthhiiss vvaarriiaabbllee // ccllaassss uusseedd ffoorr?? 
EExxaammpplleess:: 
FFaaccttoorriiaallCCaallccuullaattoorr,, ssttuuddeennttssCCoouunntt,, 
MMaatthh..PPII,, ccoonnffiiggFFiilleeNNaammee,, CCrreeaatteeRReeppoorrtt 
IInnccoorrrreecctt eexxaammpplleess:: 
kk,, kk22,, kk33,, jjuunnkk,, ff3333,, KKJJJJ,, bbuuttttoonn11,, vvaarriiaabbllee,, 
tteemmpp,, ttmmpp,, tteemmpp__vvaarr,, ssoommeetthhiinngg,, ssoommeeVVaalluuee 
15
NNaammeess SShhoouulldd bbee 
MMeeaanniinnggffuull iinn TThheeiirr CCoonntteexxtt 
WWhheetthheerr aa nnaammee iiss mmeeaanniinnggffuull oorr nnoott ddeeppeennddss oonn 
iittss ccoonntteexxtt ((iittss eenncclloossiinngg ttyyppee)) 
 EExxaammpplleess ooff mmeeaanniinnggffuull nnaammeess:: 
GGeenneerraattee(()) iinn tthhee ccllaassss LLaabbyyrriinntthhGGeenneerraattoorr 
FFiinndd((ssttrriinngg ffiilleeNNaammee)) iinn tthhee ccllaassss FFiilleeFFiinnddeerr 
DDeeppoossiitt((ddeecciimmaall aammoouunntt)) iinn tthhee ccllaassss AAccccoouunntt 
 EExxaammpplleess ooff mmeeaanniinngglleessss nnaammeess:: 
GGeenneerraattee(()) iinn tthhee ccllaassss PPrrooggrraamm 
FFiinndd((ssttrriinngg ffiilleeNNaammee)) iinn tthhee ccllaassss PPrrooggrraamm 
16
FFaakkee MMeeaanniinnggffuull NNaammeess 
 JJuunniioorr ddeevveellooppeerrss oofftteenn uussee mmeeaanniinnggffuull nnaammeess 
tthhaatt aarree iinn ffaacctt mmeeaanniinngglleessss 
BBaadd nnaammiinngg eexxaammpplleess:: 
TTooppiicc66EExxeerrcciissee1122,, LLooooppssEExxeerrcciissee1122,, 
PPrroobblleemm77,, OOOOPPLLeeccttuurree__LLaassttEExxeerrcciissee 
YYeess,, TTooppiicc66EExxeerrcciissee1122 iinnddiiccaatteess tthhaatt tthhiiss iiss 
ssoolluuttiioonn ttoo eexxeerrcciissee 1122,, bbuutt wwhhaatt iiss iitt aabboouutt?? 
BBeetttteerr nnaammiinngg:: 
MMaaxxiimmaallNNuummbbeerrssSSuubbsseeqquueennccee 
17
NNaammiinngg TTyyppeess 
NNaammiinngg ttyyppeess ((ccllaasssseess,, ssttrruuccttuurreess,, eettcc..)) 
UUssee PPaassccaallCCaassee cchhaarraacctteerr ccaassiinngg 
EExxaammpplleess:: 
RReeccuurrssiivveeFFaaccttoorriiaallCCaallccuullaattoorr,, TTrreeeeSSeett,, 
XXmmllDDooccuummeenntt,, IIEEnnuummeerraabbllee,, CCoolloorr,, TTrreeeeNNooddee,, 
IInnvvaalliiddTTrraannssaaccttiioonnEExxcceeppttiioonn,, MMaaiinnFFoorrmm 
IInnccoorrrreecctt eexxaammpplleess:: 
rreeccuurrssiivveeFFaaccttoorriiaallCCaallccuullaattoorr,, 
rreeccuurrssiivvee__ffaaccttoorriiaall__ccaallccuullaattoorr,, 
RREECCUURRSSIIVVEE__FFAACCTTOORRIIAALL__CCAALLCCUULLAATTOORR 
18
NNaammiinngg CCllaasssseess aanndd SSttrruuccttuurreess 
UUssee tthhee ffoolllloowwiinngg ffoorrmmaattss:: 
[[NNoouunn]] 
[[AAddjjeeccttiivvee]] ++ [[NNoouunn]] 
 EExxaammpplleess:: 
SSttuuddeenntt,, FFiilleeSSyysstteemm,, BBiinnaarryyTTrreeeeNNooddee,, 
CCoonnssttaannttss,, MMaatthhUUttiillss,, TTeexxttBBooxx,, CCaalleennddaarr 
 IInnccoorrrreecctt eexxaammpplleess:: 
MMoovvee,, FFiinnddUUsseerrss,, FFaasstt,, OOppttiimmiizzee,, EExxttrreemmllyy,, 
FFaassttFFiinnddIInnDDaattaabbaassee,, CChheecckk 
19
NNaammiinngg IInntteerrffaacceess 
 FFoolllloowwiinngg ffoorrmmaattss aarree aacccceeppttaabbllee:: 
''II'' ++ [[VVeerrbb]] ++ ''aabbllee'' 
''II'' ++ [[NNoouunn]],, ''II'' ++ [[AAddjjeeccttiivvee]] ++ [[NNoouunn]] 
 EExxaammpplleess:: 
IIEEnnuummeerraabbllee,, IIFFoorrmmaattttaabbllee,, IIDDaattaaRReeaaddeerr,, 
IILLiisstt,, IIHHttttppMMoodduullee,, IICCoommmmaannddEExxeeccuuttoorr 
 IInnccoorrrreecctt eexxaammpplleess:: 
LLiisstt,, FFiinnddUUsseerrss,, IIFFaasstt,, IIMMeemmoorryyOOppttiimmiizzee,, 
OOppttiimmiizzeerr,, FFaassttFFiinnddIInnDDaattaabbaassee,, CChheecckkBBooxx 
20
NNaammiinngg EEnnuummeerraattiioonnss 
 SSeevveerraall ffoorrmmaattss aarree aacccceeppttaabbllee:: 
[[NNoouunn]] oorr [[VVeerrbb]] oorr [[AAddjjeeccttiivvee]] 
UUssee tthhee ssaammee ssttyyllee ffoorr aallll mmeemmbbeerrss 
 EExxaammpplleess:: 
eennuumm DDaayy {{MMoonnddaayy,, TTuueessddaayy,, WWeeddnneessddaayy,, ……}},, 
eennuumm AAppppSSttaattee {{RRuunnnniinngg,, FFiinniisshheedd,, ……}},, 
eennuumm WWiinnddoowwSSttaattee {{NNoorrmmaall,, MMaaxxiimmiizzeedd,, ……}} 
 IInnccoorrrreecctt eexxaammpplleess:: 
eennuumm CCoolloorr {{rreedd,, ggrreeeenn,, bblluuee,, wwhhiittee}},, 
eennuumm PPAAGGEE__FFOORRMMAATT {{AA44,, AA55,, AA33,, LLEEGGAALL,, ……}} 
21
NNaammiinngg SSppeecciiaall CCllaasssseess 
 EExxcceeppttiioonnss 
AAdddd ''EExxcceeppttiioonn'' aass ssuuffffiixx 
UUssee iinnffoorrmmaattiivvee nnaammee 
EExxaammppllee:: FFiilleeNNoottFFoouunnddEExxcceeppttiioonn 
IInnccoorrrreecctt eexxaammppllee:: FFiilleeNNoottFFoouunnddEErrrroorr 
DDeelleeggaattee CCllaasssseess 
AAdddd ''DDeelleeggaattee'' oorr ''EEvveennttHHaannddlleerr'' aass ssuuffffiixx 
EExxaammppllee:: DDoowwnnllooaaddFFiinniisshheeddDDeelleeggaattee 
IInnccoorrrreecctt eexxaammppllee:: WWaakkeeUUppNNoottiiffiiccaattiioonn 
22
TThhee LLeennggtthh ooff CCllaassss NNaammeess 
HHooww lloonngg ccoouulldd bbee tthhee nnaammee ooff aa ccllaassss // ssttrruucctt // 
iinntteerrffaaccee // eennuumm?? 
TThhee nnaammee sshhoouulldd bbee aass lloonngg aass rreeqquuiirreedd 
DDoonn''tt aabbbbrreevviiaattee tthhee nnaammeess iiff tthhiiss ccoouulldd mmaakkee 
tthheemm uunncclleeaarr 
YYoouurr IIDDEE hhaass aauuttooccoommpplleettee,, rriigghhtt?? 
 EExxaammpplleess:: FFiilleeNNoottFFoouunnddEExxcceeppttiioonn,, 
CCuussttoommeerrSSuuppppoorrttNNoottiiffiiccaattiioonnSSeerrvviiccee 
 IInnccoorrrreecctt eexxaammpplleess:: FFNNFFEExxcceeppttiioonn,, 
CCuussttSSuuppppNNoottiiffSSrrvvcc 
23
NNaammiinngg NNaammeessppaacceess 
NNaammeessppaacceess nnaammiinngg gguuiiddeelliinneess 
UUssee PPaassccaallCCaassee 
 FFoolllloowwiinngg ffoorrmmaattss aarree aacccceeppttaabbllee:: 
CCoommppaannyy..PPrroodduucctt..CCoommppoonneenntt.. …… 
PPrroodduucctt..CCoommppoonneenntt..…… 
 EExxaammppllee:: 
TTeelleerriikk..WWiinnCCoonnttrroollss..GGrriiddVViieeww 
 IInnccoorrrreecctt eexxaammppllee:: 
 TTeelleerriikk__WWiinnCCoonnttrroollssGGrriiddVViieeww,, CCllaasssseess 
24
NNaammiinngg AAsssseemmbblliieess 
AAsssseemmbbllyy nnaammeess sshhoouulldd ffoollllooww tthhee rroooott 
nnaammeessppaaccee iinn iittss ccllaassss hhiieerraarrcchhyy 
 EExxaammpplleess:: 
TTeelleerriikk..WWiinnCCoonnttrroollss..GGrriiddVViieeww..ddllll 
OOrraaccllee..DDaattaaAAcccceessss..ddllll 
IInntteerroopp..CCAAPPIICCOOMM..ddllll 
 IInnccoorrrreecctt eexxaammpplleess:: 
TTeelleerriikk__WWiinnCCoonnttrroollssGGrriiddVViieeww..ddllll 
OOrraacclleeDDaattaaAAcccceessss..ddllll 
25
NNaammiinngg MMeetthhooddss 
MMeetthhooddss nnaammiinngg gguuiiddeelliinneess 
MMeetthhoodd nnaammeess sshhoouulldd bbee mmeeaanniinnggffuull 
SShhoouulldd aannsswweerr tthhee qquueessttiioonn:: 
WWhhaatt ddooeess tthhiiss mmeetthhoodd ddoo?? 
IIff yyoouu ccaannnnoott ffiinndd aa ggoooodd nnaammee ffoorr aa mmeetthhoodd,, 
tthhiinnkk aabboouutt ddooeess iitt hhaavvee cclleeaarr iinntteenntt 
 EExxaammpplleess:: FFiinnddSSttuuddeenntt,, LLooaaddRReeppoorrtt,, SSiinnuuss 
 IInnccoorrrreecctt eexxaammpplleess:: MMeetthhoodd11,, DDooSSoommeetthhiinngg,, 
HHaannddlleeSSttuuffff,, SSaammpplleeMMeetthhoodd,, DDiirrttyyHHaacckk 
26
NNaammiinngg MMeetthhooddss ((22)) 
UUssee PPaassccaallCCaassee cchhaarraacctteerr ccaassiinngg 
EExxaammppllee:: LLooaaddSSeettttiinnggss,, nnoott llooaaddSSeettttiinnggss 
 PPrreeffeerr tthhee ffoolllloowwiinngg ffoorrmmaattss:: 
[[VVeerrbb]] 
[[VVeerrbb]] ++ [[NNoouunn]],, [[VVeerrbb]] ++ [[AAddjjeeccttiivvee]] ++ [[NNoouunn]] 
 EExxaammpplleess:: SShhooww,, LLooaaddSSeettttiinnggssFFiillee,, 
FFiinnddNNooddeeBByyPPaatttteerrnn,, TTooSSttrriinngg,, PPrriinnttLLiisstt 
 IInnccoorrrreecctt eexxaammpplleess:: SSttuuddeenntt,, CCoouunntteerr,, WWhhiittee,, 
GGeenneerraattoorr,, AApppprrooxxiimmaattiioonn,, MMaatthhUUttiillss 
27
MMeetthhooddss RReettuurrnniinngg aa VVaalluuee 
MMeetthhooddss rreettuurrnniinngg vvaalluueess sshhoouulldd ddeessccrriibbee tthhee 
rreettuurrnneedd vvaalluuee 
 EExxaammpplleess:: 
CCoonnvveerrttMMeetteerrssTTooIInncchheess,, nnoott MMeetteerrssIInncchheess 
oorr CCoonnvveerrtt oorr CCoonnvveerrttUUnniitt 
MMeetteerrss22IInncchheess iiss ssttiillll aacccceeppttaabbllee 
CCaallccuullaatteeSSiinnuuss iiss ggoooodd 
SSiinnuuss iiss aallssoo aacccceeppttaabbllee 
EEnnssuurree tthhaatt tthhee uunniitt ooff mmeeaassuurree ooff oobbvviioouuss 
PPrreeffeerr MMeeaassuurreeFFoonnttIInnPPiixxeellss ttoo MMeeaassuurreeFFoonntt 
28
SSiinnggllee PPuurrppoossee ooff AAllll MMeetthhooddss 
MMeetthhooddss sshhoouulldd hhaavvee aa ssiinnggllee ppuurrppoossee!! 
OOtthheerrwwiissee tthheeyy ccaannnnoott bbee nnaammeedd wweellll 
HHooww ttoo nnaammee aa mmeetthhoodd tthhaatt ccrreeaatteess aannnnuuaall 
iinnccoommeess rreeppoorrtt,, ddoowwnnllooaaddss uuppddaatteess ffrroomm 
iinntteerrnneett aanndd ssccaannss tthhee ssyysstteemm ffoorr vviirruusseess?? 
CCrreeaatteeAAnnnnuuaallIInnccoommeessRReeppoorrttDDoowwnnllooaaddUUppddaa 
tteessAAnnddSSccaannFFoorrVViirruusseess iiss aa nniiccee nnaammee,, rriigghhtt?? 
MMeetthhooddss tthhaatt hhaavvee mmuullttiippllee ppuurrppoosseess ((wweeaakk 
ccoohheessiioonn)) aarree hhaarrdd ttoo bbee nnaammeedd 
NNeeeedd ttoo bbee rreeffaaccttoorreedd iinnsstteeaadd ooff nnaammeedd 
29
CCoonnssiisstteennccyy iinn MMeetthhooddss NNaammiinngg 
 UUssee ccoonnssiisstteenntt nnaammiinngg iinn tthhee eennttiirree pprroojjeecctt 
LLooaaddFFiillee,, LLooaaddIImmaaggeeFFrroommFFiillee,, LLooaaddSSeettttiinnggss,, 
LLooaaddFFoonntt,, LLooaaddLLiibbrraarryy,, bbuutt nnoott RReeaaddTTeexxttFFiillee 
UUssee ccoonnssiisstteennttllyy tthhee ooppppoossiitteess aatt tthhee ssaammee 
lleevveell ooff aabbssttrraaccttiioonn:: 
LLooaaddLLiibbrraarryy vvss.. UUnnllooaaddLLiibbrraarryy,, bbuutt nnoott 
FFrreeeeHHaannddllee 
OOppeennFFiillee vvss.. CClloosseeFFiillee,, bbuutt nnoott 
DDeeaallllooccaatteeRReessoouurrccee 
GGeettNNaammee vvss.. SSeettNNaammee,, bbuutt nnoott AAssssiiggnnNNaammee 
30
TThhee LLeennggtthh ooff MMeetthhoodd NNaammeess 
HHooww lloonngg ccoouulldd bbee tthhee nnaammee ooff aa mmeetthhoodd?? 
TThhee nnaammee sshhoouulldd bbee aass lloonngg aass rreeqquuiirreedd 
DDoonn''tt aabbbbrreevviiaattee 
YYoouurr IIDDEE hhaass aauuttooccoommpplleettee 
 EExxaammpplleess:: 
LLooaaddCCuussttoommeerrSSuuppppoorrttNNoottiiffiiccaattiioonnSSeerrvviiccee,, 
CCrreeaatteeMMoonntthhllyyAAnnddAAnnnnuuaallIInnccoommeessRReeppoorrtt 
 IInnccoorrrreecctt eexxaammpplleess:: 
LLooaaddCCuussttSSuuppppSSrrvvcc,, CCrreeaatteeMMoonntthhIInnccRReeppoorrtt 
31
NNaammiinngg MMeetthhoodd PPaarraammeetteerrss 
MMeetthhoodd ppaarraammeetteerrss nnaammeess 
PPrreeffeerrrreedd ffoorrmm:: [[NNoouunn]] oorr [[AAddjjeeccttiivvee]] ++ [[NNoouunn]] 
SShhoouulldd bbee iinn ccaammeellCCaassee 
SShhoouulldd bbee mmeeaanniinnggffuull 
UUnniitt ooff mmeeaassuurree sshhoouulldd bbee oobbvviioouuss 
 EExxaammpplleess:: ffiirrssttNNaammee,, rreeppoorrtt,, uusseerrssLLiisstt,, 
ffoonnttSSiizzeeIInnPPiixxeellss,, ssppeeeeddKKmmHH,, ffoonntt 
 IInnccoorrrreecctt eexxaammpplleess:: pp,, pp11,, pp22,, ppooppuullaattee,, 
LLaassttNNaammee,, llaasstt__nnaammee,, ccoonnvveerrttIImmaaggee 
32
NNaammiinngg VVaarriiaabblleess 
VVaarriiaabbllee nnaammeess 
SShhoouulldd bbee iinn ccaammeellCCaassee 
PPrreeffeerrrreedd ffoorrmm:: [[NNoouunn]] oorr [[AAddjjeeccttiivvee]] ++ [[NNoouunn]] 
SShhoouulldd eexxppllaaiinn tthhee ppuurrppoossee ooff tthhee vvaarriiaabbllee 
IIff yyoouu ccaann''tt ffiinndd ggoooodd nnaammee ffoorr aa vvaarriiaabbllee cchheecckk iiff 
iitt hhaass aa ssiinnggllee ppuurrppoossee 
EExxcceeppttiioonn:: vvaarriiaabblleess wwiitthh vveerryy ssmmaallll ssccooppee,, ee..gg.. 
tthhee iinnddeexx vvaarriiaabbllee iinn aa 33--lliinneess lloonngg ffoorr--lloooopp 
NNaammeess sshhoouulldd bbee ccoonnssiisstteenntt iinn tthhee pprroojjeecctt 
33
NNaammiinngg VVaarriiaabblleess –– EExxaammppllee 
 EExxaammpplleess:: 
ffiirrssttNNaammee,, rreeppoorrtt,, uusseerrssLLiisstt ,, ffoonnttSSiizzee,, 
mmaaxxSSppeeeedd,, ffoonntt,, ssttaarrttIInnddeexx,, eennddIInnddeexx,, 
cchhaarrssCCoouunntt,, ccoonnffiiggSSeettttiinnggssXXmmll,, ccoonnffiigg,, 
ddbbCCoonnnneeccttiioonn,, ssqqllCCoommmmaannddCCrreeaatteeUUsseerr 
 IInnccoorrrreecctt eexxaammpplleess:: 
ffoooo,, bbaarr,, pp,, pp11,, pp22,, ppooppuullaattee,, LLaassttNNaammee,, 
llaasstt__nnaammee,, LLAASSTT__NNAAMMEE,, ccoonnvveerrttIImmaaggee,, 
mmoovveeMMaarrggiinn,, MMAAXXSSppeeeedd,, __ffiirrssttNNaammee,, ____tteemmpp,, 
ffiirrssttNNaammeeMMiiddddlleeNNaammeeAAnnddLLaassttNNaammee 
34
MMoorree aabboouutt NNaammiinngg VVaarriiaabblleess 
 TThhee nnaammee sshhoouulldd bbee aaddddrreesssseedd ttoo tthhee pprroobblleemm 
wwee ssoollvvee,, nnoott ttoo tthhee mmeeaannss wwee uussee ttoo ssoollvvee iitt 
PPrreeffeerr nnoouunnss ffrroomm tthhee bbuussiinneessss ddoommaaiinn ttoo 
ccoommppuutteerr tteerrmmss 
 EExxaammpplleess:: 
aaccccoouunnttss,, ccuussttoommeerrss,, ccuussttoommeerrAAddddrreessss,, 
aaccccoouunnttHHoollddeerr,, ppaayymmeennttPPllaann,, vviippPPllaayyeerr 
 IInnccoorrrreecctt eexxaammpplleess:: 
aaccccoouunnttssLLiinnkkeeddLLiisstt,, ccuussttoommeerrssHHaasshhttaabbllee,, 
ppaayymmeennttssPPrriioorriittyyQQuueeuuee,, ppllaayyeerrssAArrrraayy 
35
NNaammiinngg BBoooolleeaann VVaarriiaabblleess 
 BBoooolleeaann vvaarriiaabblleess sshhoouulldd iimmppllyy ttrruuee oorr ffaallssee 
 PPrreeffiixxeess lliikkee iiss,, hhaass aanndd ccaann aarree uusseeffuull 
UUssee ppoossiittiivvee bboooolleeaann vvaarriiaabbllee nnaammeess 
IInnccoorrrreecctt eexxaammppllee:: 
iiff ((!! nnoottFFoouunndd)) {{ …… }} 
 EExxaammpplleess:: 
hhaassPPeennddiinnggPPaayymmeenntt,, ccuussttoommeerrFFoouunndd,, 
vvaalliiddAAddddrreessss,, ppoossiittiivveeBBaallaannccee,, iissPPrriimmee 
 IInnccoorrrreecctt eexxaammpplleess:: 
nnoottFFoouunndd,, rruunn,, pprrooggrraammSSttoopp,, ppllaayyeerr,, lliisstt,, 
ffiinnddCCuussttoommeerrBByyIIdd,, iissUUnnssuucccceessssffuullll 36
NNaammiinngg SSppeecciiaall VVaarriiaabblleess 
NNaammiinngg CCoouunntteerrss 
EEssttaabblliisshh aa ccoonnvveennttiioonn,, ee..gg.. [[NNoouunn]] ++ ''CCoouunntt'' 
EExxaammpplleess:: ttiicckkeettssCCoouunntt,, ccuussttoommeerrssCCoouunntt 
 SSttaattee 
EEssttaabblliisshh aa ccoonnvveennttiioonn,, ee..gg.. [[NNoouunn]] ++ ''SSttaattee'' 
EExxaammpplleess:: bbllooggPPaarrsseeSSttaattee,, tthhrreeaaddSSttaattee 
VVaarriiaabblleess wwiitthh ssmmaallll ssccooppee aanndd ssppaann 
SShhoorrtt nnaammeess ccaann bbee uusseedd,, ee..gg.. iinnddeexx,, ii,, uu 
37
TTeemmppoorraarryy VVaarriiaabblleess 
DDoo rreeaallllyy tteemmppoorraarryy vvaarriiaabblleess eexxiisstt?? 
AAllll vvaarriiaabblleess iinn aa pprrooggrraamm aarree tteemmppoorraarryy 
bbeeccaauussee tthheeyy aarree uusseedd tteemmppoorraarriillyy oonnllyy dduurriinngg 
tthhee pprrooggrraamm eexxeeccuuttiioonn,, rriigghhtt?? 
 TTeemmppoorraarryy vvaarriiaabblleess ccaann aallwwaayyss bbee nnaammeedd 
bbeetttteerr tthhaann tteemmpp oorr ttmmpp:: 
38 
//// SSwwaapp aa[[ii]] aanndd aa[[jj]] 
iinntt tteemmpp == aa[[ii]];; 
aa[[ii]] == aa[[jj]];; 
aa[[jj]] == tteemmpp;; 
//// SSwwaapp aa[[ii]] aanndd aa[[jj]] 
iinntt oollddVVaalluuee == aa[[ii]];; 
aa[[ii]] == aa[[jj]];; 
aa[[jj]] == oollddVVaalluuee;;
TThhee LLeennggtthh ooff VVaarriiaabbllee NNaammeess 
 HHooww lloonngg ccoouulldd bbee tthhee nnaammee ooff aa vvaarriiaabbllee?? 
DDeeppeennddss oonn tthhee vvaarriiaabbllee ssccooppee aanndd lliiffeettiimmee 
MMoorree ""ffaammoouuss"" vvaarriiaabblleess sshhoouulldd hhaavvee lloonnggeerr aanndd 
mmoorree sseellff--eexxppllaaiinniinngg nnaammee 
AAcccceeppttaabbllee nnaammiinngg eexxaammpplleess:: 
UUnnaacccceeppttaabbllee nnaammiinngg eexxaammpplleess:: 
39 
ffoorr ((iinntt ii==00;; ii<<uusseerrss..LLeennggtthh;; ii++++)) 
iiff ((ii %% 22 ==== 00)) 
ssuumm ++== uusseerrss[[ii]]..WWeeiigghhtt;; 
ccllaassss SSttuuddeenntt {{ 
ppuubblliicc ssttrriinngg llaassttNNaammee;; 
}} 
ccllaassss SSttuuddeenntt {{ 
pprriivvaattee iinntt ii;; 
}} 
ccllaassss PPaaiirrOOffLLiissttss {{ 
ppuubblliicc iinntt CCoouunntt {{ ggeett;; sseett;; }} 
}}
PPrreeffiixxeess // SSuuffffiixxeess aanndd 
HHuunnggaarriiaann NNoottaattiioonn 
 IInn CC## pprreeffiixx // ssuuffffiixx nnoottaattiioonnss aarree nnoott ppooppuullaarr 
HHuunnggaarriiaann nnoottaattiioonn 
UUssiinngg pprreeffiixxeess ttoo ddeennoottee tthhee vvaarriiaabbllee ttyyppeess,, ee..gg.. 
llppccssttrrTTeexxtt,, llppddwwFFllaaggss,, ccbbMMuullttiiBByyttee,, hhWWnndd 
 TThhee HHuunnggaarriiaann nnoottaattiioonn wwoorrkkss wweellll iinn 
uunnmmaannaaggeedd llaanngguuaaggeess lliikkee CC++++ 
DDoo nnoott uussee HHuunnggaarriiaann nnoottaattiioonn iinn CC## aanndd ..NNEETT 
DDoonn''tt uussee pprreeffiixxeess // ssuuffffiixxeess ttoo ddeennoottee tthhee 
vvaarriiaabbllee ddaattaa ttyyppee 
40
NNaammiinngg PPrrooppeerrttiieess 
 NNaammee pprrooppeerrttiieess iinn CC## uussiinngg aa nnoouunn,, nnoouunn pphhrraassee,, 
oorr aann aaddjjeeccttiivvee 
 UUssee PPaassccaall CCaassee 
 EExxaammpplleess:: 
 IInnccoorrrreecctt eexxaammpplleess:: 
41 
ppuubblliicc iinntt LLeennggtthh {{ …… }} 
ppuubblliicc CCoolloorr BBaacckkggrroouunnddCCoolloorr {{ …… }} 
ppuubblliicc CCaacchheeMMooddee CCaacchheeMMooddee {{ …… }} 
ppuubblliicc bbooooll LLooaaddeedd {{ …… }} 
ppuubblliicc iinntt LLooaadd {{ …… }} 
ppuubblliicc CCoolloorr bbaacckkggrroouunnddCCoolloorr {{ …… }} 
ppuubblliicc bbooooll FFoonntt {{ …… }}
NNaammiinngg CCoonnssttaannttss 
 UUssee CCAAPPIITTAALL__LLEETTTTEERRSS ffoorr ccoonnsstt ffiieellddss aanndd 
PPaassccaallCCaassee ffoorr rreeaaddoonnllyy ffiieellddss 
 UUssee mmeeaanniinnggffuull nnaammeess tthhaatt ddeessccrriibbee tthheeiirr vvaalluuee 
 EExxaammpplleess:: 
 IInnccoorrrreecctt eexxaammpplleess:: 
42 
pprriivvaattee ccoonnsstt iinntt RREEAADD__BBUUFFFFEERR__SSIIZZEE == 88119922;; 
ppuubblliicc ssttaattiicc rreeaaddoonnllyy PPaaggeeSSiizzee DDeeffaauullttPPaaggeeSSiizzee == PPaaggeeSSiizzee..AA44;; 
pprriivvaattee ccoonnsstt iinntt FFOONNTT__SSIIZZEE__IINN__PPOOIINNTTSS == 1166;; 
ppuubblliicc ccoonnsstt iinntt MMAAXX == 551122;; //// MMaaxx wwhhaatt?? AApppplleess oorr OOrraannggeess?? 
ppuubblliicc ccoonnsstt iinntt BBUUFF225566 == 225566;; //// WWhhaatt aabboouutt BBUUFF225566 == 11002244?? 
ppuubblliicc ccoonnsstt ssttrriinngg GGRREEAATTEERR == ""&&ggtt;;"";; //// GGRREEAATTEERR__HHTTMMLL__EENNTTIITTYY 
ppuubblliicc ccoonnsstt iinntt FFOONNTT__SSIIZZEE == 1166;; //// 1166pptt oorr 1166ppxx?? 
ppuubblliicc ccoonnsstt PPaaggeeSSiizzee PPAAGGEE == PPaaggeeSSiizzee..AA44;; //// MMaayybbee PPAAGGEE__SSIIZZEE??
NNaammeess ttoo AAvvooiidd 
DDoonn''tt uussee nnuummbbeerrss iinn tthhee iiddeennttiiffiieerrss nnaammeess 
EExxaammppllee:: 
PPrriinnttRReeppoorrtt aanndd PPrriinnttRReeppoorrtt22 
WWhhaatt iiss tthhee ddiiffffeerreennccee?? 
EExxcceeppttiioonnss:: 
WWhheenn tthhee nnuummbbeerr iiss ppaarrtt ooff tthhee nnaammee iittsseellff,, ee..gg.. 
RRSS223322PPoorrtt,, CCOOMM33,, WWiinn3322AAPPIIFFuunnccttiioonnss 
 DDoonn''tt uussee CCyyrriilllliicc oorr lleetttteerrss ffrroomm ootthheerr aallpphhaabbeettss 
EE..gg.. FFiinnddССттууддееннттBByyNNaammee,, CCaallccΩΩ22PPrrootteeiinn 
43
NNeevveerr GGiivvee aa MMiisslleeaaddiinngg NNaammee!! 
GGiivviinngg aa mmiisslleeaaddiinngg nnaammee iiss wwoorrssee tthhaann ggiivviinngg 
aa ttoottaallllyy uunncclleeaarr nnaammee 
 EExxaammppllee:: 
CCoonnssiiddeerr aa mmeetthhoodd tthhaatt ccaallccuullaatteess tthhee ssuumm ooff aallll 
eelleemmeennttss iinn aann aarrrraayy 
IIttss sshhoouulldd bbee nnaammeedd SSuumm oorr CCaallccuullaatteeSSuumm 
WWhhaatt aabboouutt nnaammiinngg iitt CCaallccuullaatteeAAvveerraaggee oorr 
MMaaxx oorr CChheecckkFFoorrNNeeggaattiivveeNNuummbbeerr?? 
IItt''ss ccrraazzyy,, bbuutt bbee ccaarreeffuull wwiitthh ""ccooppyy--ppaassttee"" 
44
DDoonn''tt BBeelliieevvee MMiiccrroossoofftt!! 
MMiiccrroossoofftt ssoommeettiimmeess uussee rreeaallllyy bbaadd nnaammiinngg iinn 
tthheeiirr AAPPII lliibbrraarriieess ((eessppeecciiaallllyy iinn WWiinn3322 AAPPII)) 
EExxaammpplleess:: 
NNaavviiggaattee aanndd NNaavviiggaattee22 mmeetthhooddss iinn IInntteerrnneett 
EExxpplloorreerr AAccttiivveeXX ccoonnttrrooll ((MMSSHHTTMMLL..DDLLLL)) 
WWNNeettAAddddCCoonnnneeccttiioonn33 mmeetthhoodd iinn MMuullttiippllee 
PPrroovviiddeerr RRoouutteerr NNeettwwoorrkkiinngg AAPPII ((MMPPRR..DDLLLL)) 
LLPPWWKKSSTTAA__UUSSEERR__IINNFFOO__11 ssttrruuccttuurree iinn WWiinn3322 
DDoonn''tt ffoollllooww tthheemm bblliinnddllyy,, jjuusstt tthhiinnkk aa bbiitt!! 
45
WWhhaatt''ss WWrroonngg wwiitthh TThhiiss CCooddee?? 
46 
FFiilleeSSttrreeaamm ffss == nneeww FFiilleeSSttrreeaamm((FFIILLEE__NNAAMMEE,, FFiilleeMMooddee..CCrreeaatteeNNeeww));; 
//// CCrreeaattee tthhee wwrriitteerr ffoorr ddaattaa.. 
BBiinnaarryyWWrriitteerr ww == nneeww BBiinnaarryyWWrriitteerr((ffss));; 
//// WWrriittee ddaattaa ttoo TTeesstt..ddaattaa.. 
ffoorr ((iinntt ii == 00;; ii << 1111;; ii++++)) 
{{ 
ww..WWrriittee(( ((iinntt)) ii));; 
}} 
ww..CClloossee(());; 
ffss..CClloossee(());; 
//// CCrreeaattee tthhee rreeaaddeerr ffoorr ddaattaa.. 
ffss == nneeww FFiilleeSSttrreeaamm((FFIILLEE__NNAAMMEE,, FFiilleeMMooddee..OOppeenn,, FFiilleeAAcccceessss..RReeaadd));; 
BBiinnaarryyRReeaaddeerr rr == nneeww BBiinnaarryyRReeaaddeerr((ffss));; 
//// RReeaadd ddaattaa ffrroomm TTeesstt..ddaattaa.. 
ffoorr ((iinntt ii == 00;; ii << 1111;; ii++++)) 
{{ 
CCoonnssoollee..WWrriitteeLLiinnee((rr..RReeaaddIInntt3322(())));; 
}} 
rr..CClloossee(());; 
ffss..CClloossee(());; 
Source: http://msdn.microsoft.com/en-us/library/36b93480.aspx
CCooddee FFoorrmmaattttiinngg
WWhhyy CCooddee NNeeeeddss FFoorrmmaattttiinngg?? 
48 
ppuubblliicc ccoonnsstt ssttrriinngg FFIILLEE__NNAAMMEE 
==""eexxaammppllee..bbiinn"" ;; ssttaattiicc vvooiidd MMaaiinn (( )){{ 
FFiilleeSSttrreeaamm ffss== nneeww FFiilleeSSttrreeaamm((FFIILLEE__NNAAMMEE,,FFiilleeMMooddee 
.. CCrreeaatteeNNeeww)) //// CCrreeaattee tthhee wwrriitteerr ffoorr ddaattaa .. 
;;BBiinnaarryyWWrriitteerr ww==nneeww BBiinnaarryyWWrriitteerr (( ffss ));;//// 
WWrriittee ddaattaa ttoo TTeesstt..ddaattaa.. 
ffoorr(( iinntt ii==00;;ii<<1111;;ii++++)){{ww..WWrriittee((((iinntt))ii));;}}ww ..CClloossee(());; 
ffss .. CClloossee (( )) //// CCrreeaattee tthhee rreeaaddeerr ffoorr ddaattaa.. 
;;ffss==nneeww FFiilleeSSttrreeaamm((FFIILLEE__NNAAMMEE,,FFiilleeMMooddee.. OOppeenn 
,, FFiilleeAAcccceessss..RReeaadd)) ;;BBiinnaarryyRReeaaddeerr rr 
== nneeww BBiinnaarryyRReeaaddeerr((ffss));; //// RReeaadd ddaattaa ffrroomm TTeesstt..ddaattaa.. 
ffoorr ((iinntt ii == 00;; ii << 1111;; ii++++)){{ CCoonnssoollee ..WWrriitteeLLiinnee 
((rr..RReeaaddIInntt3322 (()))) 
;;}}rr .. CClloossee (( ));; ffss .. CClloossee (( )) ;; }}
CCooddee FFoorrmmaattttiinngg FFuunnddaammeennttaallss 
GGoooodd ffoorrmmaattttiinngg ggooaallss 
TToo iimmpprroovvee ccooddee rreeaaddaabbiilliittyy 
TToo iimmpprroovvee ccooddee mmaaiinnttaaiinnaabbiilliittyy 
 FFuunnddaammeennttaall pprriinncciippllee ooff ccooddee ffoorrmmaattttiinngg:: 
AAnnyy ffoorrmmaattttiinngg ssttyyllee tthhaatt ffoolllloowwss tthhee aabboovvee 
pprriinncciippllee iiss ggoooodd 
AAnnyy ootthheerr ffoorrmmaattttiinngg iiss nnoott ggoooodd 
49 
TThhee ffoorrmmaattiinngg ooff tthhee ssoouurrccee ccooddee sshhoouulldd 
ddiisscclloossee iittss llooggiiccaall ssttrruuccttuurree..
FFoorrmmaattttiinngg BBlloocckkss iinn CC## 
 PPuutt {{ aanndd }} aalloonnee oonn aa lliinnee uunnddeerr tthhee 
ccoorrrreessppoonnddiinngg ppaarreenntt bblloocckk 
 IInnddeenntt tthhee bblloocckk ccoonntteennttss bbyy aa ssiinnggllee [[TTaabb]] 
DDoonn''tt iinnddeenntt wwiitthh ssppaacceess 
 EExxaammppllee:: 
50 
iiff (( ssoommee ccoonnddiittiioonn )) 
{{ 
//// BBlloocckk ccoonntteennttss iinnddeenntteedd bbyy aa ssiinnggllee [[TTaabb]] 
//// DDoonn''tt uussee ssppaacceess ffoorr iinnddeennttaattiioonn 
}}
MMeetthhooddss IInnddeennttaattiioonn 
MMeetthhooddss sshhoouulldd bbee iinnddeenntteedd wwiitthh aa ssiinnggllee 
[[TTaabb]] ffrroomm tthhee ccllaassss bbooddyy 
MMeetthhooddss bbooddyy sshhoouulldd bbee iinnddeenntteedd wwiitthh aa 
ssiinnggllee [[TTaabb]] aass wweellll 
51 
ppuubblliicc ccllaassss IInnddeennttaattiioonnEExxaammppllee 
{{ 
pprriivvaattee iinntt ZZeerroo(()) 
{{ 
rreettuurrnn 00;; 
}} 
}} 
TThhee eennttiirree mmeetthhoodd iiss 
iinnddeenntteedd wwiitthh aa ssiinnggllee 
[[TTaabb]] 
MMeetthhoodd bbooddyy iiss aallssoo 
iinnddeenntteedd
Brackets iinn MMeetthhooddss DDeeccllaarraattiioonn 
 BBrraacckkeettss iinn tthhee mmeetthhoodd ddeeccllaarraattiioonn sshhoouulldd bbee 
ffoorrmmaatttteedd aass ffoolllloowwss:: 
DDoonn''tt uussee ssppaacceess bbeettwweeeenn tthhee bbrraacckkeettss:: 
 TThhee ssaammee aapppplliieess ffoorr iiff--ccoonnddiittiioonnss aanndd ffoorr-- 
llooooppss:: 
52 
pprriivvaattee ssttaattiicc uulloonngg CCaallccFFaaccttoorriiaall((uuiinntt nnuumm)) 
pprriivvaattee ssttaattiicc uulloonngg CCaallccFFaaccttoorriiaall (( uuiinntt nnuumm )) 
pprriivvaattee ssttaattiicc uulloonngg CCaallccFFaaccttoorriiaall ((uuiinntt nnuumm)) 
iiff ((ccoonnddiittiioonn)) ……
SSeeppaarraattiinngg PPaarraammeetteerrss 
 SSeeppaarraattee mmeetthhoodd ppaarraammeetteerrss bbyy ccoommmmaa 
ffoolllloowweedd bbyy aa ssppaaccee 
DDoonn''tt ppuutt ccoommmmaa bbeeffoorree tthhee ssppaaccee 
EExxaammpplleess:: 
RReeggiisstteerrUUsseerr((""nnaakkoovv"",, ""ss33ccrr33tt!!pp@@ssssww00rrdd""));; 
IInnccoorrrreecctt eexxaammpplleess:: 
53 
pprriivvaattee vvooiidd RReeggiisstteerrUUsseerr((ssttrriinngg uusseerrnnaammee,, ssttrriinngg ppaasssswwoorrdd)) 
pprriivvaattee vvooiidd RReeggiisstteerrUUsseerr((ssttrriinngg uusseerrnnaammee,,ssttrriinngg ppaasssswwoorrdd)) 
pprriivvaattee vvooiidd RReeggiisstteerrUUsseerr((ssttrriinngg uusseerrnnaammee ,,ssttrriinngg ppaasssswwoorrdd)) 
pprriivvaattee vvooiidd RReeggiisstteerrUUsseerr((ssttrriinngg uusseerrnnaammee ,, ssttrriinngg ppaasssswwoorrdd))
EEmmppttyy LLiinneess bbeettwweeeenn MMeetthhooddss 
 UUssee eemmppttyy lliinnee ffoorr sseeppaarraattiioonn bbeettwweeeenn mmeetthhooddss:: 
54 
ppuubblliicc ccllaassss FFaaccttoorriiaall 
{{ 
pprriivvaattee ssttaattiicc uulloonngg CCaallccFFaaccttoorriiaall((uuiinntt nnuumm)) 
{{ 
AAllwwaayyss uussee {{ aanndd }} aafftteerr iiff 
((tthheerree iiss nnoo ssppaaccee ttoo ddoo iitt 
iiff ((nnuumm ==== 00)) 
rreettuurrnn 11;; 
eellssee 
rreettuurrnn nnuumm ** CCaallccFFaaccttoorriiaall((nnuumm -- 11));; 
}} 
EEmmppttyy lliinnee 
ssttaattiicc vvooiidd MMaaiinn(()) 
{{ 
uulloonngg ffaaccttoorriiaall == CCaallccFFaaccttoorriiaall((55));; 
CCoonnssoollee..WWrriitteeLLiinnee((ffaaccttoorriiaall));; 
}} 
}} 
hheerree))
EEmmppttyy LLiinneess iinn MMeetthhoodd BBooddyy 
 UUssee aann eemmppttyy lliinnee ttoo sseeppaarraattee llooggiiccaallllyy rreellaatteedd 
sseeqquueenncceess ooff lliinneess:: 
55 
pprriivvaattee LLiisstt<<RReeppoorrtt>> PPrreeppaarreeRReeppoorrttss(()) 
{{ 
LLiisstt<<RReeppoorrtt>> rreeppoorrttss == nneeww LLiisstt<<RReeppoorrtt>>(());; 
//// CCrreeaattee iinnccoommeess rreeppoorrttss 
RReeppoorrtt iinnccoommeessSSaalleessRReeppoorrtt == PPrreeppaarreeIInnccoommeessSSaalleessRReeppoorrtt(());; 
rreeppoorrttss..AAdddd((iinnccoommeessSSaalleessRReeppoorrtt));; 
RReeppoorrtt iinnccoommeessSSuuppppoorrttRReeppoorrtt == PPrreeppaarreeIInnccoommeessSSuuppppoorrttRReeppoorrtt(());; 
rreeppoorrttss..AAdddd((iinnccoommeessSSuuppppoorrttRReeppoorrtt));; 
//// CCrreeaattee eexxppeennsseess rreeppoorrttss 
RReeppoorrtt eexxppeennsseessPPaayyrroollllRReeppoorrtt == PPrreeppaarreeEExxppeennsseessPPaayyrroollllRReeppoorrtt(());; 
rreeppoorrttss..AAdddd((eexxppeennsseessPPaayyrroollllRReeppoorrtt));; 
RReeppoorrtt eexxppeennsseessMMaarrkkeettiinnggRReeppoorrtt == PPrreeppaarreeEExxppeennsseessMMaarrkkeettiinnggRReeppoorrtt(());; 
rreeppoorrttss..AAdddd((eexxppeennsseessMMaarrkkeettiinnggRReeppoorrtt));; 
rreettuurrnn rreeppoorrttss;; 
}} 
EEmmppttyy lliinnee 
EEmmppttyy lliinnee 
EEmmppttyy lliinnee
MMiissppllaacceedd EEmmppttyy LLiinneess –– EExxaammppllee 
56 
ppuubblliicc ssttaattiicc vvooiidd PPrriinnttLLiisstt((LLiisstt<<iinntt>> iinnttss)) 
{{ 
CCoonnssoollee..WWrriittee((""{{ ""));; 
ffoorreeaacchh ((iinntt iitteemm iinn iinnttss)) 
{{ 
CCoonnssoollee..WWrriittee((iitteemm));; 
CCoonnssoollee..WWrriittee(("" ""));; 
}} 
CCoonnssoollee..WWrriitteeLLiinnee((""}}""));; 
}} 
ssttaattiicc vvooiidd MMaaiinn(()) 
{{ 
//// ...... 
}}
FFoorrmmaattttiinngg TTyyppeess 
 FFoorrmmaattttiinngg ccllaasssseess // ssttrruuccttuurreess // iinntteerrffaacceess // 
eennuummeerraattiioonnss 
IInnddeenntt tthhee ccllaassss bbooddyy wwiitthh aa ssiinnggllee [[TTaabb]] 
UUssee tthhee ffoolllloowwiinngg oorrddeerr ooff ddeeffiinniittiioonnss:: 
CCoonnssttaannttss,, ddeelleeggaatteess,, iinnnneerr ttyyppeess,, ffiieellddss,, 
ccoonnssttrruuccttoorrss,, pprrooppeerrttiieess,, mmeetthhooddss 
SSttaattiicc mmeemmbbeerrss,, ppuubblliicc mmeemmbbeerrss,, pprrootteecctteedd 
mmeemmbbeerrss,, iinntteerrnnaall mmeemmbbeerrss,, pprriivvaattee mmeemmbbeerrss 
TThhee aabboovvee oorrddeerr ooff ddeeffiinniittiioonnss iiss nnoott tthhee oonnllyy 
ppoossssiibbllee ccoorrrreecctt oonnee 
57
FFoorrmmaattttiinngg TTyyppeess –– EExxaammppllee 
58 
ppuubblliicc ccllaassss DDoogg 
{{ 
//// SSttaattiicc vvaarriiaabblleess 
ppuubblliicc ccoonnsstt ssttrriinngg SSPPEECCIIEESS == 
""CCaanniiss LLuuppuuss FFaammiilliiaarriiss"";; 
//// IInnssttaannccee vvaarriiaabblleess 
pprriivvaattee iinntt aaggee;; 
//// CCoonnssttrruuccttoorrss 
ppuubblliicc DDoogg((ssttrriinngg nnaammee,, iinntt aaggee)) 
{{ 
tthhiiss..NNaammee == nnaammee;; 
tthhiiss..aaggee == aaggee;; 
}} 
(continues on the next slide)
FFoorrmmaattttiinngg TTyyppeess –– EExxaammppllee 
((22)) 
59 
//// PPrrooppeerrttiieess 
ppuubblliicc ssttrriinngg NNaammee {{ ggeett;; sseett;; }} 
//// MMeetthhooddss 
ppuubblliicc vvooiidd BBrreeaatthh(()) 
{{ 
//// TTOODDOO:: bbrreeaatthhiinngg pprroocceessss 
}} 
ppuubblliicc vvooiidd BBaarrkk(()) 
{{ 
CCoonnssoollee..WWrriitteeLLiinnee((""wwooww--wwooww""));; 
}} 
}}
FFoorrmmaattttiinngg CCoonnddiittiioonnaall 
SSttaatteemmeennttss aanndd LLooooppss 
 FFoorrmmaattttiinngg ccoonnddiittiioonnaall ssttaatteemmeennttss aanndd llooooppss 
AAllwwaayyss uussee {{ }} bblloocckk aafftteerr iiff // ffoorr // wwhhiillee,, 
eevveenn wwhheenn aa ssiinnggllee ooppeerraattoorr ffoolllloowwss 
IInnddeenntt tthhee bblloocckk bbooddyy aafftteerr iiff // ffoorr // wwhhiillee 
NNeevveerr ppuutt tthhee bblloocckk aafftteerr iiff // ffoorr // wwhhiillee oonn 
tthhee ssaammee lliinnee!! 
AAllwwaayyss ppuutt tthhee {{ oonn tthhee nneexxtt lliinnee 
NNeevveerr iinnddeenntt wwiitthh mmoorree tthhaann oonnee [[TTaabb]] 
60
CCoonnddiittiioonnaall SSttaatteemmeennttss aanndd 
LLooooppss FFoorrmmaattttiinngg –– EExxaammpplleess 
 EExxaammppllee:: 
 IInnccoorrrreecctt eexxaammpplleess:: 
61 
ffoorr ((iinntt ii==00;; ii<<1100;; ii++++)) 
{{ 
CCoonnssoollee..WWrriitteeLLiinnee((""ii=={{00}}"",, ii));; 
}} 
ffoorr ((iinntt ii==00;; ii<<1100;; ii++++)) 
CCoonnssoollee..WWrriitteeLLiinnee((""ii=={{00}}"",, ii));; 
ffoorr ((iinntt ii==00;; ii<<1100;; ii++++)) CCoonnssoollee..WWrriitteeLLiinnee((""ii=={{00}}"",, ii));; 
ffoorr ((iinntt ii==00;; ii<<1100;; ii++++)) {{ 
CCoonnssoollee..WWrriitteeLLiinnee((""ii=={{00}}"",, ii));; 
}}
BBrreeaakkiinngg LLoonngg LLiinneess 
 BBrreeaakk lloonngg lliinneess aafftteerr ppuunnccttuuaattiioonn 
 IInnddeenntt tthhee sseeccoonndd lliinnee bbyy ssiinnggllee [[TTaabb]] 
 DDoo nnoott aaddddiittiioonnaallllyy iinnddeenntt tthhee tthhiirrdd lliinnee 
 EExxaammpplleess:: 
62 
iiff ((mmaattrriixx[[xx,, yy]] ==== 00 |||| mmaattrriixx[[xx--11,, yy]] ==== 00 |||| 
mmaattrriixx[[xx++11,, yy]] ==== 00 |||| mmaattrriixx[[xx,, yy--11]] ==== 00 |||| 
mmaattrriixx[[xx,, yy++11]] ==== 00)) 
{{ …… 
DDiiccttiioonnaarryyEEnnttrryy<<KK,, VV>> nneewwEEnnttrryy == 
nneeww DDiiccttiioonnaarryyEEnnttrryy<<KK,, VV>>(( 
oollddEEnnttrryy..KKeeyy,, oollddEEnnttrryy..VVaalluuee));;
IInnccoorrrreecctt WWaayyss TToo 
BBrreeaakk LLoonngg LLiinneess 
63 
iiff ((mmaattrriixx[[xx,, yy]] ==== 00 |||| mmaattrriixx[[xx--11,, yy]] ==== 
00 |||| mmaattrriixx[[xx++11,, yy]] ==== 00 |||| mmaattrriixx[[xx,, 
yy--11]] ==== 00 |||| mmaattrriixx[[xx,, yy++11]] ==== 00)) 
{{ …… 
iiff ((mmaattrriixx[[xx,, yy]] ==== 00 |||| mmaattrriixx[[xx--11,, yy]] ==== 00 |||| 
mmaattrriixx[[xx++11,, yy]] ==== 00 |||| mmaattrriixx[[xx,, yy--11]] ==== 00 |||| 
mmaattrriixx[[xx,, yy++11]] ==== 00)) 
{{ …… 
DDiiccttiioonnaarryyEEnnttrryy<<KK,, VV>> nneewwEEnnttrryy 
== nneeww DDiiccttiioonnaarryyEEnnttrryy<<KK,, VV>>((oollddEEnnttrryy 
..KKeeyy,, oollddEEnnttrryy..VVaalluuee));;
AAlliiggnnmmeennttss 
AAllll ttyyppeess ooff aalliiggnnmmeennttss aarree ccoonnssiiddeerreedd hhaarrmmffuull 
AAlliiggnnmmeennttss aarree hhaarrdd--ttoo--mmaaiinnttaaiinn!! 
 IInnccoorrrreecctt eexxaammpplleess:: 
64 
DDaatteeTTiimmee ddaattee == DDaatteeTTiimmee..NNooww..DDaattee;; 
iinntt ccoouunntt == 00;; 
SSttuuddeenntt ssttuuddeenntt == nneeww SSttrruuddeenntt(());; 
LLiisstt<<SSttuuddeenntt>> ssttuuddeennttss == nneeww LLiisstt<<SSttuuddeenntt>>(());; 
mmaattrriixx[[xx,, yy]] ==== 00;; 
mmaattrriixx[[xx ++ 11,, yy ++ 11]] ==== 00;; 
mmaattrriixx[[22 ** xx ++ yy,, 22 ** yy ++ xx]] ==== 00;; 
mmaattrriixx[[xx ** yy,, xx ** yy]] ==== 00;;
HHiigghh--QQuuaalliittyy CCllaasssseess 
HHooww ttoo DDeessiiggnn HHiigghh--QQuuaalliittyy CCllaasssseess?? 
AAbbssttrraaccttiioonn,, CCoohheessiioonn aanndd CCoouupplliinngg
High-QQuuaalliittyy CCllaasssseess:: AAbbssttrraaccttiioonn 
 PPrreesseenntt aa ccoonnssiisstteenntt lleevveell ooff aabbssttrraaccttiioonn iinn tthhee 
ccllaassss ccoonnttrraacctt ((ppuubblliiccllyy vviissiibbllee mmeemmbbeerrss)) 
WWhhaatt aabbssttrraaccttiioonn tthhee ccllaassss iiss iimmpplleemmeennttiinngg?? 
DDooeess iitt rreepprreesseenntt oonnllyy oonnee tthhiinngg?? 
DDooeess tthhee ccllaassss nnaammee wweellll ddeessccrriibbee iittss ppuurrppoossee?? 
DDooeess tthhee ccllaassss ddeeffiinnee cclleeaarr aanndd eeaassyy ttoo 
uunnddeerrssttaanndd ppuubblliicc iinntteerrffaaccee?? 
DDooeess tthhee ccllaassss hhiiddee aallll iittss iimmpplleemmeennttaattiioonn 
ddeettaaiillss?? 
66
GGoooodd AAbbssttrraaccttiioonn –– EExxaammppllee 
67 
ppuubblliicc ccllaassss FFoonntt 
{{ 
ppuubblliicc ssttrriinngg NNaammee {{ ggeett;; sseett;; }} 
ppuubblliicc ffllooaatt SSiizzeeIInnPPooiinnttss {{ ggeett;; sseett;; }} 
ppuubblliicc FFoonnttSSttyyllee SSttyyllee {{ ggeett;; sseett;; }} 
ppuubblliicc FFoonntt((ssttrriinngg nnaammee,, ffllooaatt ssiizzeeIInnPPooiinnttss,, FFoonnttSSttyyllee ssttyyllee)) 
{{ 
tthhiiss..NNaammee == nnaammee;; 
tthhiiss..SSiizzeeIInnPPooiinnttss == ssiizzeeIInnPPooiinnttss;; 
tthhiiss..SSttyyllee == ssttyyllee;; 
}} 
ppuubblliicc vvooiidd DDrraawwSSttrriinngg((DDrraawwiinnggSSuurrffaaccee ssuurrffaaccee,, 
ssttrriinngg ssttrr,, iinntt xx,, iinntt yy)) {{ ...... }} 
ppuubblliicc SSiizzee MMeeaassuurreeSSttrriinngg((ssttrriinngg ssttrr)) {{ ...... }} 
}}
BBaadd AAbbssttrraaccttiioonn –– EExxaammppllee 
68 
ppuubblliicc ccllaassss PPrrooggrraamm 
{{ 
ppuubblliicc ssttrriinngg ttiittllee;; 
ppuubblliicc iinntt ssiizzee;; 
ppuubblliicc CCoolloorr ccoolloorr;; 
ppuubblliicc vvooiidd IInniittiiaalliizzeeCCoommmmaannddSSttaacckk(());; 
ppuubblliicc vvooiidd PPuusshhCCoommmmaanndd((CCoommmmaanndd ccoommmmaanndd));; 
ppuubblliicc CCoommmmaanndd PPooppCCoommmmaanndd(());; 
ppuubblliicc vvooiidd SShhuuttddoowwnnCCoommmmaannddSSttaacckk(());; 
ppuubblliicc vvooiidd IInniittiiaalliizzeeRReeppoorrttFFoorrmmaattttiinngg(());; 
ppuubblliicc vvooiidd FFoorrmmaattRReeppoorrtt((RReeppoorrtt rreeppoorrtt));; 
ppuubblliicc vvooiidd PPrriinnttRReeppoorrtt((RReeppoorrtt rreeppoorrtt));; 
ppuubblliicc vvooiidd IInniittiiaalliizzeeGGlloobbaallDDaattaa(());; 
ppuubblliicc vvooiidd SShhuuttddoowwnnGGlloobbaallDDaattaa(());; 
}} 
DDooeess tthhiiss ccllaassss rreeaallllyy 
rreepprreesseenntt aa 
""pprrooggrraamm""?? IIss tthhiiss 
nnaammee ggoooodd?? 
DDooeess tthhiiss ccllaassss 
rreeaallllyy hhaavvee aa 
ssiinnggllee 
ppuurrppoossee??
EEssttaabblliisshhiinngg GGoooodd AAbbssttrraaccttiioonn 
 DDeeffiinnee ooppeerraattiioonnss aalloonngg wwiitthh tthheeiirr ooppppoossiitteess 
EExxaammppllee:: 
 OOppeenn(()) aanndd CClloossee(()) 
MMoovvee uunnrreellaatteedd mmeetthhooddss iinn aannootthheerr ccllaassss 
EExxaammppllee:: 
 IInn ccllaassss EEmmppllooyyeeee iiff yyoouu nneeeedd ttoo ccaallccuullaattee AAggee bbyy 
ggiivveenn DDaatteeOOffBBiirrtthh 
 CCrreeaattee ssttaattiicc mmeetthhoodd CCaallccAAggee iinn aa sseeppaarraattee ccllaassss 
DDaatteeUUttiillss 
69
EEssttaabblliisshhiinngg GGoooodd AAbbssttrraaccttiioonn ((22)) 
 BBeewwaarree ooff bbrreeaakkiinngg tthhee iinntteerrffaaccee aabbssttrraaccttiioonn 
dduuee ttoo eevvoolluuttiioonn 
DDoonn''tt aadddd ppuubblliicc mmeemmbbeerrss iinnccoonnssiisstteenntt wwiitthh 
ccllaassss aabbssttrraaccttiioonn 
EExxaammppllee:: iinn ccllaassss ccaalllleedd EEmmppllooyyeeee aatt ssoommee ttiimmee 
wwee aadddd mmeetthhoodd ffoorr aacccceessssiinngg tthhee DDBB wwiitthh SSQQLL 
70 
ccllaassss EEmmppllooyyeeee 
{{ 
ppuubblliicc ssttrriinngg ffiirrssttNNaammee;; 
ppuubblliicc ssttrriinngg llaassttNNaammee;; 
…… 
ppuubblliicc SSqqllCCoommmmaanndd FFiinnddBByyPPrriimmaarryyKKeeyySSqqllCCoommmmaanndd((iinntt iidd));; 
}}
EEnnccaappssuullaattiioonn 
MMiinniimmiizzee tthhee vviissiibbiilliittyy ooff ccllaasssseess aanndd mmeemmbbeerrss 
SSttaarrtt ffrroomm pprriivvaattee aanndd mmoovvee ttoo iinntteerrnnaall,, 
pprrootteecctteedd aanndd ppuubblliicc iiff rreeqquuiirreedd 
 CCllaasssseess sshhoouulldd hhiiddee tthheeiirr iimmpplleemmeennttaattiioonn ddeettaaiillss 
AAnnyytthhiinngg wwhhiicchh iiss nnoott ppaarrtt ooff tthhee ccllaassss iinntteerrffaaccee 
sshhoouulldd bbee ddeeccllaarreedd pprriivvaattee 
CCllaasssseess wwiitthh ggoooodd eennccaappssuullaatteedd ccllaasssseess aarree:: lleessss 
ccoommpplleexx,, eeaassiieerr ttoo mmaaiinnttaaiinn,, mmoorree lloooosseellyy ccoouupplleedd 
 NNeevveerr ddeeccllaarree ffiieellddss ppuubblliicc ((eexxcceepptt ccoonnssttaannttss)) 
UUssee mmeetthhooddss oorr pprrooppeerrttiieess ttoo aacccceessss ffiieellddss 
71
EEnnccaappssuullaattiioonn ((22)) 
DDoonn''tt vviioollaattee eennccaappssuullaattiioonn sseemmaannttiiccaallllyy!! 
DDoonn''tt rreellyy oonn nnoonn--ddooccuummeenntteedd iinntteerrnnaall 
bbeehhaavviioorr oorr ssiiddee eeffffeeccttss 
WWrroonngg eexxaammppllee:: 
SSkkiipp ccaalllliinngg CCoonnnneeccttTTooDDBB(()) bbeeccaauussee yyoouu jjuusstt 
ccaalllleedd FFiinnddEEmmppllooyyeeeeBByyIIdd(()) wwhhiicchh sshhoouulldd ooppeenn 
ccoonnnneeccttiioonn 
AAnnootthheerr wwrroonngg eexxaammppllee:: 
UUssee SSttrriinngg..EEmmppttyy iinnsstteeaadd ooff TTiittlleess..NNooTTiittllee 
bbeeccaauussee yyoouu kknnooww bbootthh vvaalluueess aarree tthhee ssaammee 
72
IInnhheerriittaannccee 
DDoonn''tt hhiiddee mmeetthhooddss iinn aa ssuubbccllaassss 
EExxaammppllee:: iiff tthhee ccllaassss TTiimmeerr hhaass pprriivvaattee mmeetthhoodd 
SSttaarrtt(()),, ddoonn''tt ddeeffiinnee SSttaarrtt(()) iinn AAttoommTTiimmeerr 
MMoovvee ccoommmmoonn iinntteerrffaacceess,, ddaattaa,, aanndd bbeehhaavviioorr 
aass hhiigghh aass ppoossssiibbllee iinn tthhee iinnhheerriittaannccee ttrreeee 
TThhiiss mmaaxxiimmiizzeess tthhee ccooddee rreeuussee 
 BBee ssuussppiicciioouuss ooff bbaassee ccllaasssseess ooff wwhhiicchh tthheerree iiss 
oonnllyy oonnee ddeerriivveedd ccllaassss 
DDoo yyoouu rreeaallllyy nneeeedd tthhiiss aaddddiittiioonnaall lleevveell ooff 
iinnhheerriittaannccee?? 
73
IInnhheerriittaannccee ((22)) 
 BBee ssuussppiicciioouuss ooff ccllaasssseess tthhaatt oovveerrrriiddee aa rroouuttiinnee 
aanndd ddoo nnootthhiinngg iinnssiiddee 
IIss tthhee oovveerrrriiddddeenn rroouuttiinnee uusseedd ccoorrrreeccttllyy?? 
AAvvooiidd ddeeeepp iinnhheerriittaannccee ttrreeeess 
DDoonn''tt ccrreeaattee mmoorree tthhaann 6 lleevveellss ooff iinnhheerriittaannccee 
AAvvooiidd uussiinngg aa bbaassee ccllaassss’’ss pprrootteecctteedd ddaattaa ffiieellddss 
iinn aa ddeerriivveedd ccllaassss 
PPrroovviiddee pprrootteecctteedd aacccceessssoorr mmeetthhooddss oorr 
pprrooppeerrttiieess iinnsstteeaadd 
74
IInnhheerriittaannccee ((33)) 
 PPrreeffeerr iinnhheerriittaannccee ttoo eexxtteennssiivvee ttyyppee cchheecckkiinngg:: 
 CCoonnssiiddeerr iinnhheerriittiinngg CCiirrccllee aanndd SSqquuaarree ffrroomm 
SShhaappee aanndd oovveerrrriiddee tthhee aabbssttrraacctt aaccttiioonn DDrraaww(()) 
75 
sswwiittcchh ((sshhaappee..TTyyppee)) 
{{ 
ccaassee SShhaappee..CCiirrccllee:: 
sshhaappee..DDrraawwCCiirrccllee(());; 
bbrreeaakk;; 
ccaassee SShhaappee..SSqquuaarree:: 
sshhaappee..DDrraawwSSqquuaarree(());; 
bbrreeaakk;; 
...... 
}}
CCllaassss MMeetthhooddss aanndd DDaattaa 
KKeeeepp tthhee nnuummbbeerr ooff mmeetthhooddss iinn aa ccllaassss aass ssmmaallll 
aass ppoossssiibbllee  rreedduuccee ccoommpplleexxiittyy 
MMiinniimmiizzee ddiirreecctt mmeetthhoodd ccaallllss ttoo ootthheerr ccllaasssseess 
MMiinniimmiizzee iinnddiirreecctt mmeetthhoodd ccaallllss ttoo ootthheerr ccllaasssseess 
LLeessss eexxtteerrnnaall mmeetthhoodd ccaallllss ==== lleessss ccoouupplliinngg 
MMiinniimmiizzee tthhee eexxtteenntt ttoo wwhhiicchh aa ccllaassss 
ccoollllaabboorraatteess wwiitthh ootthheerr ccllaasssseess 
RReedduuccee ccoouupplliinngg bbeettwweeeenn ccllaasssseess 
76
CCllaassss CCoonnssttrruuccttoorrss 
 IInniittiiaalliizzee aallll mmeemmbbeerr ddaattaa iinn aallll ccoonnssttrruuccttoorrss,, iiff 
ppoossssiibbllee 
UUnniinniittiiaalliizzeedd ddaattaa iiss eerrrroorr pprroonnee 
PPaarrttiiaallllyy iinniittiiaalliizzeedd ddaattaa iiss eevveenn mmoorree eevviill 
IInnccoorrrreecctt eexxaammppllee:: aassssiiggnn FFiirrssttNNaammee iinn ccllaassss 
PPeerrssoonn bbuutt lleeaavvee LLaassttNNaammee eemmppttyy 
 IInniittiiaalliizzee ddaattaa mmeemmbbeerrss iinn tthhee ssaammee oorrddeerr iinn 
wwhhiicchh tthheeyy aarree ddeeccllaarreedd 
 PPrreeffeerr ddeeeepp ccooppiieess ttoo sshhaallllooww ccooppiieess 
((IICClloonneeaabbllee sshhoouulldd mmaakkee ddeeeepp ccooppyy)) 
77
UUssee DDeessiiggnn PPaatttteerrnnss 
UUssee pprriivvaattee ccoonnssttrruuccttoorr ttoo pprroohhiibbiitt ddiirreecctt ccllaassss 
iinnssttaannttiiaattiioonn 
UUssee ddeeiiggnn ppaatttteerrnnss ffoorr ccoommmmoonn ddeessiiggnn 
ssiittuuaattiioonnss 
CCrreeaattiioonnaall ppaatttteerrnnss lliikkee ssiinngglleettoonn,, ffaaccttoorryy 
mmeetthhoodd,, aabbssttrraacctt ffaaccttoorryy 
SSttrruuccttuurraall ppaatttteerrnnss lliikkee aaddaapptteerr,, bbrriiddggee,, 
ccoommppoossiittee,, ddeeccoorraattoorr,, ffaaççaaddee 
BBeehhaavviioorraall ppaatttteerrnnss lliikkee ccoommmmaanndd,, iitteerraattoorr,, 
oobbsseerrvveerr,, ssttrraatteeggyy,, tteemmppllaattee mmeetthhoodd 
78
TToopp RReeaassoonnss ttoo CCrreeaattee CCllaassss 
MMooddeell rreeaall--wwoorrlldd oobbjjeeccttss wwiitthh OOOOPP ccllaasssseess 
MMooddeell aabbssttrraacctt oobbjjeeccttss,, pprroocceesssseess,, eettcc.. 
RReedduuccee ccoommpplleexxiittyy 
WWoorrkk aatt hhiigghheerr lleevveell 
 IIssoollaattee ccoommpplleexxiittyy 
HHiiddee iitt iinn aa ccllaassss 
HHiiddee iimmpplleemmeennttaattiioonn ddeettaaiillss  eennccaappssuullaattiioonn 
 LLiimmiitt eeffffeeccttss ooff cchhaannggeess 
CChhaannggeess aaffffeecctt oonnllyy tthheeiirr ccllaassss 
79
Top RReeaassoonnss ttoo CCrreeaattee CCllaassss ((22)) 
HHiiddee gglloobbaall ddaattaa 
WWoorrkk tthhrroouugghh mmeetthhooddss 
GGrroouupp vvaarriiaabblleess tthhaatt aarree uusseedd ttooggeetthheerr 
MMaakkee cceennttrraall ppooiinnttss ooff ccoonnttrrooll 
SSiinnggllee ttaasskk sshhoouulldd bbee ddoonnee aatt ssiinnggllee ppllaaccee 
AAvvooiidd dduupplliiccaattiinngg ccooddee 
 FFaacciilliittaattee ccooddee rreeuussee 
UUssee ccllaassss hhiieerraarrcchhiieess aanndd vviirrttuuaall mmeetthhooddss 
 PPaacckkaaggee rreellaatteedd ooppeerraattiioonnss ttooggeetthheerr 
80
NNaammeessppaacceess 
GGrroouupp rreellaatteedd ccllaasssseess ttooggeetthheerr iinn nnaammeessppaacceess 
 FFoollllooww ccoonnssiisstteenntt nnaammiinngg ccoonnvveennttiioonn 
81 
nnaammeessppaaccee UUttiillss 
{{ 
ccllaassss MMaatthhUUttiillss {{ …… }} 
ccllaassss SSttrriinnggUUttiillss {{ …… }} 
ccllaassss DDaatteeUUttiillss {{ …… }} 
}} 
nnaammeessppaaccee DDaattaaAAcccceessssLLaayyeerr 
{{ 
ccllaassss GGeenneerriiccDDAAOO<<KKeeyy,, EEnnttiittyy>> {{ …… }} 
ccllaassss EEmmppllooyyeeeeDDAAOO<<iinntt,, EEmmppllooyyeeee>> {{ …… }} 
ccllaassss AAddddrreessssDDAAOO<<iinntt,, AAddddrreessss>> {{ …… }} 
}}
CCooddee RReeffoorrmmaattttiinngg aanndd 
IIddeennttiiffiieerrss RReeffaaccttoorriinngg 
LLiivvee DDeemmoo
RReessoouurrcceess 
 TThhee ""HHiigghh--QQuuaalliittyy PPrrooggrraammmmiinngg CCooddee"" ccoouurrssee 
aatt TTeelleerriikk AAccaaddeemmyy:: 
 hhttttpp::////ccooddeeccoouurrssee..tteelleerriikk..ccoomm 
 TThhee bbiibbllee ooff hhiigghh--qquuaalliittyy ssooffttwwaarree ccoonnssttrruuccttiioonn:: 
83 
CCooddee CCoommpplleettee,, 22nndd eeddiittiioonn,, SStteevvee 
MMccCCoonnnneellll,, MMiiccrroossoofftt PPrreessss,, 22000044,, 
IISSBBNN 007733556119967700,, 
hhttttpp::////wwwwww..cccc22ee..ccoomm
HHiigghh--QQuuaalliittyy PPrrooggrraammmmiinngg 
CCooddee CCoonnssttrruuccttiioonn –– PPaarrtt II 
QQQQuuuueeeessssttttiiiioooonnnnssss????
EExxeerrcciisseess 
11.. YYoouu aarree ggiivveenn aa ssoouurrccee ccooddee ttrryyiinngg ttoo ssoollvvee tthhee 
""GGaammee 1155"" ppuuzzzzllee.. YYoouurr ttaasskk iiss ttoo iimmpprroovvee tthhee ccooddee 
qquuaalliittyy wwiitthhoouutt cchhaannggiinngg iittss ffuunnccttiioonnaalliittyy ((oonnllyy bbuugg 
ffiixxeess aarree aalllloowweedd)):: 
aa)) RReeffoorrmmaatt tthhee ccooddee ffoolllloowwiinngg tthhee gguuiiddeelliinneess ddeeffiinneedd iinn 
tthhee ""CCooddee FFoorrmmaattttiinngg"" sseeccttiioonn.. 
bb)) FFoolllloowwiinngg tthhee gguuiiddeelliinneess iinn tthhee ""NNaammiinngg IIddeennttiiffiieerrss"" 
sseeccttiioonn rreennaammee tthhee iiddeennttiiffiieerrss iinn tthhee pprrooggrraamm:: 
ssoolluuttiioonn nnaammee,, pprroojjeecctt nnaammee,, ccllaassss nnaammeess,, mmeetthhoodd 
nnaammeess,, ppaarraammeetteerr nnaammeess,, vvaarriiaabblleess,, eettcc.. 
cc)) SSpplliitt tthhee ffuunnccttiioonnaalliittyy iinnttoo ccllaasssseess wwiitthh ggoooodd 
aabbssttrraaccttiioonn aanndd ssttrroonngg ccoohheessiioonn.. 
85

More Related Content

What's hot

Kelas X : Bab I bentuk negara
Kelas X : Bab I bentuk negaraKelas X : Bab I bentuk negara
Kelas X : Bab I bentuk negaraNovii Kanadia
 
Ptk 1 pendahuluan
Ptk 1 pendahuluanPtk 1 pendahuluan
Ptk 1 pendahuluanMas Ragil
 
2.3.3,4 economic and political geography
2.3.3,4 economic and political geography2.3.3,4 economic and political geography
2.3.3,4 economic and political geographySandy Anthony
 
Autism Presentation_1A
Autism Presentation_1AAutism Presentation_1A
Autism Presentation_1ALena Zammataro
 
05 bentuk penyelesaian sengketa
05 bentuk penyelesaian sengketa05 bentuk penyelesaian sengketa
05 bentuk penyelesaian sengketaAlalan Tanala
 
Metode & desain_kualitatif
Metode & desain_kualitatifMetode & desain_kualitatif
Metode & desain_kualitatifazisbustari
 
Z droit social des marins
  Z droit social des marins  Z droit social des marins
Z droit social des marinsRabah HELAL
 
Adaptive rendering e ASP.NET 2.0 CSS Friendly Control Adapters 1.0
Adaptive rendering e ASP.NET 2.0 CSS Friendly Control Adapters 1.0Adaptive rendering e ASP.NET 2.0 CSS Friendly Control Adapters 1.0
Adaptive rendering e ASP.NET 2.0 CSS Friendly Control Adapters 1.0DotNetMarche
 
Chapter 6 groups and formal organization
Chapter 6 groups and formal organizationChapter 6 groups and formal organization
Chapter 6 groups and formal organizationKent Hansen
 
Implant parts/dental implant courses by Indian dental academy
Implant parts/dental implant courses by Indian dental academyImplant parts/dental implant courses by Indian dental academy
Implant parts/dental implant courses by Indian dental academyIndian dental academy
 
Jurisp. garantías procesales. regla exclusión
Jurisp. garantías procesales. regla exclusiónJurisp. garantías procesales. regla exclusión
Jurisp. garantías procesales. regla exclusiónMariela Silva Cubas
 
Cancer ginecológico en niñas
Cancer ginecológico en niñasCancer ginecológico en niñas
Cancer ginecológico en niñasJorge Corimanya
 
4. kerangka-dasar-penyusunan-dan-penyajian-laporan-keuangan
4. kerangka-dasar-penyusunan-dan-penyajian-laporan-keuangan4. kerangka-dasar-penyusunan-dan-penyajian-laporan-keuangan
4. kerangka-dasar-penyusunan-dan-penyajian-laporan-keuanganinnesnoorfatimah
 
Konsep sehat sakit keperawatan transkultural
Konsep sehat sakit keperawatan transkulturalKonsep sehat sakit keperawatan transkultural
Konsep sehat sakit keperawatan transkulturalsapakademik
 

What's hot (17)

Kelas X : Bab I bentuk negara
Kelas X : Bab I bentuk negaraKelas X : Bab I bentuk negara
Kelas X : Bab I bentuk negara
 
Ptk 1 pendahuluan
Ptk 1 pendahuluanPtk 1 pendahuluan
Ptk 1 pendahuluan
 
2.3.3,4 economic and political geography
2.3.3,4 economic and political geography2.3.3,4 economic and political geography
2.3.3,4 economic and political geography
 
Autism Presentation_1A
Autism Presentation_1AAutism Presentation_1A
Autism Presentation_1A
 
05 bentuk penyelesaian sengketa
05 bentuk penyelesaian sengketa05 bentuk penyelesaian sengketa
05 bentuk penyelesaian sengketa
 
Guia Para Tu Exito Con Emgoldex
Guia Para Tu Exito Con EmgoldexGuia Para Tu Exito Con Emgoldex
Guia Para Tu Exito Con Emgoldex
 
UN Matters for Us
UN Matters for UsUN Matters for Us
UN Matters for Us
 
Metode & desain_kualitatif
Metode & desain_kualitatifMetode & desain_kualitatif
Metode & desain_kualitatif
 
Z droit social des marins
  Z droit social des marins  Z droit social des marins
Z droit social des marins
 
Adaptive rendering e ASP.NET 2.0 CSS Friendly Control Adapters 1.0
Adaptive rendering e ASP.NET 2.0 CSS Friendly Control Adapters 1.0Adaptive rendering e ASP.NET 2.0 CSS Friendly Control Adapters 1.0
Adaptive rendering e ASP.NET 2.0 CSS Friendly Control Adapters 1.0
 
Chapter 6 groups and formal organization
Chapter 6 groups and formal organizationChapter 6 groups and formal organization
Chapter 6 groups and formal organization
 
Implant parts/dental implant courses by Indian dental academy
Implant parts/dental implant courses by Indian dental academyImplant parts/dental implant courses by Indian dental academy
Implant parts/dental implant courses by Indian dental academy
 
Pemeriksaan fisik
Pemeriksaan fisikPemeriksaan fisik
Pemeriksaan fisik
 
Jurisp. garantías procesales. regla exclusión
Jurisp. garantías procesales. regla exclusiónJurisp. garantías procesales. regla exclusión
Jurisp. garantías procesales. regla exclusión
 
Cancer ginecológico en niñas
Cancer ginecológico en niñasCancer ginecológico en niñas
Cancer ginecológico en niñas
 
4. kerangka-dasar-penyusunan-dan-penyajian-laporan-keuangan
4. kerangka-dasar-penyusunan-dan-penyajian-laporan-keuangan4. kerangka-dasar-penyusunan-dan-penyajian-laporan-keuangan
4. kerangka-dasar-penyusunan-dan-penyajian-laporan-keuangan
 
Konsep sehat sakit keperawatan transkultural
Konsep sehat sakit keperawatan transkulturalKonsep sehat sakit keperawatan transkultural
Konsep sehat sakit keperawatan transkultural
 

Viewers also liked

Surfing Legends Final
Surfing Legends FinalSurfing Legends Final
Surfing Legends Finalgestrine
 
Surfing Legends Final
Surfing Legends FinalSurfing Legends Final
Surfing Legends Finalgestrine
 
Surfing legends power point
Surfing legends power pointSurfing legends power point
Surfing legends power pointgestrine
 
Surfing Legends Final
Surfing Legends FinalSurfing Legends Final
Surfing Legends Finalgestrine
 
Surfing legends final
Surfing legends finalSurfing legends final
Surfing legends finalgestrine
 
Surfing legends final
Surfing legends finalSurfing legends final
Surfing legends finalgestrine
 
Surfing legends
Surfing legendsSurfing legends
Surfing legendsgestrine
 

Viewers also liked (7)

Surfing Legends Final
Surfing Legends FinalSurfing Legends Final
Surfing Legends Final
 
Surfing Legends Final
Surfing Legends FinalSurfing Legends Final
Surfing Legends Final
 
Surfing legends power point
Surfing legends power pointSurfing legends power point
Surfing legends power point
 
Surfing Legends Final
Surfing Legends FinalSurfing Legends Final
Surfing Legends Final
 
Surfing legends final
Surfing legends finalSurfing legends final
Surfing legends final
 
Surfing legends final
Surfing legends finalSurfing legends final
Surfing legends final
 
Surfing legends
Surfing legendsSurfing legends
Surfing legends
 

Similar to 21 high-quality programming code construction part-i

10 implementing hard drive
10 implementing hard drive10 implementing hard drive
10 implementing hard drivehafizhanif86
 
Introduction to Health Informatics
Introduction to Health InformaticsIntroduction to Health Informatics
Introduction to Health InformaticsMichael Bice
 
Phil106 2009 the morality of advertising - dan turton
Phil106   2009 the morality of advertising - dan turtonPhil106   2009 the morality of advertising - dan turton
Phil106 2009 the morality of advertising - dan turtonekooketok
 
Market research positioning
Market research   positioningMarket research   positioning
Market research positioningPankaj Soni
 
Resource management
Resource managementResource management
Resource managementsiobhanpdst
 
Mastering conflict in the workplace
Mastering conflict in the workplaceMastering conflict in the workplace
Mastering conflict in the workplaceEvelyn Neale
 
system concept ppt
system concept pptsystem concept ppt
system concept pptgoogle
 
internacional privado
internacional privado internacional privado
internacional privado JA AC
 
Introduction to chemistry
Introduction to chemistryIntroduction to chemistry
Introduction to chemistryDocumentStory
 
Description of Project based learning
Description of Project based learningDescription of Project based learning
Description of Project based learningD Woody
 

Similar to 21 high-quality programming code construction part-i (20)

10 implementing hard drive
10 implementing hard drive10 implementing hard drive
10 implementing hard drive
 
Hvac presentation
Hvac presentationHvac presentation
Hvac presentation
 
Introduction to Health Informatics
Introduction to Health InformaticsIntroduction to Health Informatics
Introduction to Health Informatics
 
Phil106 2009 the morality of advertising - dan turton
Phil106   2009 the morality of advertising - dan turtonPhil106   2009 the morality of advertising - dan turton
Phil106 2009 the morality of advertising - dan turton
 
Time ss10
Time ss10Time ss10
Time ss10
 
02 lecture 2
02 lecture 202 lecture 2
02 lecture 2
 
Market research positioning
Market research   positioningMarket research   positioning
Market research positioning
 
Resource management
Resource managementResource management
Resource management
 
Mastering conflict in the workplace
Mastering conflict in the workplaceMastering conflict in the workplace
Mastering conflict in the workplace
 
Piper book review
Piper book reviewPiper book review
Piper book review
 
system concept ppt
system concept pptsystem concept ppt
system concept ppt
 
Robots
RobotsRobots
Robots
 
supply chain mgmt
supply chain mgmtsupply chain mgmt
supply chain mgmt
 
Negotiation skills
Negotiation skillsNegotiation skills
Negotiation skills
 
internacional privado
internacional privado internacional privado
internacional privado
 
Contract negotiations
Contract negotiationsContract negotiations
Contract negotiations
 
32491
3249132491
32491
 
Homeopathy
HomeopathyHomeopathy
Homeopathy
 
Introduction to chemistry
Introduction to chemistryIntroduction to chemistry
Introduction to chemistry
 
Description of Project based learning
Description of Project based learningDescription of Project based learning
Description of Project based learning
 

More from maznabili

22 Methodology of problem solving
22 Methodology of problem solving22 Methodology of problem solving
22 Methodology of problem solvingmaznabili
 
21 High-quality programming code construction part-ii
21 High-quality programming code construction part-ii21 High-quality programming code construction part-ii
21 High-quality programming code construction part-iimaznabili
 
20 Object-oriented programming principles
20 Object-oriented programming principles20 Object-oriented programming principles
20 Object-oriented programming principlesmaznabili
 
19 Algorithms and complexity
19 Algorithms and complexity19 Algorithms and complexity
19 Algorithms and complexitymaznabili
 
18 Hash tables and sets
18 Hash tables and sets18 Hash tables and sets
18 Hash tables and setsmaznabili
 
17 Trees and graphs
17 Trees and graphs17 Trees and graphs
17 Trees and graphsmaznabili
 
16 Linear data structures
16 Linear data structures16 Linear data structures
16 Linear data structuresmaznabili
 
15 Text files
15 Text files15 Text files
15 Text filesmaznabili
 
14 Defining classes
14 Defining classes14 Defining classes
14 Defining classesmaznabili
 
13 Strings and text processing
13 Strings and text processing13 Strings and text processing
13 Strings and text processingmaznabili
 
12 Exceptions handling
12 Exceptions handling12 Exceptions handling
12 Exceptions handlingmaznabili
 
11 Using classes and objects
11 Using classes and objects11 Using classes and objects
11 Using classes and objectsmaznabili
 
10 Recursion
10 Recursion10 Recursion
10 Recursionmaznabili
 
08 Numeral systems
08 Numeral systems08 Numeral systems
08 Numeral systemsmaznabili
 
05 Conditional statements
05 Conditional statements05 Conditional statements
05 Conditional statementsmaznabili
 
04 Console input output-
04 Console input output-04 Console input output-
04 Console input output-maznabili
 
03 Operators and expressions
03 Operators and expressions03 Operators and expressions
03 Operators and expressionsmaznabili
 

More from maznabili (20)

22 Methodology of problem solving
22 Methodology of problem solving22 Methodology of problem solving
22 Methodology of problem solving
 
21 High-quality programming code construction part-ii
21 High-quality programming code construction part-ii21 High-quality programming code construction part-ii
21 High-quality programming code construction part-ii
 
20 Object-oriented programming principles
20 Object-oriented programming principles20 Object-oriented programming principles
20 Object-oriented programming principles
 
19 Algorithms and complexity
19 Algorithms and complexity19 Algorithms and complexity
19 Algorithms and complexity
 
18 Hash tables and sets
18 Hash tables and sets18 Hash tables and sets
18 Hash tables and sets
 
17 Trees and graphs
17 Trees and graphs17 Trees and graphs
17 Trees and graphs
 
16 Linear data structures
16 Linear data structures16 Linear data structures
16 Linear data structures
 
15 Text files
15 Text files15 Text files
15 Text files
 
14 Defining classes
14 Defining classes14 Defining classes
14 Defining classes
 
13 Strings and text processing
13 Strings and text processing13 Strings and text processing
13 Strings and text processing
 
12 Exceptions handling
12 Exceptions handling12 Exceptions handling
12 Exceptions handling
 
11 Using classes and objects
11 Using classes and objects11 Using classes and objects
11 Using classes and objects
 
10 Recursion
10 Recursion10 Recursion
10 Recursion
 
09 Methods
09 Methods09 Methods
09 Methods
 
08 Numeral systems
08 Numeral systems08 Numeral systems
08 Numeral systems
 
07 Arrays
07 Arrays07 Arrays
07 Arrays
 
06 Loops
06 Loops06 Loops
06 Loops
 
05 Conditional statements
05 Conditional statements05 Conditional statements
05 Conditional statements
 
04 Console input output-
04 Console input output-04 Console input output-
04 Console input output-
 
03 Operators and expressions
03 Operators and expressions03 Operators and expressions
03 Operators and expressions
 

21 high-quality programming code construction part-i

  • 1. HHiigghh--QQuuaalliittyy PPrrooggrraammmmiinngg CCooddee CCoonnssttrruuccttiioonn –– PPaarrtt II RReevveeaalliinngg tthhee SSeeccrreettss ooff SSeellff--DDooccuummeennttiinngg CCooddee SSvveettlliinn NNaakkoovv TTeelleerriikk CCoorrppoorraattiioonn wwwwww..tteelleerriikk..ccoomm FFoorr CC## DDeevveellooppeerrss
  • 2. TTaabbllee ooff CCoonntteennttss WWhhaatt iiss HHiigghh--QQuuaalliittyy PPrrooggrraammmmiinngg CCooddee?? EExxtteerrnnaall aanndd IInntteerrnnaall CCooddee QQuuaalliittyy NNaammiinngg IIddeennttiiffiieerrss NNaammiinngg TTyyppeess,, CCllaasssseess,, IInntteerrffaacceess,, EEnnuummeerraattiioonnss,, PPrrooppeerrttiieess,, MMeetthhooddss,, PPaarraammeetteerrss,, VVaarriiaabblleess,, CCoonnssttaannttss,, eettcc..  CCooddee FFoorrmmaattttiinngg DDeessiiggnniinngg HHiigghh--QQuuaalliittyy CCllaasssseess AAbbssttrraaccttiioonn,, EEnnccaappssuullaattiioonn,, IInnhheerriittaannccee,, RReeaassoonnss ttoo CCrreeaattee aa CCllaassss 2
  • 3. WWhhaatt iiss HHiigghh--QQuuaalliittyy PPrrooggrraammmmiinngg CCooddee??
  • 4. WWhhyy tthhee CCooddee QQuuaalliittyy IIss IImmppoorrttaanntt?? WWhhaatt ddooeess tthhiiss ccooddee ddoo?? IIss iitt ccoorrrreecctt?? 4 ssttaattiicc vvooiidd MMaaiinn(()) {{ iinntt vvaalluuee==001100,, ii==55,, ww;; sswwiittcchh((vvaalluuee)){{ccaassee 1100::ww==55;;CCoonnssoollee..WWrriitteeLLiinnee((ww));;bbrreeaakk;;ccaassee 99::ii==00;;bbrreeaakk;; ccaassee 88::CCoonnssoollee..WWrriitteeLLiinnee((""88 ""));;bbrreeaakk;; ddeeffaauulltt::CCoonnssoollee..WWrriitteeLLiinnee((""ddeeff ""));;{{ CCoonnssoollee..WWrriitteeLLiinnee((""hhoohhoo ""));; }} ffoorr ((iinntt kk == 00;; kk << ii;; kk++++,, CCoonnssoollee..WWrriitteeLLiinnee((kk -- ''ff''))));;bbrreeaakk;;}} {{ CCoonnssoollee..WWrriitteeLLiinnee((""lloooopp!!""));; }} }}
  • 5. WWhhyy tthhee CCooddee QQuuaalliittyy IIss IImmppoorrttaanntt?? ((22)) NNooww tthhee ccooddee iiss ffoorrmmaatttteedd,, bbuutt iiss ssttiillll uunncclleeaarr.. 5 ssttaattiicc vvooiidd MMaaiinn(()) {{ iinntt vvaalluuee == 001100,, ii == 55,, ww;; sswwiittcchh ((vvaalluuee)) {{ ccaassee 1100:: ww == 55;; CCoonnssoollee..WWrriitteeLLiinnee((ww));; bbrreeaakk;; ccaassee 99:: ii == 00;; bbrreeaakk;; ccaassee 88:: CCoonnssoollee..WWrriitteeLLiinnee((""88 ""));; bbrreeaakk;; ddeeffaauulltt:: CCoonnssoollee..WWrriitteeLLiinnee((""ddeeff ""));; CCoonnssoollee..WWrriitteeLLiinnee((""hhoohhoo ""));; ffoorr ((iinntt kk == 00;; kk << ii;; kk++++,, CCoonnssoollee..WWrriitteeLLiinnee((kk -- ''ff'')))) ;; bbrreeaakk;; }} CCoonnssoollee..WWrriitteeLLiinnee((""lloooopp!!""));; }}
  • 6. SSooffttwwaarree QQuuaalliittyy  EExxtteerrnnaall qquuaalliittyy DDooeess tthhee ssooffttwwaarree bbeehhaavvee ccoorrrreeccttllyy?? AArree tthhee pprroodduucceedd rreessuullttss ccoorrrreecctt?? DDooeess tthhee ssooffttwwaarree rruunn ffaasstt?? IIss tthhee ssooffttwwaarree UUII eeaassyy--ttoo--uussee??  IInntteerrnnaall qquuaalliittyy IItt tthhee ccooddee eeaassyy ttoo rreeaadd aanndd uunnddeerrssttaanndd?? IItt tthhee ccooddee wweellll ssttrruuccttuurreedd?? IIss tthhee ccooddee eeaassyy ttoo mmooddiiffyy?? 6
  • 7. WWhhaatt iiss HHiigghh--QQuuaalliittyy PPrrooggrraammmmiinngg CCooddee?? HHiigghh--qquuaalliittyy pprrooggrraammmmiinngg ccooddee:: EEaassyy ttoo rreeaadd aanndd uunnddeerrssttaanndd EEaassyy ttoo mmooddiiffyy aanndd mmaaiinnttaaiinn CCoorrrreecctt bbeehhaavviioorr iinn aallll ccaasseess WWeellll tteesstteedd WWeellll aarrcchhiitteeccttuurreedd aanndd ddeessiiggnneedd WWeellll ddooccuummeenntteedd SSeellff--ddooccuummeennttiinngg ccooddee WWeellll ffoorrmmaatttteedd 7
  • 8. CCooddee CCoonnvveennttiioonnss  CCooddee ccoonnvveennttiioonnss aarree ffoorrmmaall gguuiiddeelliinneess aabboouutt tthhee ssttyyllee ooff tthhee ssoouurrccee ccooddee:: CCooddee ffoorrmmaattttiinngg ccoonnvveennttiioonnss IInnddeennttaattiioonn,, wwhhiitteessppaaccee,, eettcc.. NNaammiinngg ccoonnvveennttiioonnss PPaassccaallCCaassee oorr ccaammeellCCaassee,, pprreeffiixxeess,, ssuuffffiixxeess,, eettcc.. BBeesstt pprraaccttiicceess CCllaasssseess,, iinntteerrffaacceess,, eennuummeerraattiioonnss,, ssttrruuccttuurreess,, iinnhheerriittaannccee,, eexxcceeppttiioonnss,, pprrooppeerrttiieess,, eevveennttss,, ccoonnssttrruuccttoorrss,, ffiieellddss,, ooppeerraattoorrss,, eettcc.. 8
  • 9. CCooddee CCoonnvveennttiioonnss ((22)) MMiiccrroossoofftt hhaass ooffffiicciiaall ccooddee ccoonnvveennttiioonnss ccaalllleedd DDeessiiggnn GGuuiiddeelliinneess ffoorr DDeevveellooppiinngg CCllaassss LLiibbrraarriieess:: hhttttpp::////mmssddnn..mmiiccrroossoofftt..ccoomm//eenn--uuss//lliibbrraarryy//mmss22229004422..aassppxx  LLaarrggee oorrggaanniizzaattiioonnss ffoollllooww ssttrriicctt ccoonnvveennttiioonnss CCooddee ccoonnvveennttiioonnss ccaann vvaarryy iinn ddiiffffeerreenntt tteeaammss MMoosstt ccoonnvveennttiioonnss ddeevveellooppeerrss ffoollllooww tthhee ooffffiicciiaall MMiiccrroossoofftt''ss rreeccoommmmeennddaattiioonnss bbuutt eexxtteenndd tthheemm  HHiigghh--qquuaalliittyy ccooddee ggooeess bbeeyyoonndd ccooddee ccoonnvveennttiioonnss SSooffttwwaarree qquuaalliittyy iiss nnoott jjuusstt aa sseett ooff ccoonnvveennttiioonnss –– iittss iiss aa wwaayy ooff tthhiinnkkiinngg 9
  • 10. MMaannaaggiinngg CCoommpplleexxiittyy MMaannaaggiinngg ccoommpplleexxiittyy ppllaayyss aa cceennttrraall rroollee iinn ssooffttwwaarree ccoonnssttrruuccttiioonn MMiinniimmiizzee tthhee aammoouunntt ooff ccoommpplleexxiittyy tthhaatt aannyyoonnee’’ss bbrraaiinn hhaass ttoo ddeeaall wwiitthh aatt cceerrttaaiinn ttiimmee  AArrcchhiitteeccttuurree aanndd ddeessiiggnn cchhaalllleennggeess DDeessiiggnn mmoodduulleess aanndd ccllaasssseess ttoo rreedduuccee ccoommpplleexxiittyy  CCooddee ccoonnssttrruuccttiioonn cchhaalllleennggeess AAppppllyy ggoooodd ssooffttwwaarree ccoonnssttrruuccttiioonn pprraaccttiicceess:: ccllaasssseess,, mmeetthhooddss,, vvaarriiaabblleess,, nnaammiinngg,, ssttaatteemmeennttss,, eerrrroorr hhaannddlliinngg,, ffoorrmmaattttiinngg,, ccoommmmeennttss,, eettcc.. 10
  • 11. MMaannaaggiinngg CCoommpplleexxiittyy ((22)) KKeeyy ttoo bbeeiinngg aann eeffffeeccttiivvee pprrooggrraammmmeerr:: MMaaxxiimmiizziinngg tthhee ppoorrttiioonn ooff aa pprrooggrraamm tthhaatt yyoouu ccaann ssaaffeellyy iiggnnoorree wwhhiillee wwoorrkkiinngg oonn aannyy oonnee sseeccttiioonn ooff ccooddee MMoosstt pprraaccttiicceess ddiissccuusssseedd llaatteerr pprrooppoossee wwaayyss ttoo aacchhiieevvee tthhiiss iimmppoorrttaanntt ggooaall 11
  • 12. KKeeyy CChhaarraacctteerriissttiiccss ooff HHiigghh--QQuuaalliittyy CCooddee  CCoorrrreecctt bbeehhaavviioorr CCoonnffoorrmmiinngg ttoo tthhee rreeqquuiirreemmeennttss SSttaabbllee,, nnoo hhaannggss,, nnoo ccrraasshheess BBuugg ffrreeee CCoorrrreecctt rreessppoonnssee ttoo iinnccoorrrreecctt uussaaggee  EEaassyy ttoo rreeaadd  EEaassyy ttoo uunnddeerrssttaanndd MMaaiinnttaaiinnaabbllee –– eeaassyy ttoo mmooddiiffyy wwhheenn rreeqquuiirreedd 12
  • 13. NNaammiinngg IIddeennttiiffiieerrss NNaammiinngg CCllaasssseess,, IInntteerrffaacceess,, EEnnuummeerraattiioonnss,, MMeetthhooddss,, VVaarriiaabblleess aanndd CCoonnssttaannttss
  • 14. GGeenneerraall NNaammiinngg GGuuiiddeelliinneess AAllwwaayyss uussee EEnngglliisshh HHooww yyoouu wwiillll ffeeeell iiff yyoouu rreeaadd VViieettnnaammeessee ccooddee wwiitthh vvaarriiaabblleess nnaammeedd iinn VViieettnnaammeessee?? EEnngglliisshh iiss tthhee oonnllyy llaanngguuaaggee tthhaatt aallll ssooffttwwaarree ddeevveellooppeerrss ssppeeaakk AAvvooiidd aabbbbrreevviiaattiioonnss EExxaammppllee:: ssccrrppCCnntt vvss.. ssccrriippttssCCoouunntt AAvvooiidd hhaarrdd--ttoo--pprroonnoouunnccee nnaammeess EExxaammppllee:: ddttbbggRReeggEExxPPttrrnn vvss.. ddaatteeTTiimmeeBBuullggaarriiaannRReeggEExxPPaatttteerrnn 14
  • 15. UUssee MMeeaanniinnggffuull NNaammeess  AAllwwaayyss pprreeffeerr uussiinngg mmeeaanniinnggffuull nnaammeess NNaammeess sshhoouulldd aannsswweerr tthheessee qquueessttiioonnss:: WWhhaatt ddooeess tthhiiss ccllaassss ddoo?? WWhhaatt iiss tthhee iinntteenntt ooff tthhiiss vvaarriiaabbllee?? WWhhaatt iiss tthhiiss vvaarriiaabbllee // ccllaassss uusseedd ffoorr?? EExxaammpplleess:: FFaaccttoorriiaallCCaallccuullaattoorr,, ssttuuddeennttssCCoouunntt,, MMaatthh..PPII,, ccoonnffiiggFFiilleeNNaammee,, CCrreeaatteeRReeppoorrtt IInnccoorrrreecctt eexxaammpplleess:: kk,, kk22,, kk33,, jjuunnkk,, ff3333,, KKJJJJ,, bbuuttttoonn11,, vvaarriiaabbllee,, tteemmpp,, ttmmpp,, tteemmpp__vvaarr,, ssoommeetthhiinngg,, ssoommeeVVaalluuee 15
  • 16. NNaammeess SShhoouulldd bbee MMeeaanniinnggffuull iinn TThheeiirr CCoonntteexxtt WWhheetthheerr aa nnaammee iiss mmeeaanniinnggffuull oorr nnoott ddeeppeennddss oonn iittss ccoonntteexxtt ((iittss eenncclloossiinngg ttyyppee))  EExxaammpplleess ooff mmeeaanniinnggffuull nnaammeess:: GGeenneerraattee(()) iinn tthhee ccllaassss LLaabbyyrriinntthhGGeenneerraattoorr FFiinndd((ssttrriinngg ffiilleeNNaammee)) iinn tthhee ccllaassss FFiilleeFFiinnddeerr DDeeppoossiitt((ddeecciimmaall aammoouunntt)) iinn tthhee ccllaassss AAccccoouunntt  EExxaammpplleess ooff mmeeaanniinngglleessss nnaammeess:: GGeenneerraattee(()) iinn tthhee ccllaassss PPrrooggrraamm FFiinndd((ssttrriinngg ffiilleeNNaammee)) iinn tthhee ccllaassss PPrrooggrraamm 16
  • 17. FFaakkee MMeeaanniinnggffuull NNaammeess  JJuunniioorr ddeevveellooppeerrss oofftteenn uussee mmeeaanniinnggffuull nnaammeess tthhaatt aarree iinn ffaacctt mmeeaanniinngglleessss BBaadd nnaammiinngg eexxaammpplleess:: TTooppiicc66EExxeerrcciissee1122,, LLooooppssEExxeerrcciissee1122,, PPrroobblleemm77,, OOOOPPLLeeccttuurree__LLaassttEExxeerrcciissee YYeess,, TTooppiicc66EExxeerrcciissee1122 iinnddiiccaatteess tthhaatt tthhiiss iiss ssoolluuttiioonn ttoo eexxeerrcciissee 1122,, bbuutt wwhhaatt iiss iitt aabboouutt?? BBeetttteerr nnaammiinngg:: MMaaxxiimmaallNNuummbbeerrssSSuubbsseeqquueennccee 17
  • 18. NNaammiinngg TTyyppeess NNaammiinngg ttyyppeess ((ccllaasssseess,, ssttrruuccttuurreess,, eettcc..)) UUssee PPaassccaallCCaassee cchhaarraacctteerr ccaassiinngg EExxaammpplleess:: RReeccuurrssiivveeFFaaccttoorriiaallCCaallccuullaattoorr,, TTrreeeeSSeett,, XXmmllDDooccuummeenntt,, IIEEnnuummeerraabbllee,, CCoolloorr,, TTrreeeeNNooddee,, IInnvvaalliiddTTrraannssaaccttiioonnEExxcceeppttiioonn,, MMaaiinnFFoorrmm IInnccoorrrreecctt eexxaammpplleess:: rreeccuurrssiivveeFFaaccttoorriiaallCCaallccuullaattoorr,, rreeccuurrssiivvee__ffaaccttoorriiaall__ccaallccuullaattoorr,, RREECCUURRSSIIVVEE__FFAACCTTOORRIIAALL__CCAALLCCUULLAATTOORR 18
  • 19. NNaammiinngg CCllaasssseess aanndd SSttrruuccttuurreess UUssee tthhee ffoolllloowwiinngg ffoorrmmaattss:: [[NNoouunn]] [[AAddjjeeccttiivvee]] ++ [[NNoouunn]]  EExxaammpplleess:: SSttuuddeenntt,, FFiilleeSSyysstteemm,, BBiinnaarryyTTrreeeeNNooddee,, CCoonnssttaannttss,, MMaatthhUUttiillss,, TTeexxttBBooxx,, CCaalleennddaarr  IInnccoorrrreecctt eexxaammpplleess:: MMoovvee,, FFiinnddUUsseerrss,, FFaasstt,, OOppttiimmiizzee,, EExxttrreemmllyy,, FFaassttFFiinnddIInnDDaattaabbaassee,, CChheecckk 19
  • 20. NNaammiinngg IInntteerrffaacceess  FFoolllloowwiinngg ffoorrmmaattss aarree aacccceeppttaabbllee:: ''II'' ++ [[VVeerrbb]] ++ ''aabbllee'' ''II'' ++ [[NNoouunn]],, ''II'' ++ [[AAddjjeeccttiivvee]] ++ [[NNoouunn]]  EExxaammpplleess:: IIEEnnuummeerraabbllee,, IIFFoorrmmaattttaabbllee,, IIDDaattaaRReeaaddeerr,, IILLiisstt,, IIHHttttppMMoodduullee,, IICCoommmmaannddEExxeeccuuttoorr  IInnccoorrrreecctt eexxaammpplleess:: LLiisstt,, FFiinnddUUsseerrss,, IIFFaasstt,, IIMMeemmoorryyOOppttiimmiizzee,, OOppttiimmiizzeerr,, FFaassttFFiinnddIInnDDaattaabbaassee,, CChheecckkBBooxx 20
  • 21. NNaammiinngg EEnnuummeerraattiioonnss  SSeevveerraall ffoorrmmaattss aarree aacccceeppttaabbllee:: [[NNoouunn]] oorr [[VVeerrbb]] oorr [[AAddjjeeccttiivvee]] UUssee tthhee ssaammee ssttyyllee ffoorr aallll mmeemmbbeerrss  EExxaammpplleess:: eennuumm DDaayy {{MMoonnddaayy,, TTuueessddaayy,, WWeeddnneessddaayy,, ……}},, eennuumm AAppppSSttaattee {{RRuunnnniinngg,, FFiinniisshheedd,, ……}},, eennuumm WWiinnddoowwSSttaattee {{NNoorrmmaall,, MMaaxxiimmiizzeedd,, ……}}  IInnccoorrrreecctt eexxaammpplleess:: eennuumm CCoolloorr {{rreedd,, ggrreeeenn,, bblluuee,, wwhhiittee}},, eennuumm PPAAGGEE__FFOORRMMAATT {{AA44,, AA55,, AA33,, LLEEGGAALL,, ……}} 21
  • 22. NNaammiinngg SSppeecciiaall CCllaasssseess  EExxcceeppttiioonnss AAdddd ''EExxcceeppttiioonn'' aass ssuuffffiixx UUssee iinnffoorrmmaattiivvee nnaammee EExxaammppllee:: FFiilleeNNoottFFoouunnddEExxcceeppttiioonn IInnccoorrrreecctt eexxaammppllee:: FFiilleeNNoottFFoouunnddEErrrroorr DDeelleeggaattee CCllaasssseess AAdddd ''DDeelleeggaattee'' oorr ''EEvveennttHHaannddlleerr'' aass ssuuffffiixx EExxaammppllee:: DDoowwnnllooaaddFFiinniisshheeddDDeelleeggaattee IInnccoorrrreecctt eexxaammppllee:: WWaakkeeUUppNNoottiiffiiccaattiioonn 22
  • 23. TThhee LLeennggtthh ooff CCllaassss NNaammeess HHooww lloonngg ccoouulldd bbee tthhee nnaammee ooff aa ccllaassss // ssttrruucctt // iinntteerrffaaccee // eennuumm?? TThhee nnaammee sshhoouulldd bbee aass lloonngg aass rreeqquuiirreedd DDoonn''tt aabbbbrreevviiaattee tthhee nnaammeess iiff tthhiiss ccoouulldd mmaakkee tthheemm uunncclleeaarr YYoouurr IIDDEE hhaass aauuttooccoommpplleettee,, rriigghhtt??  EExxaammpplleess:: FFiilleeNNoottFFoouunnddEExxcceeppttiioonn,, CCuussttoommeerrSSuuppppoorrttNNoottiiffiiccaattiioonnSSeerrvviiccee  IInnccoorrrreecctt eexxaammpplleess:: FFNNFFEExxcceeppttiioonn,, CCuussttSSuuppppNNoottiiffSSrrvvcc 23
  • 24. NNaammiinngg NNaammeessppaacceess NNaammeessppaacceess nnaammiinngg gguuiiddeelliinneess UUssee PPaassccaallCCaassee  FFoolllloowwiinngg ffoorrmmaattss aarree aacccceeppttaabbllee:: CCoommppaannyy..PPrroodduucctt..CCoommppoonneenntt.. …… PPrroodduucctt..CCoommppoonneenntt..……  EExxaammppllee:: TTeelleerriikk..WWiinnCCoonnttrroollss..GGrriiddVViieeww  IInnccoorrrreecctt eexxaammppllee::  TTeelleerriikk__WWiinnCCoonnttrroollssGGrriiddVViieeww,, CCllaasssseess 24
  • 25. NNaammiinngg AAsssseemmbblliieess AAsssseemmbbllyy nnaammeess sshhoouulldd ffoollllooww tthhee rroooott nnaammeessppaaccee iinn iittss ccllaassss hhiieerraarrcchhyy  EExxaammpplleess:: TTeelleerriikk..WWiinnCCoonnttrroollss..GGrriiddVViieeww..ddllll OOrraaccllee..DDaattaaAAcccceessss..ddllll IInntteerroopp..CCAAPPIICCOOMM..ddllll  IInnccoorrrreecctt eexxaammpplleess:: TTeelleerriikk__WWiinnCCoonnttrroollssGGrriiddVViieeww..ddllll OOrraacclleeDDaattaaAAcccceessss..ddllll 25
  • 26. NNaammiinngg MMeetthhooddss MMeetthhooddss nnaammiinngg gguuiiddeelliinneess MMeetthhoodd nnaammeess sshhoouulldd bbee mmeeaanniinnggffuull SShhoouulldd aannsswweerr tthhee qquueessttiioonn:: WWhhaatt ddooeess tthhiiss mmeetthhoodd ddoo?? IIff yyoouu ccaannnnoott ffiinndd aa ggoooodd nnaammee ffoorr aa mmeetthhoodd,, tthhiinnkk aabboouutt ddooeess iitt hhaavvee cclleeaarr iinntteenntt  EExxaammpplleess:: FFiinnddSSttuuddeenntt,, LLooaaddRReeppoorrtt,, SSiinnuuss  IInnccoorrrreecctt eexxaammpplleess:: MMeetthhoodd11,, DDooSSoommeetthhiinngg,, HHaannddlleeSSttuuffff,, SSaammpplleeMMeetthhoodd,, DDiirrttyyHHaacckk 26
  • 27. NNaammiinngg MMeetthhooddss ((22)) UUssee PPaassccaallCCaassee cchhaarraacctteerr ccaassiinngg EExxaammppllee:: LLooaaddSSeettttiinnggss,, nnoott llooaaddSSeettttiinnggss  PPrreeffeerr tthhee ffoolllloowwiinngg ffoorrmmaattss:: [[VVeerrbb]] [[VVeerrbb]] ++ [[NNoouunn]],, [[VVeerrbb]] ++ [[AAddjjeeccttiivvee]] ++ [[NNoouunn]]  EExxaammpplleess:: SShhooww,, LLooaaddSSeettttiinnggssFFiillee,, FFiinnddNNooddeeBByyPPaatttteerrnn,, TTooSSttrriinngg,, PPrriinnttLLiisstt  IInnccoorrrreecctt eexxaammpplleess:: SSttuuddeenntt,, CCoouunntteerr,, WWhhiittee,, GGeenneerraattoorr,, AApppprrooxxiimmaattiioonn,, MMaatthhUUttiillss 27
  • 28. MMeetthhooddss RReettuurrnniinngg aa VVaalluuee MMeetthhooddss rreettuurrnniinngg vvaalluueess sshhoouulldd ddeessccrriibbee tthhee rreettuurrnneedd vvaalluuee  EExxaammpplleess:: CCoonnvveerrttMMeetteerrssTTooIInncchheess,, nnoott MMeetteerrssIInncchheess oorr CCoonnvveerrtt oorr CCoonnvveerrttUUnniitt MMeetteerrss22IInncchheess iiss ssttiillll aacccceeppttaabbllee CCaallccuullaatteeSSiinnuuss iiss ggoooodd SSiinnuuss iiss aallssoo aacccceeppttaabbllee EEnnssuurree tthhaatt tthhee uunniitt ooff mmeeaassuurree ooff oobbvviioouuss PPrreeffeerr MMeeaassuurreeFFoonnttIInnPPiixxeellss ttoo MMeeaassuurreeFFoonntt 28
  • 29. SSiinnggllee PPuurrppoossee ooff AAllll MMeetthhooddss MMeetthhooddss sshhoouulldd hhaavvee aa ssiinnggllee ppuurrppoossee!! OOtthheerrwwiissee tthheeyy ccaannnnoott bbee nnaammeedd wweellll HHooww ttoo nnaammee aa mmeetthhoodd tthhaatt ccrreeaatteess aannnnuuaall iinnccoommeess rreeppoorrtt,, ddoowwnnllooaaddss uuppddaatteess ffrroomm iinntteerrnneett aanndd ssccaannss tthhee ssyysstteemm ffoorr vviirruusseess?? CCrreeaatteeAAnnnnuuaallIInnccoommeessRReeppoorrttDDoowwnnllooaaddUUppddaa tteessAAnnddSSccaannFFoorrVViirruusseess iiss aa nniiccee nnaammee,, rriigghhtt?? MMeetthhooddss tthhaatt hhaavvee mmuullttiippllee ppuurrppoosseess ((wweeaakk ccoohheessiioonn)) aarree hhaarrdd ttoo bbee nnaammeedd NNeeeedd ttoo bbee rreeffaaccttoorreedd iinnsstteeaadd ooff nnaammeedd 29
  • 30. CCoonnssiisstteennccyy iinn MMeetthhooddss NNaammiinngg  UUssee ccoonnssiisstteenntt nnaammiinngg iinn tthhee eennttiirree pprroojjeecctt LLooaaddFFiillee,, LLooaaddIImmaaggeeFFrroommFFiillee,, LLooaaddSSeettttiinnggss,, LLooaaddFFoonntt,, LLooaaddLLiibbrraarryy,, bbuutt nnoott RReeaaddTTeexxttFFiillee UUssee ccoonnssiisstteennttllyy tthhee ooppppoossiitteess aatt tthhee ssaammee lleevveell ooff aabbssttrraaccttiioonn:: LLooaaddLLiibbrraarryy vvss.. UUnnllooaaddLLiibbrraarryy,, bbuutt nnoott FFrreeeeHHaannddllee OOppeennFFiillee vvss.. CClloosseeFFiillee,, bbuutt nnoott DDeeaallllooccaatteeRReessoouurrccee GGeettNNaammee vvss.. SSeettNNaammee,, bbuutt nnoott AAssssiiggnnNNaammee 30
  • 31. TThhee LLeennggtthh ooff MMeetthhoodd NNaammeess HHooww lloonngg ccoouulldd bbee tthhee nnaammee ooff aa mmeetthhoodd?? TThhee nnaammee sshhoouulldd bbee aass lloonngg aass rreeqquuiirreedd DDoonn''tt aabbbbrreevviiaattee YYoouurr IIDDEE hhaass aauuttooccoommpplleettee  EExxaammpplleess:: LLooaaddCCuussttoommeerrSSuuppppoorrttNNoottiiffiiccaattiioonnSSeerrvviiccee,, CCrreeaatteeMMoonntthhllyyAAnnddAAnnnnuuaallIInnccoommeessRReeppoorrtt  IInnccoorrrreecctt eexxaammpplleess:: LLooaaddCCuussttSSuuppppSSrrvvcc,, CCrreeaatteeMMoonntthhIInnccRReeppoorrtt 31
  • 32. NNaammiinngg MMeetthhoodd PPaarraammeetteerrss MMeetthhoodd ppaarraammeetteerrss nnaammeess PPrreeffeerrrreedd ffoorrmm:: [[NNoouunn]] oorr [[AAddjjeeccttiivvee]] ++ [[NNoouunn]] SShhoouulldd bbee iinn ccaammeellCCaassee SShhoouulldd bbee mmeeaanniinnggffuull UUnniitt ooff mmeeaassuurree sshhoouulldd bbee oobbvviioouuss  EExxaammpplleess:: ffiirrssttNNaammee,, rreeppoorrtt,, uusseerrssLLiisstt,, ffoonnttSSiizzeeIInnPPiixxeellss,, ssppeeeeddKKmmHH,, ffoonntt  IInnccoorrrreecctt eexxaammpplleess:: pp,, pp11,, pp22,, ppooppuullaattee,, LLaassttNNaammee,, llaasstt__nnaammee,, ccoonnvveerrttIImmaaggee 32
  • 33. NNaammiinngg VVaarriiaabblleess VVaarriiaabbllee nnaammeess SShhoouulldd bbee iinn ccaammeellCCaassee PPrreeffeerrrreedd ffoorrmm:: [[NNoouunn]] oorr [[AAddjjeeccttiivvee]] ++ [[NNoouunn]] SShhoouulldd eexxppllaaiinn tthhee ppuurrppoossee ooff tthhee vvaarriiaabbllee IIff yyoouu ccaann''tt ffiinndd ggoooodd nnaammee ffoorr aa vvaarriiaabbllee cchheecckk iiff iitt hhaass aa ssiinnggllee ppuurrppoossee EExxcceeppttiioonn:: vvaarriiaabblleess wwiitthh vveerryy ssmmaallll ssccooppee,, ee..gg.. tthhee iinnddeexx vvaarriiaabbllee iinn aa 33--lliinneess lloonngg ffoorr--lloooopp NNaammeess sshhoouulldd bbee ccoonnssiisstteenntt iinn tthhee pprroojjeecctt 33
  • 34. NNaammiinngg VVaarriiaabblleess –– EExxaammppllee  EExxaammpplleess:: ffiirrssttNNaammee,, rreeppoorrtt,, uusseerrssLLiisstt ,, ffoonnttSSiizzee,, mmaaxxSSppeeeedd,, ffoonntt,, ssttaarrttIInnddeexx,, eennddIInnddeexx,, cchhaarrssCCoouunntt,, ccoonnffiiggSSeettttiinnggssXXmmll,, ccoonnffiigg,, ddbbCCoonnnneeccttiioonn,, ssqqllCCoommmmaannddCCrreeaatteeUUsseerr  IInnccoorrrreecctt eexxaammpplleess:: ffoooo,, bbaarr,, pp,, pp11,, pp22,, ppooppuullaattee,, LLaassttNNaammee,, llaasstt__nnaammee,, LLAASSTT__NNAAMMEE,, ccoonnvveerrttIImmaaggee,, mmoovveeMMaarrggiinn,, MMAAXXSSppeeeedd,, __ffiirrssttNNaammee,, ____tteemmpp,, ffiirrssttNNaammeeMMiiddddlleeNNaammeeAAnnddLLaassttNNaammee 34
  • 35. MMoorree aabboouutt NNaammiinngg VVaarriiaabblleess  TThhee nnaammee sshhoouulldd bbee aaddddrreesssseedd ttoo tthhee pprroobblleemm wwee ssoollvvee,, nnoott ttoo tthhee mmeeaannss wwee uussee ttoo ssoollvvee iitt PPrreeffeerr nnoouunnss ffrroomm tthhee bbuussiinneessss ddoommaaiinn ttoo ccoommppuutteerr tteerrmmss  EExxaammpplleess:: aaccccoouunnttss,, ccuussttoommeerrss,, ccuussttoommeerrAAddddrreessss,, aaccccoouunnttHHoollddeerr,, ppaayymmeennttPPllaann,, vviippPPllaayyeerr  IInnccoorrrreecctt eexxaammpplleess:: aaccccoouunnttssLLiinnkkeeddLLiisstt,, ccuussttoommeerrssHHaasshhttaabbllee,, ppaayymmeennttssPPrriioorriittyyQQuueeuuee,, ppllaayyeerrssAArrrraayy 35
  • 36. NNaammiinngg BBoooolleeaann VVaarriiaabblleess  BBoooolleeaann vvaarriiaabblleess sshhoouulldd iimmppllyy ttrruuee oorr ffaallssee  PPrreeffiixxeess lliikkee iiss,, hhaass aanndd ccaann aarree uusseeffuull UUssee ppoossiittiivvee bboooolleeaann vvaarriiaabbllee nnaammeess IInnccoorrrreecctt eexxaammppllee:: iiff ((!! nnoottFFoouunndd)) {{ …… }}  EExxaammpplleess:: hhaassPPeennddiinnggPPaayymmeenntt,, ccuussttoommeerrFFoouunndd,, vvaalliiddAAddddrreessss,, ppoossiittiivveeBBaallaannccee,, iissPPrriimmee  IInnccoorrrreecctt eexxaammpplleess:: nnoottFFoouunndd,, rruunn,, pprrooggrraammSSttoopp,, ppllaayyeerr,, lliisstt,, ffiinnddCCuussttoommeerrBByyIIdd,, iissUUnnssuucccceessssffuullll 36
  • 37. NNaammiinngg SSppeecciiaall VVaarriiaabblleess NNaammiinngg CCoouunntteerrss EEssttaabblliisshh aa ccoonnvveennttiioonn,, ee..gg.. [[NNoouunn]] ++ ''CCoouunntt'' EExxaammpplleess:: ttiicckkeettssCCoouunntt,, ccuussttoommeerrssCCoouunntt  SSttaattee EEssttaabblliisshh aa ccoonnvveennttiioonn,, ee..gg.. [[NNoouunn]] ++ ''SSttaattee'' EExxaammpplleess:: bbllooggPPaarrsseeSSttaattee,, tthhrreeaaddSSttaattee VVaarriiaabblleess wwiitthh ssmmaallll ssccooppee aanndd ssppaann SShhoorrtt nnaammeess ccaann bbee uusseedd,, ee..gg.. iinnddeexx,, ii,, uu 37
  • 38. TTeemmppoorraarryy VVaarriiaabblleess DDoo rreeaallllyy tteemmppoorraarryy vvaarriiaabblleess eexxiisstt?? AAllll vvaarriiaabblleess iinn aa pprrooggrraamm aarree tteemmppoorraarryy bbeeccaauussee tthheeyy aarree uusseedd tteemmppoorraarriillyy oonnllyy dduurriinngg tthhee pprrooggrraamm eexxeeccuuttiioonn,, rriigghhtt??  TTeemmppoorraarryy vvaarriiaabblleess ccaann aallwwaayyss bbee nnaammeedd bbeetttteerr tthhaann tteemmpp oorr ttmmpp:: 38 //// SSwwaapp aa[[ii]] aanndd aa[[jj]] iinntt tteemmpp == aa[[ii]];; aa[[ii]] == aa[[jj]];; aa[[jj]] == tteemmpp;; //// SSwwaapp aa[[ii]] aanndd aa[[jj]] iinntt oollddVVaalluuee == aa[[ii]];; aa[[ii]] == aa[[jj]];; aa[[jj]] == oollddVVaalluuee;;
  • 39. TThhee LLeennggtthh ooff VVaarriiaabbllee NNaammeess  HHooww lloonngg ccoouulldd bbee tthhee nnaammee ooff aa vvaarriiaabbllee?? DDeeppeennddss oonn tthhee vvaarriiaabbllee ssccooppee aanndd lliiffeettiimmee MMoorree ""ffaammoouuss"" vvaarriiaabblleess sshhoouulldd hhaavvee lloonnggeerr aanndd mmoorree sseellff--eexxppllaaiinniinngg nnaammee AAcccceeppttaabbllee nnaammiinngg eexxaammpplleess:: UUnnaacccceeppttaabbllee nnaammiinngg eexxaammpplleess:: 39 ffoorr ((iinntt ii==00;; ii<<uusseerrss..LLeennggtthh;; ii++++)) iiff ((ii %% 22 ==== 00)) ssuumm ++== uusseerrss[[ii]]..WWeeiigghhtt;; ccllaassss SSttuuddeenntt {{ ppuubblliicc ssttrriinngg llaassttNNaammee;; }} ccllaassss SSttuuddeenntt {{ pprriivvaattee iinntt ii;; }} ccllaassss PPaaiirrOOffLLiissttss {{ ppuubblliicc iinntt CCoouunntt {{ ggeett;; sseett;; }} }}
  • 40. PPrreeffiixxeess // SSuuffffiixxeess aanndd HHuunnggaarriiaann NNoottaattiioonn  IInn CC## pprreeffiixx // ssuuffffiixx nnoottaattiioonnss aarree nnoott ppooppuullaarr HHuunnggaarriiaann nnoottaattiioonn UUssiinngg pprreeffiixxeess ttoo ddeennoottee tthhee vvaarriiaabbllee ttyyppeess,, ee..gg.. llppccssttrrTTeexxtt,, llppddwwFFllaaggss,, ccbbMMuullttiiBByyttee,, hhWWnndd  TThhee HHuunnggaarriiaann nnoottaattiioonn wwoorrkkss wweellll iinn uunnmmaannaaggeedd llaanngguuaaggeess lliikkee CC++++ DDoo nnoott uussee HHuunnggaarriiaann nnoottaattiioonn iinn CC## aanndd ..NNEETT DDoonn''tt uussee pprreeffiixxeess // ssuuffffiixxeess ttoo ddeennoottee tthhee vvaarriiaabbllee ddaattaa ttyyppee 40
  • 41. NNaammiinngg PPrrooppeerrttiieess  NNaammee pprrooppeerrttiieess iinn CC## uussiinngg aa nnoouunn,, nnoouunn pphhrraassee,, oorr aann aaddjjeeccttiivvee  UUssee PPaassccaall CCaassee  EExxaammpplleess::  IInnccoorrrreecctt eexxaammpplleess:: 41 ppuubblliicc iinntt LLeennggtthh {{ …… }} ppuubblliicc CCoolloorr BBaacckkggrroouunnddCCoolloorr {{ …… }} ppuubblliicc CCaacchheeMMooddee CCaacchheeMMooddee {{ …… }} ppuubblliicc bbooooll LLooaaddeedd {{ …… }} ppuubblliicc iinntt LLooaadd {{ …… }} ppuubblliicc CCoolloorr bbaacckkggrroouunnddCCoolloorr {{ …… }} ppuubblliicc bbooooll FFoonntt {{ …… }}
  • 42. NNaammiinngg CCoonnssttaannttss  UUssee CCAAPPIITTAALL__LLEETTTTEERRSS ffoorr ccoonnsstt ffiieellddss aanndd PPaassccaallCCaassee ffoorr rreeaaddoonnllyy ffiieellddss  UUssee mmeeaanniinnggffuull nnaammeess tthhaatt ddeessccrriibbee tthheeiirr vvaalluuee  EExxaammpplleess::  IInnccoorrrreecctt eexxaammpplleess:: 42 pprriivvaattee ccoonnsstt iinntt RREEAADD__BBUUFFFFEERR__SSIIZZEE == 88119922;; ppuubblliicc ssttaattiicc rreeaaddoonnllyy PPaaggeeSSiizzee DDeeffaauullttPPaaggeeSSiizzee == PPaaggeeSSiizzee..AA44;; pprriivvaattee ccoonnsstt iinntt FFOONNTT__SSIIZZEE__IINN__PPOOIINNTTSS == 1166;; ppuubblliicc ccoonnsstt iinntt MMAAXX == 551122;; //// MMaaxx wwhhaatt?? AApppplleess oorr OOrraannggeess?? ppuubblliicc ccoonnsstt iinntt BBUUFF225566 == 225566;; //// WWhhaatt aabboouutt BBUUFF225566 == 11002244?? ppuubblliicc ccoonnsstt ssttrriinngg GGRREEAATTEERR == ""&&ggtt;;"";; //// GGRREEAATTEERR__HHTTMMLL__EENNTTIITTYY ppuubblliicc ccoonnsstt iinntt FFOONNTT__SSIIZZEE == 1166;; //// 1166pptt oorr 1166ppxx?? ppuubblliicc ccoonnsstt PPaaggeeSSiizzee PPAAGGEE == PPaaggeeSSiizzee..AA44;; //// MMaayybbee PPAAGGEE__SSIIZZEE??
  • 43. NNaammeess ttoo AAvvooiidd DDoonn''tt uussee nnuummbbeerrss iinn tthhee iiddeennttiiffiieerrss nnaammeess EExxaammppllee:: PPrriinnttRReeppoorrtt aanndd PPrriinnttRReeppoorrtt22 WWhhaatt iiss tthhee ddiiffffeerreennccee?? EExxcceeppttiioonnss:: WWhheenn tthhee nnuummbbeerr iiss ppaarrtt ooff tthhee nnaammee iittsseellff,, ee..gg.. RRSS223322PPoorrtt,, CCOOMM33,, WWiinn3322AAPPIIFFuunnccttiioonnss  DDoonn''tt uussee CCyyrriilllliicc oorr lleetttteerrss ffrroomm ootthheerr aallpphhaabbeettss EE..gg.. FFiinnddССттууддееннттBByyNNaammee,, CCaallccΩΩ22PPrrootteeiinn 43
  • 44. NNeevveerr GGiivvee aa MMiisslleeaaddiinngg NNaammee!! GGiivviinngg aa mmiisslleeaaddiinngg nnaammee iiss wwoorrssee tthhaann ggiivviinngg aa ttoottaallllyy uunncclleeaarr nnaammee  EExxaammppllee:: CCoonnssiiddeerr aa mmeetthhoodd tthhaatt ccaallccuullaatteess tthhee ssuumm ooff aallll eelleemmeennttss iinn aann aarrrraayy IIttss sshhoouulldd bbee nnaammeedd SSuumm oorr CCaallccuullaatteeSSuumm WWhhaatt aabboouutt nnaammiinngg iitt CCaallccuullaatteeAAvveerraaggee oorr MMaaxx oorr CChheecckkFFoorrNNeeggaattiivveeNNuummbbeerr?? IItt''ss ccrraazzyy,, bbuutt bbee ccaarreeffuull wwiitthh ""ccooppyy--ppaassttee"" 44
  • 45. DDoonn''tt BBeelliieevvee MMiiccrroossoofftt!! MMiiccrroossoofftt ssoommeettiimmeess uussee rreeaallllyy bbaadd nnaammiinngg iinn tthheeiirr AAPPII lliibbrraarriieess ((eessppeecciiaallllyy iinn WWiinn3322 AAPPII)) EExxaammpplleess:: NNaavviiggaattee aanndd NNaavviiggaattee22 mmeetthhooddss iinn IInntteerrnneett EExxpplloorreerr AAccttiivveeXX ccoonnttrrooll ((MMSSHHTTMMLL..DDLLLL)) WWNNeettAAddddCCoonnnneeccttiioonn33 mmeetthhoodd iinn MMuullttiippllee PPrroovviiddeerr RRoouutteerr NNeettwwoorrkkiinngg AAPPII ((MMPPRR..DDLLLL)) LLPPWWKKSSTTAA__UUSSEERR__IINNFFOO__11 ssttrruuccttuurree iinn WWiinn3322 DDoonn''tt ffoollllooww tthheemm bblliinnddllyy,, jjuusstt tthhiinnkk aa bbiitt!! 45
  • 46. WWhhaatt''ss WWrroonngg wwiitthh TThhiiss CCooddee?? 46 FFiilleeSSttrreeaamm ffss == nneeww FFiilleeSSttrreeaamm((FFIILLEE__NNAAMMEE,, FFiilleeMMooddee..CCrreeaatteeNNeeww));; //// CCrreeaattee tthhee wwrriitteerr ffoorr ddaattaa.. BBiinnaarryyWWrriitteerr ww == nneeww BBiinnaarryyWWrriitteerr((ffss));; //// WWrriittee ddaattaa ttoo TTeesstt..ddaattaa.. ffoorr ((iinntt ii == 00;; ii << 1111;; ii++++)) {{ ww..WWrriittee(( ((iinntt)) ii));; }} ww..CClloossee(());; ffss..CClloossee(());; //// CCrreeaattee tthhee rreeaaddeerr ffoorr ddaattaa.. ffss == nneeww FFiilleeSSttrreeaamm((FFIILLEE__NNAAMMEE,, FFiilleeMMooddee..OOppeenn,, FFiilleeAAcccceessss..RReeaadd));; BBiinnaarryyRReeaaddeerr rr == nneeww BBiinnaarryyRReeaaddeerr((ffss));; //// RReeaadd ddaattaa ffrroomm TTeesstt..ddaattaa.. ffoorr ((iinntt ii == 00;; ii << 1111;; ii++++)) {{ CCoonnssoollee..WWrriitteeLLiinnee((rr..RReeaaddIInntt3322(())));; }} rr..CClloossee(());; ffss..CClloossee(());; Source: http://msdn.microsoft.com/en-us/library/36b93480.aspx
  • 48. WWhhyy CCooddee NNeeeeddss FFoorrmmaattttiinngg?? 48 ppuubblliicc ccoonnsstt ssttrriinngg FFIILLEE__NNAAMMEE ==""eexxaammppllee..bbiinn"" ;; ssttaattiicc vvooiidd MMaaiinn (( )){{ FFiilleeSSttrreeaamm ffss== nneeww FFiilleeSSttrreeaamm((FFIILLEE__NNAAMMEE,,FFiilleeMMooddee .. CCrreeaatteeNNeeww)) //// CCrreeaattee tthhee wwrriitteerr ffoorr ddaattaa .. ;;BBiinnaarryyWWrriitteerr ww==nneeww BBiinnaarryyWWrriitteerr (( ffss ));;//// WWrriittee ddaattaa ttoo TTeesstt..ddaattaa.. ffoorr(( iinntt ii==00;;ii<<1111;;ii++++)){{ww..WWrriittee((((iinntt))ii));;}}ww ..CClloossee(());; ffss .. CClloossee (( )) //// CCrreeaattee tthhee rreeaaddeerr ffoorr ddaattaa.. ;;ffss==nneeww FFiilleeSSttrreeaamm((FFIILLEE__NNAAMMEE,,FFiilleeMMooddee.. OOppeenn ,, FFiilleeAAcccceessss..RReeaadd)) ;;BBiinnaarryyRReeaaddeerr rr == nneeww BBiinnaarryyRReeaaddeerr((ffss));; //// RReeaadd ddaattaa ffrroomm TTeesstt..ddaattaa.. ffoorr ((iinntt ii == 00;; ii << 1111;; ii++++)){{ CCoonnssoollee ..WWrriitteeLLiinnee ((rr..RReeaaddIInntt3322 (()))) ;;}}rr .. CClloossee (( ));; ffss .. CClloossee (( )) ;; }}
  • 49. CCooddee FFoorrmmaattttiinngg FFuunnddaammeennttaallss GGoooodd ffoorrmmaattttiinngg ggooaallss TToo iimmpprroovvee ccooddee rreeaaddaabbiilliittyy TToo iimmpprroovvee ccooddee mmaaiinnttaaiinnaabbiilliittyy  FFuunnddaammeennttaall pprriinncciippllee ooff ccooddee ffoorrmmaattttiinngg:: AAnnyy ffoorrmmaattttiinngg ssttyyllee tthhaatt ffoolllloowwss tthhee aabboovvee pprriinncciippllee iiss ggoooodd AAnnyy ootthheerr ffoorrmmaattttiinngg iiss nnoott ggoooodd 49 TThhee ffoorrmmaattiinngg ooff tthhee ssoouurrccee ccooddee sshhoouulldd ddiisscclloossee iittss llooggiiccaall ssttrruuccttuurree..
  • 50. FFoorrmmaattttiinngg BBlloocckkss iinn CC##  PPuutt {{ aanndd }} aalloonnee oonn aa lliinnee uunnddeerr tthhee ccoorrrreessppoonnddiinngg ppaarreenntt bblloocckk  IInnddeenntt tthhee bblloocckk ccoonntteennttss bbyy aa ssiinnggllee [[TTaabb]] DDoonn''tt iinnddeenntt wwiitthh ssppaacceess  EExxaammppllee:: 50 iiff (( ssoommee ccoonnddiittiioonn )) {{ //// BBlloocckk ccoonntteennttss iinnddeenntteedd bbyy aa ssiinnggllee [[TTaabb]] //// DDoonn''tt uussee ssppaacceess ffoorr iinnddeennttaattiioonn }}
  • 51. MMeetthhooddss IInnddeennttaattiioonn MMeetthhooddss sshhoouulldd bbee iinnddeenntteedd wwiitthh aa ssiinnggllee [[TTaabb]] ffrroomm tthhee ccllaassss bbooddyy MMeetthhooddss bbooddyy sshhoouulldd bbee iinnddeenntteedd wwiitthh aa ssiinnggllee [[TTaabb]] aass wweellll 51 ppuubblliicc ccllaassss IInnddeennttaattiioonnEExxaammppllee {{ pprriivvaattee iinntt ZZeerroo(()) {{ rreettuurrnn 00;; }} }} TThhee eennttiirree mmeetthhoodd iiss iinnddeenntteedd wwiitthh aa ssiinnggllee [[TTaabb]] MMeetthhoodd bbooddyy iiss aallssoo iinnddeenntteedd
  • 52. Brackets iinn MMeetthhooddss DDeeccllaarraattiioonn  BBrraacckkeettss iinn tthhee mmeetthhoodd ddeeccllaarraattiioonn sshhoouulldd bbee ffoorrmmaatttteedd aass ffoolllloowwss:: DDoonn''tt uussee ssppaacceess bbeettwweeeenn tthhee bbrraacckkeettss::  TThhee ssaammee aapppplliieess ffoorr iiff--ccoonnddiittiioonnss aanndd ffoorr-- llooooppss:: 52 pprriivvaattee ssttaattiicc uulloonngg CCaallccFFaaccttoorriiaall((uuiinntt nnuumm)) pprriivvaattee ssttaattiicc uulloonngg CCaallccFFaaccttoorriiaall (( uuiinntt nnuumm )) pprriivvaattee ssttaattiicc uulloonngg CCaallccFFaaccttoorriiaall ((uuiinntt nnuumm)) iiff ((ccoonnddiittiioonn)) ……
  • 53. SSeeppaarraattiinngg PPaarraammeetteerrss  SSeeppaarraattee mmeetthhoodd ppaarraammeetteerrss bbyy ccoommmmaa ffoolllloowweedd bbyy aa ssppaaccee DDoonn''tt ppuutt ccoommmmaa bbeeffoorree tthhee ssppaaccee EExxaammpplleess:: RReeggiisstteerrUUsseerr((""nnaakkoovv"",, ""ss33ccrr33tt!!pp@@ssssww00rrdd""));; IInnccoorrrreecctt eexxaammpplleess:: 53 pprriivvaattee vvooiidd RReeggiisstteerrUUsseerr((ssttrriinngg uusseerrnnaammee,, ssttrriinngg ppaasssswwoorrdd)) pprriivvaattee vvooiidd RReeggiisstteerrUUsseerr((ssttrriinngg uusseerrnnaammee,,ssttrriinngg ppaasssswwoorrdd)) pprriivvaattee vvooiidd RReeggiisstteerrUUsseerr((ssttrriinngg uusseerrnnaammee ,,ssttrriinngg ppaasssswwoorrdd)) pprriivvaattee vvooiidd RReeggiisstteerrUUsseerr((ssttrriinngg uusseerrnnaammee ,, ssttrriinngg ppaasssswwoorrdd))
  • 54. EEmmppttyy LLiinneess bbeettwweeeenn MMeetthhooddss  UUssee eemmppttyy lliinnee ffoorr sseeppaarraattiioonn bbeettwweeeenn mmeetthhooddss:: 54 ppuubblliicc ccllaassss FFaaccttoorriiaall {{ pprriivvaattee ssttaattiicc uulloonngg CCaallccFFaaccttoorriiaall((uuiinntt nnuumm)) {{ AAllwwaayyss uussee {{ aanndd }} aafftteerr iiff ((tthheerree iiss nnoo ssppaaccee ttoo ddoo iitt iiff ((nnuumm ==== 00)) rreettuurrnn 11;; eellssee rreettuurrnn nnuumm ** CCaallccFFaaccttoorriiaall((nnuumm -- 11));; }} EEmmppttyy lliinnee ssttaattiicc vvooiidd MMaaiinn(()) {{ uulloonngg ffaaccttoorriiaall == CCaallccFFaaccttoorriiaall((55));; CCoonnssoollee..WWrriitteeLLiinnee((ffaaccttoorriiaall));; }} }} hheerree))
  • 55. EEmmppttyy LLiinneess iinn MMeetthhoodd BBooddyy  UUssee aann eemmppttyy lliinnee ttoo sseeppaarraattee llooggiiccaallllyy rreellaatteedd sseeqquueenncceess ooff lliinneess:: 55 pprriivvaattee LLiisstt<<RReeppoorrtt>> PPrreeppaarreeRReeppoorrttss(()) {{ LLiisstt<<RReeppoorrtt>> rreeppoorrttss == nneeww LLiisstt<<RReeppoorrtt>>(());; //// CCrreeaattee iinnccoommeess rreeppoorrttss RReeppoorrtt iinnccoommeessSSaalleessRReeppoorrtt == PPrreeppaarreeIInnccoommeessSSaalleessRReeppoorrtt(());; rreeppoorrttss..AAdddd((iinnccoommeessSSaalleessRReeppoorrtt));; RReeppoorrtt iinnccoommeessSSuuppppoorrttRReeppoorrtt == PPrreeppaarreeIInnccoommeessSSuuppppoorrttRReeppoorrtt(());; rreeppoorrttss..AAdddd((iinnccoommeessSSuuppppoorrttRReeppoorrtt));; //// CCrreeaattee eexxppeennsseess rreeppoorrttss RReeppoorrtt eexxppeennsseessPPaayyrroollllRReeppoorrtt == PPrreeppaarreeEExxppeennsseessPPaayyrroollllRReeppoorrtt(());; rreeppoorrttss..AAdddd((eexxppeennsseessPPaayyrroollllRReeppoorrtt));; RReeppoorrtt eexxppeennsseessMMaarrkkeettiinnggRReeppoorrtt == PPrreeppaarreeEExxppeennsseessMMaarrkkeettiinnggRReeppoorrtt(());; rreeppoorrttss..AAdddd((eexxppeennsseessMMaarrkkeettiinnggRReeppoorrtt));; rreettuurrnn rreeppoorrttss;; }} EEmmppttyy lliinnee EEmmppttyy lliinnee EEmmppttyy lliinnee
  • 56. MMiissppllaacceedd EEmmppttyy LLiinneess –– EExxaammppllee 56 ppuubblliicc ssttaattiicc vvooiidd PPrriinnttLLiisstt((LLiisstt<<iinntt>> iinnttss)) {{ CCoonnssoollee..WWrriittee((""{{ ""));; ffoorreeaacchh ((iinntt iitteemm iinn iinnttss)) {{ CCoonnssoollee..WWrriittee((iitteemm));; CCoonnssoollee..WWrriittee(("" ""));; }} CCoonnssoollee..WWrriitteeLLiinnee((""}}""));; }} ssttaattiicc vvooiidd MMaaiinn(()) {{ //// ...... }}
  • 57. FFoorrmmaattttiinngg TTyyppeess  FFoorrmmaattttiinngg ccllaasssseess // ssttrruuccttuurreess // iinntteerrffaacceess // eennuummeerraattiioonnss IInnddeenntt tthhee ccllaassss bbooddyy wwiitthh aa ssiinnggllee [[TTaabb]] UUssee tthhee ffoolllloowwiinngg oorrddeerr ooff ddeeffiinniittiioonnss:: CCoonnssttaannttss,, ddeelleeggaatteess,, iinnnneerr ttyyppeess,, ffiieellddss,, ccoonnssttrruuccttoorrss,, pprrooppeerrttiieess,, mmeetthhooddss SSttaattiicc mmeemmbbeerrss,, ppuubblliicc mmeemmbbeerrss,, pprrootteecctteedd mmeemmbbeerrss,, iinntteerrnnaall mmeemmbbeerrss,, pprriivvaattee mmeemmbbeerrss TThhee aabboovvee oorrddeerr ooff ddeeffiinniittiioonnss iiss nnoott tthhee oonnllyy ppoossssiibbllee ccoorrrreecctt oonnee 57
  • 58. FFoorrmmaattttiinngg TTyyppeess –– EExxaammppllee 58 ppuubblliicc ccllaassss DDoogg {{ //// SSttaattiicc vvaarriiaabblleess ppuubblliicc ccoonnsstt ssttrriinngg SSPPEECCIIEESS == ""CCaanniiss LLuuppuuss FFaammiilliiaarriiss"";; //// IInnssttaannccee vvaarriiaabblleess pprriivvaattee iinntt aaggee;; //// CCoonnssttrruuccttoorrss ppuubblliicc DDoogg((ssttrriinngg nnaammee,, iinntt aaggee)) {{ tthhiiss..NNaammee == nnaammee;; tthhiiss..aaggee == aaggee;; }} (continues on the next slide)
  • 59. FFoorrmmaattttiinngg TTyyppeess –– EExxaammppllee ((22)) 59 //// PPrrooppeerrttiieess ppuubblliicc ssttrriinngg NNaammee {{ ggeett;; sseett;; }} //// MMeetthhooddss ppuubblliicc vvooiidd BBrreeaatthh(()) {{ //// TTOODDOO:: bbrreeaatthhiinngg pprroocceessss }} ppuubblliicc vvooiidd BBaarrkk(()) {{ CCoonnssoollee..WWrriitteeLLiinnee((""wwooww--wwooww""));; }} }}
  • 60. FFoorrmmaattttiinngg CCoonnddiittiioonnaall SSttaatteemmeennttss aanndd LLooooppss  FFoorrmmaattttiinngg ccoonnddiittiioonnaall ssttaatteemmeennttss aanndd llooooppss AAllwwaayyss uussee {{ }} bblloocckk aafftteerr iiff // ffoorr // wwhhiillee,, eevveenn wwhheenn aa ssiinnggllee ooppeerraattoorr ffoolllloowwss IInnddeenntt tthhee bblloocckk bbooddyy aafftteerr iiff // ffoorr // wwhhiillee NNeevveerr ppuutt tthhee bblloocckk aafftteerr iiff // ffoorr // wwhhiillee oonn tthhee ssaammee lliinnee!! AAllwwaayyss ppuutt tthhee {{ oonn tthhee nneexxtt lliinnee NNeevveerr iinnddeenntt wwiitthh mmoorree tthhaann oonnee [[TTaabb]] 60
  • 61. CCoonnddiittiioonnaall SSttaatteemmeennttss aanndd LLooooppss FFoorrmmaattttiinngg –– EExxaammpplleess  EExxaammppllee::  IInnccoorrrreecctt eexxaammpplleess:: 61 ffoorr ((iinntt ii==00;; ii<<1100;; ii++++)) {{ CCoonnssoollee..WWrriitteeLLiinnee((""ii=={{00}}"",, ii));; }} ffoorr ((iinntt ii==00;; ii<<1100;; ii++++)) CCoonnssoollee..WWrriitteeLLiinnee((""ii=={{00}}"",, ii));; ffoorr ((iinntt ii==00;; ii<<1100;; ii++++)) CCoonnssoollee..WWrriitteeLLiinnee((""ii=={{00}}"",, ii));; ffoorr ((iinntt ii==00;; ii<<1100;; ii++++)) {{ CCoonnssoollee..WWrriitteeLLiinnee((""ii=={{00}}"",, ii));; }}
  • 62. BBrreeaakkiinngg LLoonngg LLiinneess  BBrreeaakk lloonngg lliinneess aafftteerr ppuunnccttuuaattiioonn  IInnddeenntt tthhee sseeccoonndd lliinnee bbyy ssiinnggllee [[TTaabb]]  DDoo nnoott aaddddiittiioonnaallllyy iinnddeenntt tthhee tthhiirrdd lliinnee  EExxaammpplleess:: 62 iiff ((mmaattrriixx[[xx,, yy]] ==== 00 |||| mmaattrriixx[[xx--11,, yy]] ==== 00 |||| mmaattrriixx[[xx++11,, yy]] ==== 00 |||| mmaattrriixx[[xx,, yy--11]] ==== 00 |||| mmaattrriixx[[xx,, yy++11]] ==== 00)) {{ …… DDiiccttiioonnaarryyEEnnttrryy<<KK,, VV>> nneewwEEnnttrryy == nneeww DDiiccttiioonnaarryyEEnnttrryy<<KK,, VV>>(( oollddEEnnttrryy..KKeeyy,, oollddEEnnttrryy..VVaalluuee));;
  • 63. IInnccoorrrreecctt WWaayyss TToo BBrreeaakk LLoonngg LLiinneess 63 iiff ((mmaattrriixx[[xx,, yy]] ==== 00 |||| mmaattrriixx[[xx--11,, yy]] ==== 00 |||| mmaattrriixx[[xx++11,, yy]] ==== 00 |||| mmaattrriixx[[xx,, yy--11]] ==== 00 |||| mmaattrriixx[[xx,, yy++11]] ==== 00)) {{ …… iiff ((mmaattrriixx[[xx,, yy]] ==== 00 |||| mmaattrriixx[[xx--11,, yy]] ==== 00 |||| mmaattrriixx[[xx++11,, yy]] ==== 00 |||| mmaattrriixx[[xx,, yy--11]] ==== 00 |||| mmaattrriixx[[xx,, yy++11]] ==== 00)) {{ …… DDiiccttiioonnaarryyEEnnttrryy<<KK,, VV>> nneewwEEnnttrryy == nneeww DDiiccttiioonnaarryyEEnnttrryy<<KK,, VV>>((oollddEEnnttrryy ..KKeeyy,, oollddEEnnttrryy..VVaalluuee));;
  • 64. AAlliiggnnmmeennttss AAllll ttyyppeess ooff aalliiggnnmmeennttss aarree ccoonnssiiddeerreedd hhaarrmmffuull AAlliiggnnmmeennttss aarree hhaarrdd--ttoo--mmaaiinnttaaiinn!!  IInnccoorrrreecctt eexxaammpplleess:: 64 DDaatteeTTiimmee ddaattee == DDaatteeTTiimmee..NNooww..DDaattee;; iinntt ccoouunntt == 00;; SSttuuddeenntt ssttuuddeenntt == nneeww SSttrruuddeenntt(());; LLiisstt<<SSttuuddeenntt>> ssttuuddeennttss == nneeww LLiisstt<<SSttuuddeenntt>>(());; mmaattrriixx[[xx,, yy]] ==== 00;; mmaattrriixx[[xx ++ 11,, yy ++ 11]] ==== 00;; mmaattrriixx[[22 ** xx ++ yy,, 22 ** yy ++ xx]] ==== 00;; mmaattrriixx[[xx ** yy,, xx ** yy]] ==== 00;;
  • 65. HHiigghh--QQuuaalliittyy CCllaasssseess HHooww ttoo DDeessiiggnn HHiigghh--QQuuaalliittyy CCllaasssseess?? AAbbssttrraaccttiioonn,, CCoohheessiioonn aanndd CCoouupplliinngg
  • 66. High-QQuuaalliittyy CCllaasssseess:: AAbbssttrraaccttiioonn  PPrreesseenntt aa ccoonnssiisstteenntt lleevveell ooff aabbssttrraaccttiioonn iinn tthhee ccllaassss ccoonnttrraacctt ((ppuubblliiccllyy vviissiibbllee mmeemmbbeerrss)) WWhhaatt aabbssttrraaccttiioonn tthhee ccllaassss iiss iimmpplleemmeennttiinngg?? DDooeess iitt rreepprreesseenntt oonnllyy oonnee tthhiinngg?? DDooeess tthhee ccllaassss nnaammee wweellll ddeessccrriibbee iittss ppuurrppoossee?? DDooeess tthhee ccllaassss ddeeffiinnee cclleeaarr aanndd eeaassyy ttoo uunnddeerrssttaanndd ppuubblliicc iinntteerrffaaccee?? DDooeess tthhee ccllaassss hhiiddee aallll iittss iimmpplleemmeennttaattiioonn ddeettaaiillss?? 66
  • 67. GGoooodd AAbbssttrraaccttiioonn –– EExxaammppllee 67 ppuubblliicc ccllaassss FFoonntt {{ ppuubblliicc ssttrriinngg NNaammee {{ ggeett;; sseett;; }} ppuubblliicc ffllooaatt SSiizzeeIInnPPooiinnttss {{ ggeett;; sseett;; }} ppuubblliicc FFoonnttSSttyyllee SSttyyllee {{ ggeett;; sseett;; }} ppuubblliicc FFoonntt((ssttrriinngg nnaammee,, ffllooaatt ssiizzeeIInnPPooiinnttss,, FFoonnttSSttyyllee ssttyyllee)) {{ tthhiiss..NNaammee == nnaammee;; tthhiiss..SSiizzeeIInnPPooiinnttss == ssiizzeeIInnPPooiinnttss;; tthhiiss..SSttyyllee == ssttyyllee;; }} ppuubblliicc vvooiidd DDrraawwSSttrriinngg((DDrraawwiinnggSSuurrffaaccee ssuurrffaaccee,, ssttrriinngg ssttrr,, iinntt xx,, iinntt yy)) {{ ...... }} ppuubblliicc SSiizzee MMeeaassuurreeSSttrriinngg((ssttrriinngg ssttrr)) {{ ...... }} }}
  • 68. BBaadd AAbbssttrraaccttiioonn –– EExxaammppllee 68 ppuubblliicc ccllaassss PPrrooggrraamm {{ ppuubblliicc ssttrriinngg ttiittllee;; ppuubblliicc iinntt ssiizzee;; ppuubblliicc CCoolloorr ccoolloorr;; ppuubblliicc vvooiidd IInniittiiaalliizzeeCCoommmmaannddSSttaacckk(());; ppuubblliicc vvooiidd PPuusshhCCoommmmaanndd((CCoommmmaanndd ccoommmmaanndd));; ppuubblliicc CCoommmmaanndd PPooppCCoommmmaanndd(());; ppuubblliicc vvooiidd SShhuuttddoowwnnCCoommmmaannddSSttaacckk(());; ppuubblliicc vvooiidd IInniittiiaalliizzeeRReeppoorrttFFoorrmmaattttiinngg(());; ppuubblliicc vvooiidd FFoorrmmaattRReeppoorrtt((RReeppoorrtt rreeppoorrtt));; ppuubblliicc vvooiidd PPrriinnttRReeppoorrtt((RReeppoorrtt rreeppoorrtt));; ppuubblliicc vvooiidd IInniittiiaalliizzeeGGlloobbaallDDaattaa(());; ppuubblliicc vvooiidd SShhuuttddoowwnnGGlloobbaallDDaattaa(());; }} DDooeess tthhiiss ccllaassss rreeaallllyy rreepprreesseenntt aa ""pprrooggrraamm""?? IIss tthhiiss nnaammee ggoooodd?? DDooeess tthhiiss ccllaassss rreeaallllyy hhaavvee aa ssiinnggllee ppuurrppoossee??
  • 69. EEssttaabblliisshhiinngg GGoooodd AAbbssttrraaccttiioonn  DDeeffiinnee ooppeerraattiioonnss aalloonngg wwiitthh tthheeiirr ooppppoossiitteess EExxaammppllee::  OOppeenn(()) aanndd CClloossee(()) MMoovvee uunnrreellaatteedd mmeetthhooddss iinn aannootthheerr ccllaassss EExxaammppllee::  IInn ccllaassss EEmmppllooyyeeee iiff yyoouu nneeeedd ttoo ccaallccuullaattee AAggee bbyy ggiivveenn DDaatteeOOffBBiirrtthh  CCrreeaattee ssttaattiicc mmeetthhoodd CCaallccAAggee iinn aa sseeppaarraattee ccllaassss DDaatteeUUttiillss 69
  • 70. EEssttaabblliisshhiinngg GGoooodd AAbbssttrraaccttiioonn ((22))  BBeewwaarree ooff bbrreeaakkiinngg tthhee iinntteerrffaaccee aabbssttrraaccttiioonn dduuee ttoo eevvoolluuttiioonn DDoonn''tt aadddd ppuubblliicc mmeemmbbeerrss iinnccoonnssiisstteenntt wwiitthh ccllaassss aabbssttrraaccttiioonn EExxaammppllee:: iinn ccllaassss ccaalllleedd EEmmppllooyyeeee aatt ssoommee ttiimmee wwee aadddd mmeetthhoodd ffoorr aacccceessssiinngg tthhee DDBB wwiitthh SSQQLL 70 ccllaassss EEmmppllooyyeeee {{ ppuubblliicc ssttrriinngg ffiirrssttNNaammee;; ppuubblliicc ssttrriinngg llaassttNNaammee;; …… ppuubblliicc SSqqllCCoommmmaanndd FFiinnddBByyPPrriimmaarryyKKeeyySSqqllCCoommmmaanndd((iinntt iidd));; }}
  • 71. EEnnccaappssuullaattiioonn MMiinniimmiizzee tthhee vviissiibbiilliittyy ooff ccllaasssseess aanndd mmeemmbbeerrss SSttaarrtt ffrroomm pprriivvaattee aanndd mmoovvee ttoo iinntteerrnnaall,, pprrootteecctteedd aanndd ppuubblliicc iiff rreeqquuiirreedd  CCllaasssseess sshhoouulldd hhiiddee tthheeiirr iimmpplleemmeennttaattiioonn ddeettaaiillss AAnnyytthhiinngg wwhhiicchh iiss nnoott ppaarrtt ooff tthhee ccllaassss iinntteerrffaaccee sshhoouulldd bbee ddeeccllaarreedd pprriivvaattee CCllaasssseess wwiitthh ggoooodd eennccaappssuullaatteedd ccllaasssseess aarree:: lleessss ccoommpplleexx,, eeaassiieerr ttoo mmaaiinnttaaiinn,, mmoorree lloooosseellyy ccoouupplleedd  NNeevveerr ddeeccllaarree ffiieellddss ppuubblliicc ((eexxcceepptt ccoonnssttaannttss)) UUssee mmeetthhooddss oorr pprrooppeerrttiieess ttoo aacccceessss ffiieellddss 71
  • 72. EEnnccaappssuullaattiioonn ((22)) DDoonn''tt vviioollaattee eennccaappssuullaattiioonn sseemmaannttiiccaallllyy!! DDoonn''tt rreellyy oonn nnoonn--ddooccuummeenntteedd iinntteerrnnaall bbeehhaavviioorr oorr ssiiddee eeffffeeccttss WWrroonngg eexxaammppllee:: SSkkiipp ccaalllliinngg CCoonnnneeccttTTooDDBB(()) bbeeccaauussee yyoouu jjuusstt ccaalllleedd FFiinnddEEmmppllooyyeeeeBByyIIdd(()) wwhhiicchh sshhoouulldd ooppeenn ccoonnnneeccttiioonn AAnnootthheerr wwrroonngg eexxaammppllee:: UUssee SSttrriinngg..EEmmppttyy iinnsstteeaadd ooff TTiittlleess..NNooTTiittllee bbeeccaauussee yyoouu kknnooww bbootthh vvaalluueess aarree tthhee ssaammee 72
  • 73. IInnhheerriittaannccee DDoonn''tt hhiiddee mmeetthhooddss iinn aa ssuubbccllaassss EExxaammppllee:: iiff tthhee ccllaassss TTiimmeerr hhaass pprriivvaattee mmeetthhoodd SSttaarrtt(()),, ddoonn''tt ddeeffiinnee SSttaarrtt(()) iinn AAttoommTTiimmeerr MMoovvee ccoommmmoonn iinntteerrffaacceess,, ddaattaa,, aanndd bbeehhaavviioorr aass hhiigghh aass ppoossssiibbllee iinn tthhee iinnhheerriittaannccee ttrreeee TThhiiss mmaaxxiimmiizzeess tthhee ccooddee rreeuussee  BBee ssuussppiicciioouuss ooff bbaassee ccllaasssseess ooff wwhhiicchh tthheerree iiss oonnllyy oonnee ddeerriivveedd ccllaassss DDoo yyoouu rreeaallllyy nneeeedd tthhiiss aaddddiittiioonnaall lleevveell ooff iinnhheerriittaannccee?? 73
  • 74. IInnhheerriittaannccee ((22))  BBee ssuussppiicciioouuss ooff ccllaasssseess tthhaatt oovveerrrriiddee aa rroouuttiinnee aanndd ddoo nnootthhiinngg iinnssiiddee IIss tthhee oovveerrrriiddddeenn rroouuttiinnee uusseedd ccoorrrreeccttllyy?? AAvvooiidd ddeeeepp iinnhheerriittaannccee ttrreeeess DDoonn''tt ccrreeaattee mmoorree tthhaann 6 lleevveellss ooff iinnhheerriittaannccee AAvvooiidd uussiinngg aa bbaassee ccllaassss’’ss pprrootteecctteedd ddaattaa ffiieellddss iinn aa ddeerriivveedd ccllaassss PPrroovviiddee pprrootteecctteedd aacccceessssoorr mmeetthhooddss oorr pprrooppeerrttiieess iinnsstteeaadd 74
  • 75. IInnhheerriittaannccee ((33))  PPrreeffeerr iinnhheerriittaannccee ttoo eexxtteennssiivvee ttyyppee cchheecckkiinngg::  CCoonnssiiddeerr iinnhheerriittiinngg CCiirrccllee aanndd SSqquuaarree ffrroomm SShhaappee aanndd oovveerrrriiddee tthhee aabbssttrraacctt aaccttiioonn DDrraaww(()) 75 sswwiittcchh ((sshhaappee..TTyyppee)) {{ ccaassee SShhaappee..CCiirrccllee:: sshhaappee..DDrraawwCCiirrccllee(());; bbrreeaakk;; ccaassee SShhaappee..SSqquuaarree:: sshhaappee..DDrraawwSSqquuaarree(());; bbrreeaakk;; ...... }}
  • 76. CCllaassss MMeetthhooddss aanndd DDaattaa KKeeeepp tthhee nnuummbbeerr ooff mmeetthhooddss iinn aa ccllaassss aass ssmmaallll aass ppoossssiibbllee  rreedduuccee ccoommpplleexxiittyy MMiinniimmiizzee ddiirreecctt mmeetthhoodd ccaallllss ttoo ootthheerr ccllaasssseess MMiinniimmiizzee iinnddiirreecctt mmeetthhoodd ccaallllss ttoo ootthheerr ccllaasssseess LLeessss eexxtteerrnnaall mmeetthhoodd ccaallllss ==== lleessss ccoouupplliinngg MMiinniimmiizzee tthhee eexxtteenntt ttoo wwhhiicchh aa ccllaassss ccoollllaabboorraatteess wwiitthh ootthheerr ccllaasssseess RReedduuccee ccoouupplliinngg bbeettwweeeenn ccllaasssseess 76
  • 77. CCllaassss CCoonnssttrruuccttoorrss  IInniittiiaalliizzee aallll mmeemmbbeerr ddaattaa iinn aallll ccoonnssttrruuccttoorrss,, iiff ppoossssiibbllee UUnniinniittiiaalliizzeedd ddaattaa iiss eerrrroorr pprroonnee PPaarrttiiaallllyy iinniittiiaalliizzeedd ddaattaa iiss eevveenn mmoorree eevviill IInnccoorrrreecctt eexxaammppllee:: aassssiiggnn FFiirrssttNNaammee iinn ccllaassss PPeerrssoonn bbuutt lleeaavvee LLaassttNNaammee eemmppttyy  IInniittiiaalliizzee ddaattaa mmeemmbbeerrss iinn tthhee ssaammee oorrddeerr iinn wwhhiicchh tthheeyy aarree ddeeccllaarreedd  PPrreeffeerr ddeeeepp ccooppiieess ttoo sshhaallllooww ccooppiieess ((IICClloonneeaabbllee sshhoouulldd mmaakkee ddeeeepp ccooppyy)) 77
  • 78. UUssee DDeessiiggnn PPaatttteerrnnss UUssee pprriivvaattee ccoonnssttrruuccttoorr ttoo pprroohhiibbiitt ddiirreecctt ccllaassss iinnssttaannttiiaattiioonn UUssee ddeeiiggnn ppaatttteerrnnss ffoorr ccoommmmoonn ddeessiiggnn ssiittuuaattiioonnss CCrreeaattiioonnaall ppaatttteerrnnss lliikkee ssiinngglleettoonn,, ffaaccttoorryy mmeetthhoodd,, aabbssttrraacctt ffaaccttoorryy SSttrruuccttuurraall ppaatttteerrnnss lliikkee aaddaapptteerr,, bbrriiddggee,, ccoommppoossiittee,, ddeeccoorraattoorr,, ffaaççaaddee BBeehhaavviioorraall ppaatttteerrnnss lliikkee ccoommmmaanndd,, iitteerraattoorr,, oobbsseerrvveerr,, ssttrraatteeggyy,, tteemmppllaattee mmeetthhoodd 78
  • 79. TToopp RReeaassoonnss ttoo CCrreeaattee CCllaassss MMooddeell rreeaall--wwoorrlldd oobbjjeeccttss wwiitthh OOOOPP ccllaasssseess MMooddeell aabbssttrraacctt oobbjjeeccttss,, pprroocceesssseess,, eettcc.. RReedduuccee ccoommpplleexxiittyy WWoorrkk aatt hhiigghheerr lleevveell  IIssoollaattee ccoommpplleexxiittyy HHiiddee iitt iinn aa ccllaassss HHiiddee iimmpplleemmeennttaattiioonn ddeettaaiillss  eennccaappssuullaattiioonn  LLiimmiitt eeffffeeccttss ooff cchhaannggeess CChhaannggeess aaffffeecctt oonnllyy tthheeiirr ccllaassss 79
  • 80. Top RReeaassoonnss ttoo CCrreeaattee CCllaassss ((22)) HHiiddee gglloobbaall ddaattaa WWoorrkk tthhrroouugghh mmeetthhooddss GGrroouupp vvaarriiaabblleess tthhaatt aarree uusseedd ttooggeetthheerr MMaakkee cceennttrraall ppooiinnttss ooff ccoonnttrrooll SSiinnggllee ttaasskk sshhoouulldd bbee ddoonnee aatt ssiinnggllee ppllaaccee AAvvooiidd dduupplliiccaattiinngg ccooddee  FFaacciilliittaattee ccooddee rreeuussee UUssee ccllaassss hhiieerraarrcchhiieess aanndd vviirrttuuaall mmeetthhooddss  PPaacckkaaggee rreellaatteedd ooppeerraattiioonnss ttooggeetthheerr 80
  • 81. NNaammeessppaacceess GGrroouupp rreellaatteedd ccllaasssseess ttooggeetthheerr iinn nnaammeessppaacceess  FFoollllooww ccoonnssiisstteenntt nnaammiinngg ccoonnvveennttiioonn 81 nnaammeessppaaccee UUttiillss {{ ccllaassss MMaatthhUUttiillss {{ …… }} ccllaassss SSttrriinnggUUttiillss {{ …… }} ccllaassss DDaatteeUUttiillss {{ …… }} }} nnaammeessppaaccee DDaattaaAAcccceessssLLaayyeerr {{ ccllaassss GGeenneerriiccDDAAOO<<KKeeyy,, EEnnttiittyy>> {{ …… }} ccllaassss EEmmppllooyyeeeeDDAAOO<<iinntt,, EEmmppllooyyeeee>> {{ …… }} ccllaassss AAddddrreessssDDAAOO<<iinntt,, AAddddrreessss>> {{ …… }} }}
  • 82. CCooddee RReeffoorrmmaattttiinngg aanndd IIddeennttiiffiieerrss RReeffaaccttoorriinngg LLiivvee DDeemmoo
  • 83. RReessoouurrcceess  TThhee ""HHiigghh--QQuuaalliittyy PPrrooggrraammmmiinngg CCooddee"" ccoouurrssee aatt TTeelleerriikk AAccaaddeemmyy::  hhttttpp::////ccooddeeccoouurrssee..tteelleerriikk..ccoomm  TThhee bbiibbllee ooff hhiigghh--qquuaalliittyy ssooffttwwaarree ccoonnssttrruuccttiioonn:: 83 CCooddee CCoommpplleettee,, 22nndd eeddiittiioonn,, SStteevvee MMccCCoonnnneellll,, MMiiccrroossoofftt PPrreessss,, 22000044,, IISSBBNN 007733556119967700,, hhttttpp::////wwwwww..cccc22ee..ccoomm
  • 84. HHiigghh--QQuuaalliittyy PPrrooggrraammmmiinngg CCooddee CCoonnssttrruuccttiioonn –– PPaarrtt II QQQQuuuueeeessssttttiiiioooonnnnssss????
  • 85. EExxeerrcciisseess 11.. YYoouu aarree ggiivveenn aa ssoouurrccee ccooddee ttrryyiinngg ttoo ssoollvvee tthhee ""GGaammee 1155"" ppuuzzzzllee.. YYoouurr ttaasskk iiss ttoo iimmpprroovvee tthhee ccooddee qquuaalliittyy wwiitthhoouutt cchhaannggiinngg iittss ffuunnccttiioonnaalliittyy ((oonnllyy bbuugg ffiixxeess aarree aalllloowweedd)):: aa)) RReeffoorrmmaatt tthhee ccooddee ffoolllloowwiinngg tthhee gguuiiddeelliinneess ddeeffiinneedd iinn tthhee ""CCooddee FFoorrmmaattttiinngg"" sseeccttiioonn.. bb)) FFoolllloowwiinngg tthhee gguuiiddeelliinneess iinn tthhee ""NNaammiinngg IIddeennttiiffiieerrss"" sseeccttiioonn rreennaammee tthhee iiddeennttiiffiieerrss iinn tthhee pprrooggrraamm:: ssoolluuttiioonn nnaammee,, pprroojjeecctt nnaammee,, ccllaassss nnaammeess,, mmeetthhoodd nnaammeess,, ppaarraammeetteerr nnaammeess,, vvaarriiaabblleess,, eettcc.. cc)) SSpplliitt tthhee ffuunnccttiioonnaalliittyy iinnttoo ccllaasssseess wwiitthh ggoooodd aabbssttrraaccttiioonn aanndd ssttrroonngg ccoohheessiioonn.. 85