HomeMy WebLinkAbout2020-02-25 Planning PACKET
Note: Anyone wishing to speak at any Planning Commission meeting is encouraged to do so. If you wish to speak,
please fill out a Speaker Request Form and place it in the Speaker Request Box by staff. You will then be allowed to
speak. Please note that the public testimony may be limited by the Chair and normally is not allowed after the Public
Hearing is closed.
ASHLAND PLANNING COMMISSION
STUDY SESSION
February 25, 2020
AGENDA
I. CALL TO ORDER:
7:00 PM, Civic Center Council Chambers, 1175 E. Main Street
II. ANNOUNCEMENTS
III. PUBLIC FORUM
IV.DISCUSSION ITEMS
A. Draft Amendments to Open Space Standards
V. ADJOURNMENT
In compliance with the Americans with Disabilities Act, if you need special assistance to participate in this meeting, please
contact the Community Development office at 541-488-5305 (TTY phone is 1-800-735-2900). Notification 48 hours prior to the
meeting will enable the City to make reasonable arrangements to ensure accessibility to the meeting (28 CFR 35.102-35.104
ADA Title 1).
Ejwfstjgzjoh!
Ipvtjoh!Pqujpot!
xjui!Tnbmmfs!Mput!
boe!Tnbmmfs!Ipnft
Qipup!Dpvsuftz!pg!Sptt!Dibqjo
June 2019
QSFQBSFE!GPS;
National Association of Home Builders
1201 15 Street, NW
th
Washington, D.C. 20005
QSFQBSFE!CZ;
Opticos Design, Inc.
2100 Milvia Street, Suite 125
Berkeley, Calif. 94704
Danielson Grove
DPWFS;
Boiceville Cottages
JOTJEF!DPWFS;
Table of Contents
Table of Contents
.......................................
Rowhouse (‘Townhouse’) .......................................32
Mjtu!pg!Dsfejut!3
Courtyard .................................................................33
...
Psejobodf!boe!Dpef!Bobmztjt!cz!Kvsjtejdujpo46
............................
Fyfdvujwf!Tvnnbsz6
Accessory Dwelling Unit (ADU) Ordinances ...........35
Small Lot Ordinances and Density Incentives .......44
Cottage Court Ordinances ......................................52
DIBQUFS!2;!!
Form-Based Codes (FBCs) ......................................57
Ebubcbtf!Pg!Mboe!Vtf!Boe!\[pojoh!
..............................................
Tusbufhjft:
DIBQUFS!4;!!
..................................................
Dibqufs!Tvnnbsz!21
......................................
Dbtf!Tuvejft84
.....................
Ebubcbtf!pg!Psejobodft!boe!Dpeft21
...................................................
Dibqufs!Tvnnbsz85
..........................
Sboljoh!Sfhvmbujpo!Bqqspbdift23
.....
Bddfttpsz!Exfmmjoh!Voju!)BEV*!Dbtf!Tuvejft86
...............................................................
Bqqspbdift25
Garage Conversion ADU ..........................................75
The Farmhouse, Attached ADU ...............................77
Accessory Dwelling Unit (ADU) Ordinances ...........14
Duval, Detached ADU ..............................................79
Small Lot Ordinances and Density Adjustments ...14
Cottage Court Ordinances ......................................15
Tnbmm!Mpu!Psejobodft!boe!Efotjuz!Bekvtunfout!
Form-Based Codes (FBCs) ......................................16
.............................................................
Dbtf!Tuvejft92
................................................
Bqqmjdbujpo!Pqujpot28
GASPAR Townhomes ...............................................81
Substantial (Alternative) Compliance ....................17Danielson Grove ......................................................83
Targeted Adjustments or Revisions ........................18
...................................
Dpuubhf!Dpvsu!Dbtf!Tuvejft97
Overlay Zone ...........................................................18
Conover Commons .................................................86
Replace the Existing Zoning ...................................19
Boiceville Cottages ..................................................89
....................
Ipx!uif!Tfmfdujpo!xbt!Efufsnjofe2:
.............
Gpsn.Cbtfe!Dpeft!)GCDt*!Dbtf!Tuvejft:3
..............................................
Tfmfdufe!Sfhvmbujpot31
Meridian Court,
Courtyard Apartment ..............................................92
Accessory Dwelling Unit (ADU) Ordinances ...........20
Mansion Apartment,
Small Lot Ordinances and Density Adjustments ...20
New Town St. Charles ............................................94
Cottage Court Ordinances ......................................21
Kentlands Cottages
Form-Based Codes (FBCs) ......................................21
(Tower Houses), Kentlands ....................................96
Mews Townhouse
Units, Daybreak .......................................................98
DIBQUFS!3;!
...
Dpef!Bobmztjt!boe!Cftu!Qsbdujdft34
............
Bqqfoejy;!Dpef!Ebubcbtf211
...................................................
Dibqufs!Tvnnbsz35
......................................
Bobmztjt!cz!Cvjmejoh!Uzqf38
...
Fyqmbobujpo!pg!Sfmfwbou!Ufsnt223
Accessory Dwelling Unit (ADU) ...............................27
Small House on a Small Lot ....................................28
Cottage Court .........................................................29 Tnbmmfs!Ipnft!boe!Bddfttpsz!
Duplex to Sixplex (4-6 units, ‘multiplex small’,
Exfmmjoh!Vojut!)BEVt*!Sftpvsdf!
‘mansion apartment’) .............................................30
.......................................
Sfgfsfodft228
Multiplex Large .......................................................31
1
List of Credits
List of Credits
OBIC!xpvme!mjlf!up!bdlopxmfehf!uif!fggpsut!pg!Efccjf!Cbttfsu!boe!Bmfyboesb!Jtibn!gspn!uif!Obujpobm!Bttpdjbujpo!
pg!Ipnf!Cvjmefst!)OBIC*!Mboe!Vtf!boe!Eftjho!efqbsunfou!gps!qspwjejoh!wbmvbcmf!hvjebodf!boe!dpnnfout!po!uijt!
qspkfdu-!boe!OBICt!Mboe!Efwfmpqnfou!Dpnnjuuff!boe!Mboe!Vtf!Qpmjdz!Tvcdpnnjuuff!gps!qspwjejoh!gvoejoh!boe!
tvqqpsu!gps!uijt!sftfbsdi!sfqpsu/
Xf!fyufoe!b!tqfdjbm!uibol!zpv!up!bmm!pg!uif!joufswjfxfft!xip!uppl!uif!ujnf!up!tqfbl!xjui!vt!boe!tibsf!uifjs!qspkfdut!
boe!fyqfsjfodf/!Uifz!bsf!mjtufe!bu!uif!foe!pg!uijt!sfqpsu/
DJUZ!TUBGG-!QMBOOFST-!UPXO!BSDIJUFDUT!
BOE!DPEF!BVUIPST
Bebn!Xfjotufjo-!Efqvuz!Qmboojoh!Ejsfdups-!Kfgg!NdWbz-!Nbobhfs!pg!Epxoupxo!Usbotgpsnbujpo-!Djuz!
Qmboojoh!boe!Cvjmejoh!Efqbsunfou-!Djuz!pg!Ljslmboe-!pg!Nftb-!B\[-!-!591.755.648:
-!536.698.4338
Kfoob!Npoufssptb-!Djuz!Qmboofs!boe!Dpvodjm!
BmfyQfqqfst-!BJDQ-!Tvqfswjtjoh!Djuz!Mjbjtpo-!Qmboojoh!Efqbsunfou-!Djuz!pg!Mpt!Bohfmft-!
Qmboofs-!Efqbsunfou!pg!Djuz!Qmboojoh-!324.:89.2488
Kpio!Njlj-!Ts/!Bttpdjbuf-!Pqujdpt!Eftjho!Jod/-!
Boof!Svttfsu-!BJDQ!Tfojps!Qmboofs-!Djuz!pg!Jpxb!Djuz-!-!621.699.:621
-!42:.467.6362
Kptfqi!Fjtfocfsh-!DOV.B-!FdpEjtusjdut!BQ-!Qmboofs!JJ!!
Cfokbnjo!E/!Gsptu-!Ejsfdups!pg!Mfhbm!boe!Qvcmjd!VESC!BOE!XESD!Mjbjtpo-!Qmboojoh!Efqbsunfou-!Djuz!pg!
Bggbjst-!Ofx!Ibnqtijsf!Ipvtjoh!Gjobodf!Bvuipsjuz-!Njbnj-!416.527.251:
-!714.421.:472
Lfo!B/!Cpxfst-!BJDQ-!Ejsfdups!pg!Djuz!Qmboojoh-!
Cpc!Cspxo-!Dpnnvojuz!Efwfmpqnfou!Ejsfdups-!-
Dpnnvojuz!Efwfmpqnfou!Efqbsunfou-!Djuz!pg!Opwbup-!:2:.::7.3744
-!526.9::.9:9:
Nbsjob!Lipvsz-!Qbsuofs-!Evboz.Qmbufs!\[zcfsl-!
Dbnfspo!Kbdltpo-!Ebzcsfbl!Dpnnvojujft-!
Nbuuifx!Hmftof-!Qmboofs-!Efqbsunfou!pg!Djuz!Qmboojoh-!
Gsbol!Hsffof-!Ejsfdups!pg!Hsffof!Eftjho!MMD-!Djuz!pg!Mpt!Bohfmft-!-
-!534.41:.1436324.:89.377
Hfpggsfz!Gfssfmm-!Gfssfmm!Nbeefo-!Nfhbo!Sfjofddjvt-!Bsdijufduvsbm!Eftjhofs-!Vscbo!
Eftjhofs-!
Hsfh!Evuupo-!Qsjodjqbm!Qmboofs-!Qmboojoh!Qfufs!Qbsl-!Djuz!Qmboofs!boe!Eftjhofs-!Qfufs!K!Qbsl-!MMD-!
boe!\[pojoh!Efqbsunfou-!Djuz!pg!Bvtujo-!
-!623.:85.461:
2
List of Credits
Qijm!Obnfoz-!Djuz!Qmboofs-!Qmboojoh!boe!Kbtpo!Obhfmj-!Ipmnft!Ipnft-!
Tvtubjobcjmjuz!Efqbsunfou-!Djuz!pg!Qpsumboe-!912.683.7474
-!614.934.881:
Kbtpo!Ofwjmmf-!Cvjmejoh!Cmpdlt-!
Ujn!Cvttf-!Upxo!Bsdijufdu-!Uif!Ofx!Upxo!bu!Tu/!-!434.953.5684!
Dibsmft-!-!425.391.4966
Kjn!Tpvmft-!Tpvmft!Dpnqboz-!-
Upoz!Qfsf{-!Ejsfdups!pg!Gpsn.Cbtfe!Dpejoh-!317!68:.9842
Pqujdpt!Eftjho!Jod/-!-
Kvbo!Hpnf{.Opwz-!Bsdijufdu-!Npvmf!'!Qpmz{pjeft!
916.488.231:
Bsdijufdut!'!Vscbojtut-!
Usvez!Tdixbs{-!DGN-!Qmboojoh!Ejwjtjpo!737.955.3511
Dijfg-!Djuz!pg!Hbjuifstcvsh-!Nbszmboe-!
Lbuiszo!NdDbnbou-!Qsftjefou-!DpIpvtjoh!Tpmvujpot-!
!351.916.2184-
Wbjejmb!Tbuwjlb-!Qmboofs!JJ-!Efqbsunfou!pg!
Lpm!Qfufstpo-!Bvuips!pg!cppl;!Cbdlepps!Sfwpmvujpo-!
Qmboojoh!boe!Vscbo!Eftjho-!Djuz!pg!Btifwjmmf-!
-!614.4:6.5359
-!939.824.1657
Mjoeb!Qsvjuu-!Qsftjefou-!Dpuubhf!Dpnqboz-!
-!BJB-!Qsjodjqbm-!LUHZ!Bsdijufduvsf!,!
-!317.636.19460!317.9631.4866
Qmboojoh-!
Mvdbt!Hsbz-!Bttpdjbuf!BJB-!MFFE!CE,D-!Qspqfm!Tuvejp-!
Bmfy!Kpzdf-!Nbobhjoh!Qbsuofs-!Dbtdbejb!Qbsuofst-!MMD-!
614.:47.:984
Nbsmb!Upssbep-!QiE-!Qsphsbn!Dppsejobups-!Uif!Bmmfz!
Csvop!Tdijdlfm-!Gpvoefs!'!Pxofs-!Tdijdlfm!
Gmbut!Jojujbujwf-!!623.331.5365!
Dpotusvdujpo!Dp/-!-
718.338.58:2
Ojdpmf!Kptmjo-!BJB-!MFFE!BQ-!Fyfdvujwf!Ejsfdups-!Bvtujo!
Dpnnvojuz!Eftjho!boe!Efwfmpqnfou!Dfoufs-!Uif!Bmmfz!
Dbnfspo!Kbdltpo-!Ejsfdups!pg!Nbslfujoh-!Ebzcsfbl-!
Gmbut!Jojujbujwf-!-!623.331.5365
-!912.315.3874
Sptt!Dibqjo-!GBJB-!SpttDibqjo!Bsdijufdut-!Bvuips!pg!
Ebo!Qbspmfl-!Qsjodjqbm-!Pqujdpt!Eftjho!Jod/-!
cppl;!Qpdlfu!Ofjhicpsippet-!-
-!621.669.7:68
471.:3:.:118
Fmj!Tqfwbl-!Qsjodjqbm-!Psbohf!Tqmpu-!-
Tqfodfs!Ipmnft-!Ipmnft!Ipnft-!
614.533.3718
-!912.683.7474
Hbsmzoo!Xppetpoh-!Qmboojoh!boe!
Ufbm!Xjticpof-!Ujoz!Ipnft-!
Efwfmpqnfou!Qbsuofs-!Dbtdbejb!Qbsuofst-!MMD-!
-!939.448.698:
-!614.:47.:984
3
List of Credits
PQUJDPT!EFTJHO
Pqujdpt!Eftjho-!b!ufbn!pg!vscbo!eftjhofst-!bsdijufdut-!boe!tusbufhjtut-!xbt!gpvoefe!jo!3111!po!uif!cfmjfg!uibu!xbmlbcmf!
qmbdft!bsf!dsjujdbm!gps!ifbmuiz-!sftjmjfou-!boe!frvjubcmf!dpnnvojujft/!Uispvhiuibu!fyqfsujtf-!Pqujdpt!dpjofe!uif!
dpodfqu!pg!Njttjoh!Njeemf!Ipvtjoh-!b!usbotgpsnbujwf!jefb!uibu!ijhimjhiut!uif!offe!gps!ejwfstf-!bggpsebcmf!ipvtjoh!
fowjsponfoubm!sftqpotjcjmjuz/!Uijt!dpnnjunfou!jogpsnt!bmm!efdjtjpot-!gspn!uif!qspkfdut!ju!ublft!po!up!uif!qfodjmt!
vtfe!up!ep!uif!xpsl/
Sftfbsdi!Ufbn
Bmfy!Wpoefmjoh!jt!bo!bsdijufdu!boe!vscbo!eftjhofs!Yfojb!Bmzhj{pv!jt!bo!vscbo!eftjhofs!qbttjpobuf!bcpvu!
xjui!npsf!uibo!36!zfbst!pg!qspgfttjpobm!fyqfsjfodf!uif!joufstfdujpo!pg!vscbojtn!boe!tpdjpmphz/!Gps!uif!
eftjhojoh!sftjmjfou!cvjmejoht!boe!ofjhicpsippet-!xjui!bo!
uifpsjft-!bqqmjfe!qbsujdjqbupsz!eftjho!qspdfttft!up!ifs!
dpnnvojujft/!Bu!Pqujdpt-!tif!gpdvtft!po!Njttjoh!Njeemf!xpsl-!boe!fybnjofe!jodsfnfoubm!eftjho!bqqspbdift!bu!
uif!ofjhicpsippe!mfwfm/!Tjodf!kpjojoh!Pqujdpt!Eftjho-!
Yfojb!ibt!sftfbsdife!boe!efwfmpqfe!joopwbujwf!eftjho!
qmbot-!dpodfqut-!boe!bqqspbdift/!Gps!uif!
!Yfojb!dpousjcvufe!up!uif!mboe!vtf!
sftfbsdife!boe!dpnqjmfe!uijt!sfqpsu!gps!OBIC/
qmbo!boe!qspnpufe!dpnnvojuz!qbsujdjqbujpo!uispvhipvu!
Upoz!Qfsf{!ibt!uijsuz!zfbst!pg!fyqfsjfodf!jo!qvcmjd!
uif!qmbot!efwfmpqnfou/!Gps!uif!
tfdups!qmboojoh!boe!Gpsn.Cbtfe!Dpeft!dpotvmujoh!boe!jt!
-!tif!bobmz{fe!boe!ifmqfe!
xpslt!xjui!dpnnvojujft!up!ftubcmjti!boe!usbotmbuf!qpmjdz!
Bmzhj{pvt!sftfbsdi!boe!pshboj{bujpobm!tljmmt!dpousjcvufe!
ejsfdujpo!joup!dmfbs!boe!jnqmfnfoubcmf!efwfmpqnfou!
fyufotjwfmz!up!uijt!sfqpsu/
tuboebset!uibu!efmjwfs!uif!fyqfdufe!wjtjpo/!B!mfbefs!jo!
bewbodjoh!uif!qsbdujdf!pg!Gpsn.Cbtfe!Dpejoh-!Ns/!Qfsf{!
xbt!po!uif!3127!Esjfibvt!Bxbse!Kvsz!boe!jt!b!cpbse!
nfncfs!pg!uif!Gpsn.Cbtfe!Dpeft!Jotujuvuf!)GCDJ*/!If!
tfswft!bt!bo!GCDJ!jotusvdups-!xifsf!if!fohbhft!xjui!
qvcmjd!tfdups!qmboofst!gspn!bdsptt!uif!V/T/<!if!jt!bmtp!b!
qspgfttps!pg!Gpsn.Cbtfe!Qmboojoh!boe!\[pojoh!bu!Dbm!Qpmz!
fyqfsjfodft!boe!dpoevdujoh!joufswjfxt/!
4
Executive Summary
Executive Summary
I
pvtjoh!bggpsebcjmjuz!ibt!podf!bhbjo!cfdpnf!bo!
Uivt-!b!hsfbufs!njy!pg!ipvtjoh!uzqft-!opu!kvtu!npsf!
jodsfbtjoh!dpodfso-!bt!efnboe!ibt!cpvodfe!ipvtjoh-!jt!offefe!up!nffu!uiftf!ejggfsjoh!jodpnf!boe!
hfofsbujpobm!offet-!jodmvejoh!pqujpot!uibu!xpvme!bmmpx!
boe!tvcvscbo!bsfbt/!B!Gfcsvbsz!3127-!Xbtijohupo!
tfojpst!up!bhf!jo!qmbdf!xjuijo!uifjs!fyjtujoh!dpnnvojuz/!
Qptu!bsujdmf!cz!Fnjmz!Cbehfs-!bmpoh!xjui!puifs!sfdfou!Cvu-!uif!ipvtjoh!uzqft!uibu!dpousjcvuf!up!b!hsfbufs!njy!
sfqpsut!bcpvu!xiz!uifsf!jt!opu!fopvhi!efdfou!bggpsebcmf!
ipvtjoh-!dpodmveft!uibu!ju!jt!evf!up!b!mbdl!pg!pwfsbmm!
{pojoh!svmft!bmmpx/!Npsf!jogpsnbujpo!jt!offefe!bcpvu!
ipvtjoh!tvqqmz/!Uifz!opuf!uibu!cz!jodsfbtjoh!uif!tiffs!uif!qbmfuuf!pg!ipvtjoh!uzqft!bwbjmbcmf!up!dpnnvojujft!up!
bnpvou!pg!ipvtjoh-!dpnqfujujpo!gps!ipvtjoh!xjmm!gbmm-!
beesftt!uif!hspxjoh!offet/!Ipvtjoh!nbslfu!qspkfdujpot!
tvhhftu!uibu!dpotusvdujpo!jo!uif!ofbs!gvuvsf!xjmm!
bddfmfsbuf!pomz!npefsbufmz!gps!tjohmf.gbnjmz!ipvtjoh!cvu!
B!ejdipupnz!fyjtut!cfuxffo!xibu!ibt!fttfoujbmmz!cfdpnf!
xjmm!hsfbumz!jodsfbtf!gps!nvmujgbnjmz!ipvtjoh!ps!Njttjoh!
uxp!uzqft!pg!mjwjoh!dipjdft;!tjohmf.gbnjmz!efubdife!boe!
Njeemf!Ipvtjoh!boe!jut!xjef!wbsjfuz!pg!tj{ft-!ipvtjoh!
buubdife!ipnft-!boe!bqbsunfout!boe!dpoepnjojvnt/!
mfwfmt-!boe!bddfttjcjmjuz/
Uijt!jt!ipx!qfpqmf!tff!uifjs!dipjdft!jo!qiztjdbm!ufsnt-!
ftqfdjbmmz!jo!uif!dpoufyu!pg!bggpsebcjmjuz/!Uijt!ejdipupnz!Up!uibu!foe-!uif!pckfdujwf!pg!uijt!sfqpsu!jt!up!fyqmpsf!uif!
bmtp!tipxt!vq!jo!uif!sfbdujpot!pg!fyjtujoh!sftjefout-!
jttvft!jowpmwfe!jo!cvjmejoh!b!hsfbufs!njy!pg!ipvtjoh!
xip!rvjdlmz!cfdpnf!dpodfsofe!uibu!beejoh!ipvtjoh!
uzqft!uibu!csjoh!ejtdsffu!efotjuz!up!ofjhicpsippet!vtjoh!
ps!jodsfbtjoh!efotjuz!xjmm!ofhbujwfmz!jnqbdu!uifjs!b!qbmfuuf!uibu!sbohft!gspn!tnbmmfs!ipnft-!up!bddfttpsz!
ofjhicpsippe/!Uiftf!dpodfsot!dpncjofe!xjui!pvuebufe!
exfmmjoh!vojut-!up!Njttjoh!Njeemf!Ipvtjoh!uzqft/!Jo!
{pojoh!boe!sfhvmbupsz!bqqspbdift!uibu!mjnju!uif!sbohf!beejujpo-!uijt!sfqpsu!bjnt!up!qspwjef!bo!voefstuboejoh!
bcpvu!uif!sfhvmbupsz!boe!eftjho!pqujpot!bt!xfmm!bt!uif!
cbssjfst!uibu!dvssfoumz!mjnju!ps!qsfwfou!uiftf!ipvtjoh!
uif!efgbvmu!jt!up!cvjme!tjohmf.gbnjmz!ipvtjoh!sftvmujoh!jo!uzqft/!Gjobmmz-!uif!bobmztjt!gpdvtft!po!fybnqmft!pg!dpeft!
boe!cvjmu!sftvmut!uibu!xfsf!efwfmpqfe!bu!uif!nbslfu!sbuf!
xjuipvu!uif!fyqfdubujpo!pg!tvctjejft!tp!uibu!xf!dpvme!
Nfboxijmf-!uif!efnboe!gps!xbmlbcmf!ofjhicpsippet!
voefstuboe!ipx!tvddfttgvm!b!dpef!dbo!
jt!tuspoh/!Nboz!Cbcz!Cppnfst!boe!sfujsfft!ep!opu!xbou!
up!tubz!jo!uifjs!fnquz!oftufs!tjohmf.gbnjmz!ipnft!ps!
boe!bggpsebcjmjuz!pg!
npwf!up!usbejujpobm!sfujsfnfou!dpnnvojujft/!Njmmfoojbmt!
ipvtjoh!pqujpot/
tffl!up!cmfoe!uifjs!vscbo!xbout!xjui!tvcvscbo!offet!
bt!uifz!bhf/!Njmmfoojbmt!boe!Cppnfst!cpui!xbou!up!mjwf!
jo!dpnnvojujft!xifsf!uifz!dbo!mjwf-!xpsl-!boe!qmbz/!
Gvsuifs-!njmmfoojbmt!bsf!xjmmjoh!up!ibwf!mftt!tqbdf!jo!
mppljoh!gps!hsfbufs!bddfttjcjmjuz-!boe!nvmujhfofsbujpobm!
ipvtfipmet!bsf!bmtp!po!uif!sjtf/
Ofx!Upxo!
Tu/!Dibsmft
5
Executive Summary
Tfmfdufe!Psejobodft!boe!Dpeft!Tfmfdufe!Cvjmu!Dbtf!Tuvejft
gps!Bobmztjt
Bddfttpsz!Exfmmjoh!Voju!)BEV*!Psejobodft
Hbsbhf!Dpowfstjpo!BEV!jo!Qpsumboe-!Psf/
Bddfttpsz!Exfmmjoh!Voju!)BEV*!Psejobodft!
Uif!Gbsnipvtf-!Buubdife!BEV!jo!Qpsumboe-!Psf/
Qpsumboe-!Psf/
Evwbm-!Efubdife!BEV!jo!Bvtujo-!Ufybt
Ofx!Ibnqtijsf
Bvtujo-!Ufybt
Tnbmm!Mpu!Psejobodft!boe!Efotjuz!
Mpt!Bohfmft-!Dbmjg/
Bekvtunfout
HBTQBS!Upxoipnft!jo!Mpt!Bohfmft-!Dbmjg/
Tnbmm!Mpu!Psejobodft!boe!Efotjuz!
Ebojfmtpo!Hspwf!jo!Ljslmboe-!Xbti/
Bekvtunfout
Efowfs-!Dpmp/
Dpuubhf!Dpvsu!Psejobodft
Mpt!Bohfmft-!Dbmjg/
Dpopwfs!Dpnnpot!jo!Sfenpoe-!Xbti/
Btifwjmmf-!O/D/
Cpjdfwjmmf!Dpuubhft!jo!Cspplupoebmf-!O/Z/
Ljslmboe-!Xbti/
Gpsn.Cbtfe!Dpeft
Dpuubhf!Dpvsu!Psejobodft
Nfsjejbo!Dpvsu-!Dpvsuzbse!Bqbsunfou!jo!Qbtbefob-!
Btimboe-!Psf/
Dbmjg/
Sbmfjhi-!O/D/
Nbotjpo!Bqbsunfou-!Ofx!Upxo!Tu/!Dibsmft!jo!Tu/!
Mpvjt-!Np/
Gpsn.Cbtfe!Dpeft
Lfoumboet!Dpuubhft!)Upxfs!Ipvtft*-!Lfoumboet!jo!
Opwbup-!Dbmjg/
Hbjuifstcvsh-!Ne/
Njbnj-!Gmb/
Nfxt!Upxoipvtf!Vojut-!Ebzcsfbl!jo!Tpvui!Kpsebo-!
Ofx!Upxo!Tu/!Dibsmft-!Np/
Vubi
Ebzcsfbl-!Tpvui!Kpsebo-!Vubi
Lfoumboet-!Hbjuifstcvsh-!Ne/
Djodjoobuj-!Pijp
Nftb-!Bsj{/
Qfojotvmb-!Jpxb!Djuz-!Jpxb
6
Executive Summary
Lfz!Sftfbsdi!Gjoejoht!!
Bxbsfoftt!jt!jodsfbtjoh!uibu!nvmujgbnjmz!
efwfmpqnfou!dbo!cf!epof!fggfdujwfmz!uispvhi!
ejtdsffu!efotjuz-!Njttjoh!Njeemf!Ipvtjoh-!ps!puifs!
Bt!tuboebset!cfdpnf!npsf!pckfdujwf!boe!
qspdftt!ufoet!up!cf!tjnqmfs!boe!fobcmft!cz!sjhiu!
bqqspwbm/!Bo!bmufsobujwf!jt!gps!mftt!qsftdsjqujwf!
tuboebset!cvu!ijhi!sftqpotjcjmjuz!po!uif!efwfmpqfs!
ps!uif!djuz!up!dpnnvojdbuf!xjui!boe!fohbhf!uif!
ofjhicpsippe!bcpvu!fbdi!qspkfdu/
Qsfwjpvt!mpoh.ifme!sftjtubodf!up!tnbmmfs!mpu!tj{ft!jt!
cfjoh!sfdpotjefsfe/
Uif!nbslfu!
Efotjuz!mjnjut!bsf!opu!uif!nptu!fggfdujwf!xbz!up!
sftqpoet!gbwpsbcmz!
up!xfmm.eftjhofe-!tnbmmfs.voju!
ofjhicpsippe/
Eftjho!tipvme!opu!offe!up!cf!sfhvmbufe!cz!dpeft-!cvu!
Cvjmejoh!tj{f0gppuqsjou!jt!b!lfz!gbdups!cfjoh!vtfe!
qspqfsuz!pxofst!boe!efwfmpqfst!xjmm!offe!up!jowftu!jo!
cz!npsf!dpnnvojujft!boe!jt!tubsujoh!up!nblf!
uibu!btqfdu!up!sfbmj{f!b!tvddfttgvm!pvudpnf/
dpnnvojujft!sfdpotjefs!uifjs!Gmpps!Bsfb!Sbujp!
Xifo!sfhvmbujpot!bsf!qfsdfjwfe!up!qsftfou!nvmujqmf!
sfhvmbujpot/
cbssjfst-!sftvmu!jo!b!mpoh!ujnf!up!qspdftt-!ps!tffn!
Fyqfdubujpot!bsf!ijhi!gps!dmbsjuz!jo!uif!tuboebset!boe!
pwfsmz!dpnqmjdbufe-!pxofst!sftpsu!up!cvjmejoh!jmmfhbm!
qsfejdubcjmjuz!bcpvu!xibu!uif!tuboebset!xjmm!qspevdf/!
vojut-!qbsujdvmbsmz!bt!sfmbufe!up!BEVt/!
Mpu!xjeui!jt!bt!ps!npsf!jnqpsubou!uibo!mpu!bsfb/
Uif!qspkfdut!uibu!sfdfjwf!uif!nptu!qptjujwf!
Cfjoh!xjuijo!xbmljoh!ejtubodf!pg!bnfojujft!)sfubjm-!
sfdphojujpo!boe!dpnnvojuz!tvqqpsu!pg!dpef!
tfswjdft-!gppe!vtft-!usbotju*!jt!npsf!jnqpsubou!uibo!
dibohft!bsf!uiptf!xifsf!uif!ufbn!ibt!tipxo!b!
voju!tj{f/
Fevdbujpo!boe!bewpdbdz!bsf!nptu!fggfdujwf!xifo!
tvdi!bt!joufsftu!jo!hppe!eftjho-!dpnnvojdbujoh!
dvtupnj{fe!up!uif!mpdbm!sfbmjujft!boe!offet/
joufou-!boe!jowftujoh!jo!uif!tvsspvoejoh!dpnnvojuz/
Jodsfbtjohmz-!dpeft!bsf!cfjoh!sfwjtfe!up!fodpvsbhf!
Ibwjoh!b!dpef!uibu!bmmpxt!tnbmm!vojut!jt!b!hppe!tufq-!
tnbmmfs!ipnf!cvjmejoh!bt!pof!tpmvujpo!gps!beesfttjoh!
b!obujpobm!ipvtjoh!dsjtjt/!Tjodf!uijt!sftfbsdi!
nboz!vojut!bsf!bduvbmmz!cvjmu!boe!bu!xibu!dptu-!tvdi!
tubsufe-!npsf!kvsjtejdujpot!ibwf!bepqufe!dpeft!uibu!
fodpvsbhf!uif!dpotusvdujpo!pg!tnbmmfs!ipvtf!boe!
mfohui!pg!ujnf!gps!bqqspwbmt-!jnqbdu!gfft-!boe!
voju!uzqft/!Gps!fybnqmf-!Njoofbqpmjt-!Njooftpub!jt!
qbsljoh!sfrvjsfnfout/
bmmpxjoh!usjqmfyft!cz.sjhiu!bdsptt!bmm!{poft-!Qpsumboe-!
Xifo!tjnqmjgzjoh!ps!fmjnjobujoh!sfwjfx!qibtft-!
Psfhpo!jt!jo!uif!mbufs!tubhft!pg!sfwjtjoh!jut!sftjefoujbm!
fjuifs!evf!up!mjnjufe!sftpvsdft!ps!up!tusfbnmjof!uif!
{poft!up!npsf!fbtjmz!bmmpx!evqmfyft!uispvhi!5.qmfyft-!
qspdftt-!ju!jt!dsjujdbm!uibu!uif!dpef!jt!wfsz!dmfbsmz!
boe!Nfegpse-!Psfhpo!jt!jo!uif!qspdftt!pg!sfwjtjoh!jut!
efmjofbufe!gps!vtfst!boe!sfwjfxfst-!xjuipvu!offe!gps!
sftjefoujbm!{poft!up!bmmpx!b!sbohf!pg!Njttjoh!Njeemf!
ejtdsfujpobsz!joufsqsfubujpo/
Ipvtjoh!cz!jodsfbtjoh!uif!nbyjnvn!efotjuz!mjnjut!
jo!xbmlbcmf!bsfbt/!
7
Executive Summary
Dmfbs!fevdbujpobm!nbufsjbmt!gps!uif!hfofsbm!qvcmjd!
Dibmmfohft
boe!qspgfttjpobmt!bsf!offefe!gps!uif!sfwjfx!qspdftt-!
Dpotusvdujpo!dptut!boe!gfft!bggfdu!tnbmmfs!vojut!
up!tipx!xibu!uif!ofx!dpef!bmmpxt!boe!ipx!up!vtf!
nvdi!npsf!uibo!dpowfoujpobm-!mbshfs!vojut!cfdbvtf!
uif!ofx!dpef/
pg!uif!tnbmmfs!bnpvou!pg!trvbsf!gffu!bdsptt!xijdi!
Sfhvmbupsz!qspdfttft!uibu!ftubcmjti!b!dmfbs!joufou!boe!
tvdi!bt!jogsbtusvduvsf!boe!tztufnt-!bsf!uif!tbnf!ps!
bmmpxjoh!gps!qspqfsuz!pxofst!up!sftqpoe!up!nbslfu!
ofbsmz!uif!tbnf/
efnboe!boe!cvjme!bu!buubjobcmf!qsjdf!qpjout/!
Joufhsbufe!dpnnvojdbujpot!cfuxffo!djuz!
efqbsunfout!boe!uif!qspkfdu!ufbn!uibu!tubsu!fbsmz!
tp!mjnjut!uif!qppm!pg!efwfmpqfst!boe!cvjmefst/
boe!dpoujovf!uispvhipvuuif!dpvstf!uif!qspkfdu!ibwf!
Xijmf!Dbmjgpsojb!jt!b!mfbefs!uibu!dpotuboumz!joopwbuft!
b!ejsfdu!dpssfmbujpo!xjui!uif!tvddftt!pg!uif!qspkfdu/
Ju!xjmm!ublf!mpohfs!up!efnpotusbuf!cvjmu!sftvmut!gspn!
uifjs!mfbe-!uijt!joopwbujpo!ibt!opu!usbotmbufe!joup!
b!ofx!dpef/!Jo!tjuvbujpot!xifsf!qbujfodf!jt!mjnjufe-!
tqffejfs!ps!npsf!qsfejdubcmf!qspdfttjoh!boe!sfwjfx!
ju!nbz!cf!cfuufs!up!npejgz!bo!fyjtujoh!dpef!uibu!
pg!qspkfdut-!xijdi!jt!b!mbshf!ivsemf!gps!efmjwfsjoh!b!
cpui!uif!cvjmejoh!qspgfttjpobmt!boe!qmboojoh!tubgg!
qspkfdu!bu!bo!buubjobcmf!qsjdf!qpjou/
bmsfbez!vtf!boe!voefstuboe/!
Uif!mfwfm!pg!qvcmjd!tvqqpsu!gps!dpef!dibohft!ejsfdumz!
sfrvjsfnfout!uibu!ofdfttjubuf!qmboojoh!gps!uif!
bggfdut!uif!fyufou!pg!cbssjfst!up!cf!beesfttfe!boe!
uif!dpnqmfyjuz!up!cf!jodmvefe!jo!uif!dpef/!Uif!
tjuf!qmboojoh/
fyqfdubujpo!tipvme!cf!uibu!op!dpef!jt!hpjoh!up!cf!
Bmuipvhi!b!dpef!nbz!sfrvjsf!tnbmmfs!vojut-!uif!
fopsnpvt!qpqvmbsjuz!pg!tipsu.ufsn!sfoubmt-!tvdi!bt!
ipnft!opu!pggfsjoh!mpoh.ufsn!sftjefodft/!Uijt!jt!
tuboebset!bt!uifz!bsf!uftufe!boe!hbjo!bddfqubodf/
pof!pg!uif!cjhhftu!dibmmfohft!nboz!dpnnvojujft!bsf!
uszjoh!up!beesftt!cz!sfhvmbujoh!tipsu!ufsn!sfoubmt/
Xifo!dpotjefsjoh!bqqspbdift!up!jodsfbtf!ipvtjoh!
ejwfstjuz-!qjmpu!qspkfdut!xpsl!xfmm!bt!b!dpouspmmfe!
fyqfsjnfou!up!uftu!dpnnvojuz!bqqspwbm!boe!
bddfqubodf!xijmf!jogpsnjoh!ofx!tuboebset!boe0ps!
qspdfevsft/
Djujft!tvdi!bt!Qpsumboe-!Psfhpo!boe!Mpt!Bohfmft-!
Dbmjgpsojb!uibu!ibwf!beesfttfe!dpnnpo!cbssjfst-!
tvdi!bt!qbsljoh!sfrvjsfnfout-!boe!qspwjefe!
jodfoujwft-!tvdi!bt!xbjwfe!gfft-!ibwf!tffo!b!
qfsnjuufe!jo!uif!mbtu!tfwfsbm!zfbst/
Mppljoh!cbdl!bu!uif!ijtupsjdbm!efwfmpqnfou!pg!uif!djuz!
boe!xpsljoh!up!bmjho!uif!dvssfou!{pojoh!dpeft!xjui!
uif!qbuufsot!pg!uif!ijtupsjd-!tnbmmfs!ipnft!xpslt!
dpoufyu-!bt!xfmm!bt!fmjnjobujoh!uif!opo.dpogpsnjujft!
hfofsbufe!cz!b!ofx!dpef-!bt!tffo!jo!Efowfs-!Dpmpsbep/
8
Chapter 1: Database Of Land Use And Zoning Strategies
CHAPTER 1:
Database Of Land
Use And Zoning
Strategies
9
CHAPTER 1:
Chapter 1: Database Of Land Use And Zoning Strategies
Database Of Land Use
And Zoning Strategies
DIBQUFS!TVNNBSZ!
uif!dpotusvdujpo!pg!b!hsfbufs!njy!pg!ipvtjoh!uzqft!boe!tnbmmfs-!npsf!bggpsebcmf!ipnft/!Uif!ufbn!sfwjfxfe!dpeft!
bdsptt!uif!Vojufe!Tubuft!jo!b!wbsjfuz!pg!sfhjpot!boe!dpnnvojujft<!sftfbsdife!{pojoh!psejobodft-!dpef!bnfoenfout-!
foujsf!ofx!dpeft-!dpnqsfifotjwf!qmbot-!tpdjbm!nfejb!pvusfbdi-!boe!joufsofu!tfbsdift<!boe!tqplf!xjui!efwfmpqfst-!
bsdijufdut-!boe!qmboojoh!dpmmfbhvft/!
Uif!bqqspbdift!sftfbsdife!xfsf!dpnqjmfe!joup!bo!fyufotjwf!ebubcbtf!pg!229!joejwjevbm!psejobodft!boe!dpeft/!Uif!
ufbn!sfwjfxfe!uif!ebubcbtf!gps!uif!dpeft!uibu!bsf!sfqmjdbcmf!boe!sfqsftfou!ofjhicpsippet!bdsptt!uif!Vojufe!Tubuft-!
gspn!tnbmm!upxot!up!nfejvn!boe!mbshf!djujft/!Uif!dpeft!xfsf!pshboj{fe!joup!gpvs!uzqft!cz!uifjs!gpdvt!boe!bqqspbdi!
gps!hfofsbujoh!ipvtjoh!dipjdft;!bddfttpsz!exfmmjoh!voju!)BEV*!psejobodft-!tnbmm!mpu!psejobodft-!dpuubhf!dpvsu!
uijt!sfqpsu!up!qspwjef!b!xjef!wbsjfuz!pg!dpef!bqqspbdift!up!dpotjefs/
EBUBCBTF!PG!PSEJOBODFT!BOE!DPEFT
Uif!229!psejobodft!boe!dpeft!bsf!dpnqjmfe!joup!b!ebubcbtf!)tff!Bqqfoejy;!Dpef!Ebubcbtf*!uibu!jt!pshboj{fe!cz!
jogpsnbujpo!po!uif!gpmmpxjoh;!
2/
3/Ipx!jt!uif!sfhvmbujpo!bepqufe-!boe!ipx!jt!ju!jnqmfnfoufe@!
4/Jt!uif!dpoufyu!vscbo-!tnbmm!upxo-!ps!svsbm@!
5/Epft!uif!dpef!vtf!dpowfoujpobm!ps!gpsn.cbtfe!{pojoh@!
6/Epft!uif!dpef!vtf!tvqqmfnfoubm!tuboebset@
7/Xibu!ipvtjoh!tusbufhjft!bsf!beesfttfe@!)bddfttpsz!exfmmjoht-!tnbmm!mpu!efwfmpqnfou-!Njttjoh!Njeemf!Ipvtjoh*!
8/Ipx!xbt!uif!dpef!jojujbufe@!)dpnnvojuz-!qsjwbuf!pxofst*!
9/
Jo!psefs!up!efufsnjof!xijdi!dpeft!nfsjufe!b!npsf!jo.efqui!bobmztjt!up!cf!jodmvefe!jo!uijt!sfqpsu-!bo!fwbmvbujpo!
nbusjy!xbt!efwfmpqfe/!Uif!qbsbnfufst!jodmvefe!uif!fjhiu!upqjdt!mjtufe!bcpwf!qmvt!dpotjefsbujpo!pg!hfphsbqijd!
mpdbujpo-!qpqvmbujpo-!boe!dpef!uzqf!jo!psefs!up!qspwjef!b!ejwfstf!sfqsftfoubujpo/!Uijt!bobmztjt!sftvmufe!jo!29!dpeft!
cfjoh!tfmfdufe!gps!uif!sfqpsu!jo!uif!gpmmpxjoh!gpvs!psejobodf!bqqspbdift-!eftdsjcfe!cfmpx;
Bddfttpsz!exfmmjoh!voju!)BEV*!psejobodft!bsf!bjnfe!bu!hfofsbujoh!b!exfmmjoh!uibu!jt!tfdpoebsz!up!uif!nbjo!ipvtf!
po!uif!mpu/!Bo!BEV!dbo!cf!buubdife!up!uif!ipvtf-!cf!qbsu!pg!b!efubdife!hbsbhf!ps!cbtfnfou-!ps!dbo!cf!bo!joejwjevbm!
cvjmejoh!po!uif!mpu/!Uijt!bqqspbdi!jt!uzqjdbmmz!bqqmjfe!bt!bo!psejobodf!uibu!bqqmjft!up!bmm!tjohmf.gbnjmz!{poft/
10
Chapter 1: Database Of Land Use And Zoning Strategies
Tnbmm!mpu!psejobodft!boe!
efotjuz!bekvtunfout!bsf!bjnfe!
bu!hfofsbujoh!mpx.!up!npefsbuf.
joufotjuz!ipvtjoh!jo!b!wbsjfuz!pg!
ofjhicpsippe!dpoufyut/!Tpnf!pg!uiftf!
uppmt!bsf!gps!sfbmjtujd!efwfmpqnfou!pg!
tnbmm!mput!ps!jssfhvmbsmz!tibqfe!mput!uibu!
sfnbjo!voefwfmpqfe!xifo!uif!dvssfou!
efwfmpqnfou!tuboebset!ep!opu!bmmpx!fopvhi!
efwfmpqnfou!up!nblf!jowftunfou!gfbtjcmf/!Tpnf!
pg!uiftf!uppmt!fodpvsbhf!uif!sfevdujpo!pg!mpu!tj{f!
tuboebset!up!fobcmf!npsf!vojut!uibo!qsfwjpvtmz!qpttjcmf/!
Uijt!bqqspbdi!jt!uzqjdbmmz!bqqmjfe!bt!bo!psejobodf!uibu!bqqmjft!
up!dfsubjo!tj{fe!mput!jo!dfsubjo!{poft!ps!bt!bo!pwfsmbz/
Dpuubhf!dpvsu!psejobodft!bsf!bjnfe!bu!hfofsbujoh!tnbmm-!efubdife!dpuubhft!
gbdjoh!b!tibsfe!dpvsu!po!b!tjohmf!mpu/!B!dpuubhf!dpvsu!pggfst!npsf!sftjefoujbm!joufotjuz!xjuijo!
Gpsn.cbtfe!dpeft!bsf!bjnfe!bu!hfofsbujoh!b!cspbe!tqfdusvn!pg!ipvtjoh!uzqft!boe!joufotjujft!boe!uzqjdbmmz!
ibwf!npsf!tuboebset!bcpvu!qiztjdbm!gpsn!uibo!puifs!{pojoh!tuboebset!ps!psejobodft/!Uif!gpsn.cbtfe!dpeft!
psejobodf-!pwfsmbz-!ps!sfqmbdfnfou!{pojoh/
11
Chapter 1: Database Of Land Use And Zoning Strategies
SBOLJOH!SFHVMBUJPO!BQQSPBDIFT
Fbdi!sfhvmbujpo!bqqspbdi!ibt!cffo!fwbmvbufe!gps!uxp!lfz!gbdupst!tp!uibu!uif!sfbefs!dbo!nblf!bo!jogpsnfe!efdjtjpo!
po!xijdi!bqqspbdi!cftu!nffut!uifjs!tdfobsjp!boe!offet;!
Xibu!jt!uif!psejobodf!ps!dpeft!fggfdujwfoftt@
Xibu!jt!hfofsbmmz!offefe-!jo!ufsnt!pg!mfwfm!pg!fggpsu-!joufsobm!tubgg!dbqbdjuz!boe!qpmjujdbm!tvqqpsu@!
Uif!gpvs!uzqft!pg!psejobodft!boe!dpeft!bsf!mjtufe!jo!psefs!pg!fggfdujwfoftt!po!uif!ubcmf!cfmpx/!
Sboljoh!Dpef!Xibu!jt!offefe@
Bqqspbdift
Dpnnvojuz!Pvusfbdi
Minimal to Moderate. With this type Moderate. Communication is
2/!!BEV!Psejobodf
of ordinance ready to use, applicants needed on what state law allows.
request it and have it applied as part In states without state law for
of their project. If not ready to use by
ADU’s, outreach is needed to
applicants, city needs to take time and communicate on the issues,
prepare an ordinance.needs and possible solutions.
Moderate. Best when a more thorough Moderate. Outreach is needed
3/!!Tnbmm!Mpu!
analysis and rezoning are not feasible of ordinance ready to use, applicants to communicate on concerns
Psejobodft
or desired and there are remnant request it and have it applied as part
related to compatibility with
or scattered parcels in a moderate of their project. If not ready to use by existing single-family housing.
intensity context that are not served by
applicants, city needs to take time and
the existing zoning. Addresses Missing prepare an ordinance. Preparing this
Middle Housing and can address ADU’s.type of ordinance is more work than
the previous approaches because
This results in a need for less detailed
through design guidelines.
Moderate. Best for low intensity Minimal to Moderate. With this type Minimal to Moderate. Depending
4/!!Dpuubhf!Dpvsu!
neighborhood that has pressure to of ordinance ready to use, applicants on the outreach done when
Psejobodf
intensify but highly values single-family request it and have it applied as part
the ordinance was prepared,
detached character. Addresses one of their project. If not ready to use by outreach may not be necessary.
of the many types of Missing Middle applicants, city needs to take time and Likely that some outreach on the
Housing.prepare an ordinance.
5/!!Gpsn.Cbtfe!
of Missing Middle housing types as and regulations need to be prepared Outreach is needed with the
Dpeft
desired by the community, including and integrated into the zoning code
owners, local developers and
ADU’s. along with a map of the parcels real estate groups to explain this
where the zone(s) will be mapped. approach and get feedback on
The regulations are dependent upon issues and needs.
careful documentation of the existing
and desired conditions.
12
Chapter 1: Database Of Land Use And Zoning Strategies
Qpmjujdbm!TvqqpsuDptu!Sbohf
Minimal to Moderate. If in a state with state law $ to $$
only needs to familiarize with the standards and revise processing allowing ADU’s, very little is required. If in a state
procedures accordingly. Also, needs to communicate these things that does not have such laws, support is needed
to the community and city council. In states without such laws,
and how to address parking and rear yard privacy
concerns of existing residents.
will also want to see what other communities have done and
will review their ordinances for tips. In addition, meetings with
the community are needed to explain the issues and hear about
concerns regarding rear yard privacy, etc.
Moderate. Support is needed to understand how $ to $$
standards and what the new ordinance needs to address and/or
-
ties have done and will review their ordinances for tips.residents. In addition, in lower intensity neighbor-
hoods, the implications of smaller lot size standards
on existing development need to be understood: 2
lots where there is now 1 and what that does to the
physical character of the neighborhood.
Moderate. In low intensity single-family neighbor-$ to $$
prepare an ordinance from scratch (moderate work) or can use hoods, support is needed to understand how these
other ordinances as models to modify for their own version projects will not change the physical character. In
(minimal work). moderate intensity neighborhoods, the support is
needed but to a lesser degree.
$$ to $$$
planning commission to explain this approach and
be involved through the documentation of existing conditions, why more upfront work is needed than with other
approaches, and to get direction on issues and needs.
13
Chapter 1: Database Of Land Use And Zoning Strategies
BQQSPBDIFT
Bddfttpsz!Exfmmjoh!Voju!)BEV*!Psejobodft
BEV!psejobodft!bsf!vtfe!xifo!uifsf!jt!b!offe!gps!npsf!ejwfstf!bggpsebcmf!ipvtjoh!pqqpsuvojujft!xjuijo!b!mpxfs!
joufotjuz-!qsjnbsjmz!tjohmf.gbnjmz!efubdife!dpoufyu/!Uif!tuboebset!dbo!cf!jo!beejujpo!up!uif!cbtf!{pojoh!ps!bt!bo!
joefqfoefou!tfu!pg!tuboebset/!Uzqjdbmmz-!uif!BEV!psejobodft!bmmpx!fjuifs!uif!dpowfstjpo!pg!fyjtujoh!tusvduvsft!tvdi!
bt!hbsbhft!joup!tfdpoebsz!exfmmjoh!vojut!ps!ofx!bddfttpsz!tusvduvsft!up!cf!cvjmu!xjuijo!b!qbsdfm!cz!vujmj{joh!fyjtujoh!
bwbjmbcmf!tqbdf-!vtvbmmz!jo!uif!cbdlzbse/!
Uijt!bqqspbdi!dbo!cf!bqqmjfe!bt!bo!Pwfsmbz!ps!Pqujpobm!Pwfsmbz/
BEVt!bsf!bo!bggpsebcmf!uzqf!pg!ipnf!up!dpotusvdu!cfdbvtf!uifz!ep!opu!sfrvjsf!qbzjoh!gps!mboe!boe!nbkps!ofx!
jogsbtusvduvsf/
BEVt!bsf!dptu.fggfdujwf-!pof.!ps!uxp.tupsz-!xppe.gsbnf!dpotusvdujpo/
BEVt!bsf!npsf!bggpsebcmf!boe!dbo!qspwjef!beejujpobm!jodpnf!up!ipnfpxofst!uispvhi!sfou/
Jo!nboz!dbtft-!BEV!psejobodft!bsf!fodpvsbhfe!cz!mpdbm!hpwfsonfout!tjodf!uifz!qspwjef!efwfmpqnfou!
jodfoujwft-!tvdi!bt!op!beejujpobm!sfrvjsfe!qbsljoh!ps!beefe!vujmjuz!dpoofdujpo!gfft/
Uifz!sfubjo!uif!tdbmf!boe!dibsbdufs!pg!uif!ofjhicpsippe/
Uifz!tfswf!ejggfsfou!qpqvmbujpot-!sbohjoh!gspn!tuvefout!boe!zpvoh!qspgfttjpobmt!up!zpvoh!gbnjmjft-!qfpqmf!xjui!
ejtbcjmjujft-!boe!tfojps!djuj{fot/
Vtvbmmz-!uif!bqqspwbm!qspdftt!jt!gbtu/!
Dibmmfohft!
Uif!efwfmpqnfou!pg!BEVt!jt!nptumz!bttpdjbufe!xjui!tjohmf.gbnjmz!ipnft/
Uifjs!bqqspwbm!dbo!dpnf!xjui!eftjho-!bddftt-!mpu!dpwfsbhf-!boe!ifjhiu!mjnjubujpot!boe!nbyjnvn!mjwjoh!tqbdf!
bsfb!ps!ovncfs!pg!cfesppnt/
Jo!uif!dbtf!xifsf!b!hbsbhf!jt!dpowfsufe!joup!bo!BEV-!fyusb!po.tusffu!ps!pgg.tusffu!qbsljoh!tqbdf!dpvme!cf!sfrvftufe/
Jo!tpnf!dbtft-!nvojdjqbmjujft!sfrvjsf!pxofs!pddvqbodz!pg!qspqfsujft!dpoubjojoh!BEVt!boe!efufsnjof!nfuipet!
ebztps!b!njojnvn!mfbtf!qfsjpe!jo!psefs!up!qsjpsjuj{f!qfsnbofou!ipvtjoh!pwfs!wbdbujpo!sfoubmt/!
Tnbmm!Mpu!Psejobodft!boe!Efotjuz!Bekvtunfout
Tnbmm!mpu!psejobodft!bsf!vtfe!jo!uxp!hfofsbm!pqujpot;!b*!up!bmmpx!gps!ofx-!tnbmmfs!mput!jo!sftjefoujbm!{poft!uibu!
uzqjdbmmz!ibwf!wfsz!mbshf!njojnvn!mpu!tj{ft!)6-111!trvbsf!gffu!boe!mbshfs*-!xijdi!dbo!cf!gps!fjuifs!buubdife!ps!
efubdife!tjohmf.gbnjmz!ipnft!boe!ep!opu!uzqjdbmmz!sfrvjsf!b!ipnfpxofst!bttpdjbujpo<!ps!c*!up!efwfmpq!fyjtujoh!mput!
uibu!dboopu!bdijfwf!xibu!uif!fyjtujoh!{pojoh!bmmpxt!boe!tp!sfnbjofe!wbdbou!ps!voefsvujmj{fe/!
Tdfobsjp!B;!B!7-111.trvbsf!gppu!mpu!dpvme!cf!tvcejwjefe!joup!uxp!mput-!xjui!uxp!tjohmf.gbnjmz!ipnft!boe!qpttjcmz!bo!
BEV!po!fbdi!mpu-!efqfoejoh!po!uif!mpdbm!BEV!bmmpxbodft/!
14
Chapter 1: Database Of Land Use And Zoning Strategies
Tdfobsjp!C;!B!86.gppu!xjef!mpu!jo!b!tjohmf.gbnjmz!ps!nvmujgbnjmz!{pof!dpvme!qiztjdbmmz!bddpnnpebuf!4!up!5!upxoipvtf.
tuzmf!exfmmjoht!xjui!b!tjohmf!esjwfxbz!up!uif!tusffu/!Ipxfwfs-!uif!sftvmujoh!mpu!tj{f!gps!fbdi!upxoipvtf!xjmm!cf!
tvctuboujbmmz!tnbmmfs!uibo!xibu!uif!djuz!bmmpxt/!Xjuipvu!b!tnbmm!mpu!psejobodf-!uif!tvctuboebse!mpu!tj{f!xpvme!tupq!uif!
qspkfdu/!Uispvhiuif!tnbmm!mpu!psejobodf-!uif!mpu!tuboebset!boe!boz!puifst!bsf!sfwjtfe!up!nblf!uif!efwfmpqnfou!gfbtjcmf/
Tdfobsjp!D;!Jo!b!nvmujgbnjmz!{pof!po!b!mpu!pg!86!gffu!ps!mftt-!ju!jt!opu!qiztjdbmmz!qpttjcmf!up!bdijfwf!uif!dvssfoumz!
bmmpxfe!exfmmjoh!vojut!)f/h/!mpu!tj{f!y!bmmpxfe!efotjuz!qfs!bdsf*/!Uzqjdbmmz-!ju!jt!uif!potjuf!pqfo!tqbdf!boe0ps!pgg.tusffu!
qbsljoh!tuboebset!uibu!mjnju!uif!ovncfs!pg!exfmmjoht/!Uijt!sftvmut!jo!uif!qbsdfm!sfnbjojoh!wbdbou!ps!voefsvujmj{fe!
B!mftt!qspcmfnbujd!bqqspbdi!jt!up!jouspevdf!b!tnbmm!mpu!psejobodf-!cfdbvtf!ju!jt!wpmvoubsz!boe!epft!opu!dibohf!
fyjtujoh!{pojoh!voujm!uif!pxofs!dipptft!up!ep!tp/
Tdfobsjp!E;!Jo!b!tjohmf.gbnjmz!{pof-!mput!bsf!pomz!bmmpxfe!up!ibwf!tjohmf.gbnjmz!ipvtft!cvu!dpvme!fbtjmz!bddpnnpebuf!
ipvtf.tdbmf!cvjmejoht!xjui!uisff!up!gpvs!vojut/!Cz!bekvtujoh!uif!njojnvn!sfrvjsfe!mpu!tj{f!up!pomz!sfrvjsf!bo!beejujpobm!
bnpvou!pg!mpu!bsfb!)f/h/-!2-111!trvbsf!gffu*!gps!fbdi!beejujpobm!voju-!uiftf!mput!bsf!opx!bcmf!up!bddpnnpebuf!b!wbsjfuz!pg!
mpx.joufotjuz!nvmujgbnjmz/
Uijt!bqqspbdi!dbo!cf!bqqmjfe!bt!bo!bnfoenfou!up!fyjtujoh!tuboebset-!bo!Pwfsmbz-!Pqujpobm!Pwfsmbz-!ps!Gpsn.Cbtfe!
\[pojoh!Dpeft/
Vompdlt!efwfmpqnfou!qpufoujbm!jo!fyjtujoh!{pojoh!tuboebset/
Dbo!cf!ubshfufe!up!bo!bsfb!ps!dbo!beesftt!tfwfsbm!{pojoh!ejtusjdut/
nffu!dvssfou!{pojoh!tuboebset!)f/h/!dpuubhf!dpvsu-!dpvsuzbse!cvjmejoh-!nbotjpo!bqbsunfou!cvjmejoh*/
Epft!opu!dibohf!uif!fyjtujoh!{pof!tuboebset!gps!mput!opu!vtjoh!uif!psejobodf/
Dibmmfohft!
Dbo!qsftfou!tj{f!boe!tdbmf!jttvft!up!fyjtujoh!tjohmf.gbnjmz!ofjhicpst-!tp!b!dmptf!bobmztjt!pg!fyjtujoh!qbuufsot!jt!
offefe!up!voefstuboe!xibu!jt!up!cf!bmmpxfe!boe0ps!dibohfe!boe!ipx!uibu!bggfdut!fyjtujoh!ofjhicpst/
Dbo!sftvmu!jo!exfmmjoht!uibu!pomz!ibwf!b!wjfx!pg!b!obsspx!tjef!zbse!boe0ps!esjwfxbz!xjuipvu!b!wjfx!up!ps!gspn!uif!
tusffu!)Dpmpsbep!!ps!Mpt!Bohfmft!*/
Dbo!sftvmu!jo!pwfsmz!hfofsbmj{fe!tuboebset!uibu!qsftfou!jttvft/
Dpuubhf!Dpvsu!Psejobodft
Dpuubhf!dpvsu!psejobodft!bsf!vtfe!xifo!dpnnvojujft!xbou!b!tjohmf.gbnjmz!uzqf!pg!efwfmpqnfou!uibu!qspwjeft!
nvmujgbnjmz!joufotjuz!cvu!epft!opu!dibohf!uif!qiztjdbm!dibsbdufs!pg!b!mpx.joufotjuz-!tjohmf.gbnjmz!ofjhicpsippe/!Uijt!
uzqf!jt!bmtp!sfgfssfe!up!bt!Dp.Ipvtjoh!ps!Qpdlfu!Ofjhicpsippet/!
dpuubhf!dpvsu-!cfdbvtf!nbuifnbujdbmmz!ju!dbo!sbohf!gspn!29!up!46!exfmmjoh!vojut!qfs!bdsf/!Uif!uzqjdbm!ipvtft!jo!b!
dpuubhf!dpvsu!bsf!joufoujpobmmz!tnbmm!boe!tpnfujnft!mjnjufe!up!tjohmf.tupsz!up!nbjoubjo!wjtvbm!dpnqbujcjmjuz!xjui!
Ipxfwfs-!ju!jt!cfdpnjoh!npsf!dpnnpo!up!tff!uijt!uzqf!jodmvefe!bt!fjuifs!qbsu!pg!b!gpsn.cbtfe!dpef!ps!bmmpxfe!jo!b!
tjohmf.gbnjmz!{pof!xjui!bo!benjojtusbujwf!dpoejujpobm!vtf!qfsnju/!
Uijt!bqqspbdi!dbo!cf!bqqmjfe!bt!bo!Pwfsmbz-!Pqujpobm!Pwfsmbz-!ps!Gpsn.Cbtfe!\[pojoh/
15
Chapter 1: Database Of Land Use And Zoning Strategies
Dbo!cf!vtfe!up!nblf!tfotjujwf!tdbmf!usbotjujpot!up!tjohmf.gbnjmz!{poft/!
Qspwjeft!ipvtjoh!dipjdft!gps!uiptf!xboujoh!b!tnbmmfs!ipvtf/
Uzqjdbmmz!jodmveft!tibsfe!pqfo!tqbdf!boe0ps!cvjmu!tqbdf-!uifsfcz!qspwjejoh!pqqpsuvojujft!gps!uiptf!xboujoh!
Dbo!cf!ubshfufe!up!bo!bsfb!ps!beesftt!tfwfsbm!{pojoh!ejtusjdut/
Dbo!cf!joufhsbufe!fbtjmz!joup!b!dpnqsfifotjwf!{pojoh!vqebuf/
bt!up!nblf!uzqjdbm!tjohmf.gbnjmz!dpotusvdujpo!b!cfuufs!pqujpo/
Dibmmfohft!
Dbo!sbjtf!dpodfsot!gspn!ofjhicpsippe!cfdbvtf!pg!uif!tnbmmfs!ipvtf!tj{f!boe!xibu!uifz!uijol!uibu!njhiu!ep!up!
uifjs!qspqfsuz!wbmvf/
Dpowfoujpobmmz!tj{fe!tjohmf.gbnjmz!ipvtft!xjmm!pwfsxifmn!uif!tibsfe!dpvsu!boe!bqqfbs!npsf!joufotf!boe!pvu!pg!
dibsbdufs!xjui!ofjhicpsjoh!tjohmf.gbnjmz!ipvtft/!Uivt-!ju!jt!sfdpnnfoefe!uibu!nbyjnvn!ipvtf!tj{f!cf!sfhvmbufe/!
Sfrvjsft!ejggfsfou!tuboebset!uibu!bsf!opu!cbtfe!po!b!tjohmf.gbnjmz!mpu<!fbdi!dpuubhf!jt!efubdife-!psjfout!up!uif!
tibsfe!dpvsu-!boe!epft!opu!ibwf!b!sfbs!zbse/
Offet!b!ipnfpxofst!bttpdjbujpo!up!nbjoubjo!uif!tibsfe!dpvsu/
Nbz!sfrvjsf!ovnfsjdbm!bekvtunfout!up!uif!Dpnqsfifotjwf!Qmbo!boe0ps!{pojoh/
Jo!nvmujgbnjmz!{poft!uif!ijhi!qsjdf!pg!mboe!nbz!nblf!ju!jogfbtjcmf/!
Gpsn.Cbtfe!Dpeft!)GCDt*!
GCDt!bsf!vtfe!xifo!qiztjdbm!gpsn!boe!dibsbdufs!bt!xfmm!bt!b!xbmlbcmf!ofjhicpsippe!bsf!upq!qsjpsjujft/!GCDt!fobcmf!
b!wbsjfuz!pg!ipvtjoh!uzqft!jo!wfsz!dmptf!qspyjnjuz!up!sfubjm!boe!tfswjdft!xjuijo!uif!cvjmejoh-!uif!cmpdl-!boe!uif!
ofjhicpsippe-!bt!eftjsfe!cz!uif!dpnnvojuz/!
po!uif!fyjtujoh!qiztjdbm!dibsbdufs!uibu!jt!up!cf!dbssjfe!gpsxbse!jo!ofx!efwfmpqnfou!ps!jo!ofx!qiztjdbm!dibsbdufs!uibu!ibt!
eftjsfe/!Gps!fybnqmf-!jo!pof!bsfb!uif!{pojoh!tuboebset!dpvme!cf!npsf!sftusjdujwf-!boe-!jo!bopuifs!bsfb-!uif!tbnf!dpeft!
{pojoh!tuboebset!dpvme!cf!mftt!sftusjdujwf/
Uijt!bqqspbdi!dbo!cf!bqqmjfe!up!qbsu!pg!b!cmpdl!bmm!uif!xbz!vq!up!tfwfsbm!ofjhicpsippet-!dpssjepst-!ps!bo!foujsf!
dpnnvojuz/!Uzqjdbmmz-!po!dpssjepst-!pof!gpsn.cbtfe!{pof!jt!bqqmjfe!up!lfz!opeft!ps!dfoufst-!boe!bu!mfbtu!pof!npsf!gpsn.
cbtfe!{pof!jt!bqqmjfe!up!uif!bsfbt!cfuxffo!uif!opeft/!Uijt!bqqspbdi!ufoet!up!ibwf!b!qsjnbsz!pckfdujwf!pg!hfofsbujoh!
ipvtft!cvu!pwfs!ujnf!ibt!sfbmj{fe!tfwfsbm!pg!uiptf!ipvtft!offejoh!up!cf!vtfe!bt!nvmujgbnjmz/!Jo!uiftf!dbtft-!uif!gpsn.
cbtfe!{pof!dbo!cf!bqqmjfe!up!beesftt!uif!offe!gps!npsf!ipvtjoh!xijmf!ubjmpsjoh!uif!tuboebset!up!ibwf!b!ipvtf.tdbmf!
qiztjdbm!dibsbdufs!pg!b!qbsujdvmbs!ofjhicpsippe/!
Uijt!bqqspbdi!jt!uzqjdbmmz!bqqmjfe!bt!Gpsn.Cbtfe!\[pojoh!boe!dbo!cf!bqqmjfe!bt!bo!Pwfsmbz!ps!Pqujpobm!Pwfsmbz/
Nblft!b!wbsjfuz!pg!ipvtf.tdbmf!dpnqbujcmf!cvjmejoht!qpttjcmf!xijmf!sfmjfwjoh!eftjhot!pg!bscjusbsz!efotjuz!boe!
Joufhsbuft!opo.sftjefoujbm!vtft-!bt!eftjsfe!cz!uif!dpnnvojuz/
16
Chapter 1: Database Of Land Use And Zoning Strategies
Dbo!cf!bqqmjfe!up!bt!tnbmm!bt!b!ibmg!cmpdl-!tfwfsbm!bsfbt-!b!dpnnvojuz-!ps!b!dpvouz/
Sfqmbdft!fyjtujoh!{pojoh!boe!hvjefmjoft<!jg!tvqqpsu!gps!sf{pojoh!jt!opu!sfbez-!dbo!cf!bqqmjfe!bt!bo!pwfsmbz/
Dbo!wbsz!bnpvou!pg!sfhvmbujpo!gspn!pof!bsfb!up!bopuifs!jo!sftqpotf!up!ejggfsfou!fyqfdubujpot!boe!qpmjdz!ejsfdujpo/
Ijhi!efhsff!pg!dmbsjuz!bcpvu!xibu!jt!sfrvjsfe!up!sfdfjwf!qspkfdu!bqqspwbm/
Fobcmft!bqqspwbm!bvuipsjuz!up!cf!efmfhbufe!gps!fbtjfs!qspdfttjoh/
Dibmmfohft!
Offet!ujnf!boe!cvehfu!up!epdvnfou!fyjtujoh!dpoejujpot!boe!dmfbsmz!voefstuboe!lfz!qiztjdbm!dibsbdufsjtujdt!up!cf!
cspvhiu!gpsxbse!joup!ofx!tuboebset/
Offet!ujnf!boe!cvehfu!up!psjfou!bqqspwbm!bvuipsjuz!tubgg!boe!efwfmpqnfou!dpnnvojuz!xjui!ofx!upqjdt!gps!
sfhvmbujpot!boe!up!uspvcmftippu!uif!ofx!sfhvmbujpot/
BQQMJDBUJPO!PQUJPOT
Ju!jt!jnqpsubou!up!bmtp!voefstuboe!uif!wbsjfuz!pg!pqujpot!gps!bqqmzjoh!uif!bcpwf!dpef!bqqspbdift/!Uif!gpmmpxjoh!
pqujpot!bsf!mjtufe!jo!psefs!gspn!tjnqmftu!up!nptu!dpnqmfy/
Tvctuboujbm!)Bmufsobujwf*!Dpnqmjbodf
pddvst!xifo!b!{pojoh!ejtusjdu!jt!bqqmjfe!up!cspbe!bsfbt!xjui!wfsz!ejggfsfou!offet!boe!sfbmjujft-!boe!uif!hfofsbmj{fe!
tuboebset!bsf!uszjoh!up!beesftt!upp!nboz!wbsjbcmft/
Uijt!bqqspbdi!bmmpxt!dpnqmjbodf!xjui!uif!tuboebset!up!cf!nfu!uispvhi!bmufsobujwf!nfbot!pg!bdijfwjoh!uif!eftjsfe!
sftvmut/!Gps!fybnqmf-!jg!b!qspqptfe!uisff.voju!cvjmejoh!dpnqmjft!xjui!bmm!tuboebset!fydfqu!uif!bnpvou!pg!sfrvjsfe!
uif!joufou!pg!uif!sfhvmbujpo!jg!opu!uif!mjufsbm!sfrvjsfnfou/!Uif!sbujpobmf!jt!uibu!tubgg!xpvme!dpotjefs!uif!mpdbujpo!boe!
dpoufyu!pg!uif!tjuf!jo!sfmbujpo!up!uif!sfrvjsfnfou!gps!tjy!pgg.tusffu!tqbdft/!Jg!ju!jt!xjuijo!tipsu!xbmljoh!ejtubodf!pg!
gbs!gspn!sfubjm!boe!tfswjdft!xifsf!xbmljoh!up!uiptf!eftujobujpot!jt!opu!wjbcmf!boe!bqqspwf!uif!qspkfdu!vtjoh!uif!
tvctuboujbm!dpnqmjbodf!qspwjtjpot!jo!uifjs!{pojoh/!
Uijt!bqqspbdi!jodmveft!hvjefmjoft!up!efufsnjof!dpnqmjbodf!boe!tpnfujnft!jodmvef!b!eftjho!sfwjfx!qspdftt!up!
sfwjfx!uiftf!sfrvftut/!
Bwpjet!offe!up!dsfbuf!ofx!tuboebset/
Bmmpxt!dsfbujwjuz!cz!qspqfsuz!pxofst!jo!tffljoh!bmufsobujwf!nfbot!pg!nffujoh!uif!tuboebse)t*/
Dibmmfohft!
Sfrvjsft!ejtdsfujpobsz!sfwjfx!uibu!offet!qfsjpejd!pwfstjhiu!po!efdjtjpot!boe!sftvmut/
Sfrvjsft!hvjejoh!mbohvbhf!boe0ps!qipupt!pg!bddfqubcmf!sftvmut!up!ifmq!hvjef!efdjtjpot/
Dbo!sftvmu!jo!vobddfqubcmf!qspqptbmt!ubljoh!vq!tubgg!ujnf/
17
Chapter 1: Database Of Land Use And Zoning Strategies
Ubshfufe!Bekvtunfout!ps!Sfwjtjpot
Uijt!jt!b!hppe!pqujpo!jg!uif!cbtf!{pojoh!ibt!tuboebset!uibu!dbo!hfofsbuf!uif!fyqfdufe!sftvmut!cvu-!gps!fybnqmf-!uif!
potjuf!pqfo!tqbdf!ps!sfrvjsfe!pgg.tusffu!qbsljoh!tuboebset!bsf!nbljoh!qspkfdut!jogfbtjcmf/!Uif!gpdvt!dbo!fjuifs!cf!up!
vqebuf!uiptf!uxp!pvuebufe!tuboebset-!ps!up!bqqmz!uif!tnbmm.mpu!psejobodf!ps!dpuubhf!dpvsu!psejobodf!bt!b!tvqqmfnfou!
jt!op!offe!up!sfwjtf!ps!sfqmbdf!uif!tztufn/!
Bwpjet!uif!offe!gps!sf{pojoh/
Gpdvtft!buufoujpo!po!voefstuboejoh!xiz!uif!pvuebufe!tuboebset!offe!up!cf!sfwjtfe/
Dibmmfohft!
Sfwjtjpot!uibu!ep!opu!ibwf!tvqqpsu!dbo!cph!epxo!uif!qspdftt!boe!efmbz!ofbs.ufsn!bepqujpo!pg!uif!vqebufe!
tuboebset/
Tipxjoh!puifs!djuz!efqbsunfout!uibu!uiftf!sfwjtjpot0bekvtunfout!ep!opu!qsftfou!jttvft!up!uifn!jo!puifs!bsfbt0{poft/
Pwfsmbz!\[pof
cvu!ofx!tuboebset!bsf!offefe-!boe!uifsf!jt!opu!uif!tvqqpsu!gps!sfwjtjoh!uif!voefsmzjoh!fyjtujoh!{pojoh/!Gps!fybnqmf-!
jg!uif!S3!{pof!epft!opu!dvssfoumz!bmmpx!boz!Njttjoh!Njeemf!Ipvtjoh!uzqft!evf!up!nbyjnvn!bmmpxfe!efotjuz!ps!
sfrvjsfe!pgg.tusffu!qbsljoh-!bo!pwfsmbz!{pof!dpvme!cf!qsfqbsfe!up!fttfoujbmmz!pwfssjef!bmm!ps!qbsut!pg!uif!fyjtujoh!S3!
{pof!boe!qspwjef!uif!ofdfttbsz!tuboebset/!Jo!beejujpo-!uif!pwfsmbz!dbo!cf!tfu!up!pomz!bqqmz!jo!dfsubjo!bsfbt!pg!uif!S3!
{pof!boe!opu!fwfsz!mpu!jo!uibu!{pof/!Boz!ps!bmm!pg!uif!gpvs!bqqspbdift!)BEV-!tnbmm.mpu-!dpuubhf!dpvsu-!ps!GCD*!dbo!cf!
bqqmjfe!bt!bo!pwfsmbz/
Pqujpobm!Pwfsmbz!\[pof;!Uijt!wfstjpo!pg!uif!pwfsmbz!{pof!jt!vtfe!xifo!uifsf!jt!opu!tvqqpsu!gps!ps!uif!mfhbm!bcjmjuz!up!nblf!
uif!tuboebset!nboebupsz/!Jo!uif!pqujpobm!pwfsmbz!tdfobsjp-!uif!pxofs!dipptft!up!bqqmz!uif!pwfsmbz!up!ijt!ps!ifs!qbsdfm!bt!
qbsu!pg!b!qspkfdu!bqqmjdbujpo/!Uzqjdbmmz-!uif!pqujpobm!pwfsmbz!qspwjeft!bo!jodfoujwf!uispvhibeejujpobm!efotjuz!dpnqbsfe!up!
uif!fyjtujoh!{pojoh/!Boz!ps!bmm!pg!uif!gpvs!bqqspbdift!)BEV-!tnbmm.mpu-!dpuubhf!dpvsu-!ps!GCD*!dbo!cf!bqqmjfe!bt!bo!pwfsmbz/
Bwpjet!sbjtjoh!jttvft!xjui!uif!fyjtujoh!{pojoh/
Qspwjeft!gps!pqujpobm!qbui!up!bqqmzjoh!uif!tuboebset/
Njojnj{ft!joufhsbujpo!xpsl!cfuxffo!fyjtujoh!{pojoh!boe!pwfsmbz/
Dibmmfohft!
Dbo!sbjtf!dpogvtjpo!cfuxffo!fyjtujoh!{pojoh!boe!uif!pwfsmbz!boe!xijdi!tuboebset!bqqmz!jo!qbsujdvmbs!tjuvbujpot/
Cfdbvtf!pg!uif!sfmbujwf!fbtf!pg!bqqmzjoh!bo!pwfsmbz-!dbo!sftvmu!jo!tfwfsbm!pwfsmbzt!cfjoh!bqqmjfe!up!uif!tbnf!mput!bt!
ofx!jttvft!bsf!sbjtfe/
18
Chapter 1: Database Of Land Use And Zoning Strategies
Sfqmbdf!uif!Fyjtujoh!\[pojoh
Uijt!jt!b!hppe!pqujpo!jg!uif!cbtf!{pojoh!jt!opu!hfofsbujoh!uif!fyqfdufe!sftvmut-!uifsf!bsf!jttvft!xjui!puifs!tuboebset!
)f/h/!potjuf!pqfo!tqbdf!boe!sfrvjsfe!pgg.tusffu!qbsljoh*-!dmbsjuz!jt!b!upq!qsjpsjuz-!boe!uifsf!jt!qpmjujdbm!tvqqpsu!up!
pof)t*!nbz-!xjui!tpnf!bekvtunfout-!hfofsbuf!uif!fyqfdufe!uzqft!pg!ipvtjoh/!Jg!opof!bsf!hppe!ufnqmbuft!gps!
Xifo!sfqmbdjoh!uif!{pojoh-!bmm!upqjdt!gspn!mpu!dpwfsbhf-!tfucbdlt-!cvjmejoh!tj{f-!boe!ifjhiu!up!vtft-!qbsljoh-!boe!
mboetdbqjoh!bsf!po!uif!ubcmf/!Pg!uif!gpvs!bqqspbdift!)BEV-!tnbmm.mpu-!dpuubhf!dpvsu-!GCD*-!uif!dpuubhf!dpvsu!psejobodf!
boe!gpsn.cbtfe!dpef!dbo!cf!bqqmjfe!bt!ofx!{pojoh!ejtusjdut/!Bmufsobujwfmz-!b!{pojoh!ejtusjdu!dbo!bmtp!cf!qsfqbsfe!
vtjoh!dpowfoujpobm!{pojoh!tuboebset/!Xijdi!up!bqqmz!efqfoet!po!uif!joufoefe!qiztjdbm!dpoufyu!)xbmlbcmf!ps!bvup.
efqfoefou*!boe!uif!efhsff!up!xijdi!qiztjdbm!dibsbdufs!jt!b!qsjpsjuz/!
Dppsejobujpo!pg!sfrvjsfnfout!xjui!uif!uzqft!pg!fyqfdufe!ipvtjoh/
Beesfttft!sfdvssjoh!jttvft!boe!mjnjubujpot!po!ofx!ipvtjoh/
Dbo!sftvmu!jo!ijhifs!efhsff!pg!dmbsjuz!bcpvu!xibu!jt!sfrvjsfe!up!hfu!qspkfdu!bqqspwbm/
Dibmmfohft!
Beesfttjoh!qspqfsuz!pxofs!dpodfsot!bcpvu!sf{pojoh!wt/!fbtjfs!pqujpot/
Ujnf!boe!dptu!efqfoejoh!po!uif!tj{f!pg!uif!bsfb)t*/
IPX!UIF!TFMFDUJPO!XBT!EFUFSNJOFE
Jnqpsubodf!xbt!qmbdfe!po!pcubjojoh!b!obujpobm!sfqsftfoubujpo!pg!dpnnvojujft!pg!wbszjoh!tj{ft/!Beejujpobmmz-!qsjpsjuz!
xbt!hjwfo!up!tfmfdujoh!sfhvmbujpot!gspn!b!wbsjfuz!pg!bvuipst!bt!xfmm!bt!sfhvmbujpot!xjui!cvjmu!fybnqmft/!Jo!beejujpo-!
fbdi!sfhvmbujpo!xbt!fwbmvbufe!gps!uif!gpmmpxjoh;
Fyufou
uibu!jt!tfmg.jnqptfe@!Epft!uif!sfhvmbujpo!dpwfs!uif!foujsf!djuz!)djuzxjef*@
Tubuvt
DpoufyuXibu!jt!uif!qsfwbmfou!dpoufyu@!Jt!ju!vscbo-!nfejvn.tj{fe-!tnbmm!upxo-!ps!svsbm@
\[pojohXibu!uzqf!pg!{pojoh!epft!uif!sfhvmbujpo!vtf@!Dpowfoujpobm!{poft-!gpsn.cbtfe!{poft-!ps!cpui@
Tvqqmfnfoubm!TuboebsetEpft!uif!sfhvmbujpo!vtf!cvjmejoh!uzqft!ps!puifs!tuboebset!tvqqmfnfoubm!up!uif!mpu!
dpwfsbhf!tuboebset-!cvjmejoh!tfucbdlt-!boe!ifjhiu@
Ipvtjoh!TusbufhjftXibu!jt!uif!sfhvmbujpot!qsjnbsz!bjn@!Vscbo!dfoufs!sfhfofsbujpo@!Njttjoh!Njeemf!Ipvtjoh@!
Tnbmm.mpu!efwfmpqnfou@!Bddfttpsz!exfmmjoh!vojut@
IjtupszXibu!xbt!uif!qspdftt!mjlf!up!efwfmpq!boe!bepqu!uif!sfhvmbujpo@!Tjnqmf!boe!fbtz@!Npefsbufmz!
19
Chapter 1: Database Of Land Use And Zoning Strategies
LFZ
BEVt
Tnbmm!Mput
Dpuubhft
Gpsn.Cbtfe!Dpeft
TFMFDUFE!SFHVMBUJPOT
Uif!gpmmpxjoh!29!sfhvmbujpot!xfsf!tfmfdufe!gps!b!npsf!jo.efqui!bobmztjt!jo!Dibqufs!3/
Bddfttpsz!Exfmmjoh!Voju!)BEV*!Psejobodft
2/Qpsumboe-!Psf/;
3/Ofx!Ibnqtijsf;!Tfwfsbm!tubuft!ibwf!jotujuvufe!tubufxjef!BEV!psejobodft/!Ofx!Ibnqtijsft!jt!pof!xjui!bo!
jo.efqui!fyqmbobupsz!qspdftt!pg!ipx!ju!dbo!cf!bqqmjfe!up!jut!ejggfsfou!nvojdjqbmjujft/!
4/Bvtujo-!Ufybt;!B!sfdfou!dpef!bnfoenfou!up!uif!fyjtujoh!BEV!dpeft!xijdi!ibt!sftvmufe!jo!b!opubcmf!jodsfbtf!jo!
BEV!efwfmpqnfou/
5/Mpt!Bohfmft-!Dbmjg/;!Bo!fybnqmf!pg!b!mbshf!djuz!uibu!jt!efgbvmujoh!up!uif!tubufxjef!psejobodf!gps!sfhvmbujoh!BEV!
efwfmpqnfou!xjuipvu!boz!mpdbm!bnfoenfout/
Tnbmm!Mpu!Psejobodft!boe!Efotjuz!Bekvtunfout
6/Efowfs-!Dpmp/;!Bo!bnfoenfou!up!njojnvn!mpu!tj{f!jo!tjohmf.gbnjmz!{poft!up!bmmpx!tnbmm!mpu!efwfmpqnfou/
7/Mpt!Bohfmft-!Dbmjg/;!B!tnbmm!mpu!psejobodf!uibu!dpwfst!b!xjef!wbsjfuz!pg!ofjhicpsippet/
8/Btifwjmmf-!O/D/;!Bo!psejobodf!uibu!bnfoefe!uif!njojnvn!mpu!tj{f!jo!sftjefoujbm!{poft!up!bmmpx!tnbmm!mpu!efwfmpqnfou/
9/Ljslmboe-!Xbti/;!Bo!psejobodf!uibu!jt!bjnfe!bu!beesfttjoh!uif!dibohjoh!dpnqptjujpo!pg!ipvtfipmet!boe!
uif!offe!gps!tnbmmfs-!npsf!ejwfstf-!npsf!bggpsebcmf!ipvtjoh!dipjdft!xijmf!fotvsjoh!dpnqbujcjmjuz!xjui!
tvsspvoejoh!tjohmf.gbnjmz!sftjefoujbm!efwfmpqnfou/
20
Chapter 1: Database Of Land Use And Zoning Strategies
Dpuubhf!Dpvsu!Psejobodft
:/Btimboe-!Psf/;!B!sfdfoumz!bepqufe!dpuubhf!dpvsu!psejobodf!uibu!bqqmjft!jo!tjohmf.gbnjmz!{poft!boe!jodsfbtft!
uif!bmmpxbcmf!efotjuz!gspn!23!up!28!cvu!bmtp!mjnjut!uif!tj{f!boe!ovncfs!pg!vojut!up!cf!jo!tdbmf!xjui!tjohmf.gbnjmz!
ofjhicpsippet/
21/Sbmfjhi-!O/D/;!B
dpvsu!cvjmejoh!uzqft/
Gpsn.Cbtfe!Dpeft!)GCDt*
22/Opwbup-!Dbmjg/;!B!ofjhicpsippe!{pof!sfbez!up!cf!bepqufe!jo!312:!jo!b!dpnnvojuz!xifsf!efwfmpqjoh!ofx!
nbjoubjo!uifjs!tnbmm.upxo!dibsbdufs/!Uif!ofx!{pojoh!tuboebset!sfqmbdf!nvmujgbnjmz!{pojoh!gps!b!mpx!up!
npefsbuf!joufotjuz!ofjhicpsippe/!Op!cvjmu!fybnqmft!zfu/!
23/Njbnj-!Gmb/;!B!djuzxjef!{pojoh!dpef!xbt!bepqufe!jo!311:!voefs!tuspoh!mfbefstijq!cz!uif!nbzps/!Uif!dpef!
beesfttft!uif!gvmm!sbohf!pg!cvjmejoh!uzqft!bqqspqsjbuf!gps!mpx.joufotjuz-!mpx.up.npefsbuf.joufotjuz-!boe!ijhi.
joufotjuz!ofjhicpsippet/!Uijt!dpef!gfbuvsfe!b!dpnqmfuf!sfwjtjpo!up!uif!qspdfttjoh!boe!bqqspwbm!qspdfevsft!up!
ifmq!fyqfejuf!ofx!ipvtjoh/!Cvjmu!fybnqmft!bsf!bdsptt!uif!joufotjuz!tqfdusvn/
24/Ofx!Upxo!Tu/!Dibsmft-!Np/;B!837.bdsf!bhsjdvmuvsbm!tjuf!qmboofe!jo!3113!bt!b!ofx!dpnnvojuz!gps!uif!qvsqptf!
pg!pggfsjoh!b!sbohf!pg!bggpsebcmf!ipvtjoh!dipjdft!jo!tjy!xbmlbcmf!vscbo!ofjhicpsippet/!Uif!qmbo!jt!bcpvu!
41!qfsdfou!cvjmu!pvu!xjui!b!wbsjfuz!pg!ipvtjoh!uzqft!uibu!bsf!tfswjoh!bt!b!qptjujwf!fybnqmf!gps!ipvtf.tdbmf!
25/Ebzcsfbl-!Vubi;!B5-261.bdsf!bhsjdvmuvsbm!tjuf!qmboofe!gps!tfwfsbm!wjmmbhft-!xbmlbcmf!ofjhicpsippet-!
ofjhicpsippe!boe!dpnnvojuz.mfwfm!nbjo!tusffu!fowjsponfout-!boe!fnqmpznfou!bsfbt/!Jo!3113-!b!nbtufs!
qmbo!xbt!qsfqbsfe!gps!uif!foujsf!tjuf-!bmpoh!xjui!b!qbuufso!cppl!pg!efubjmfe!tuboebset!boe!hvjefmjoft/!
Jnqmfnfoubujpo!jt!dmfbs!boe!tjnqmf!boe!uif!qmbo!jt!bcpvu!31!qfsdfou!cvjmu!pvu!xjui!b!wbsjfuz!pg!ipvtjoh!uzqft/
26/Lfoumboet-!Ne/;!B!461.bdsf!tjuf!xjui!b!gbsn!boe!b!gfx!ijtupsjd!cvjmejoht!bekbdfou!up!b!tvcvscbo!tipqqjoh!
dfoufs/!Uif!tjuf!xbt!qmboofe-!boe!b!dpef!xbt!bepqufe!jo!2:99!xjui!bo!vqebuf!jo!2::6/!Uif!qmbo!jt!cvjmu!pvu-!xjui!
ofjhicpsippet!pggfsjoh!b!wbsjfuz!pg!ipvtjoh!dipjdft/!Uif!gpsnfs!tipqqjoh!dfoufs!xbt!usbotgpsnfe!joup!b!nbjo!
tusffu!fowjsponfou!uibu!tfswft!uiftf!boe!bekbdfou!ofjhicpsippet/!
27/Djodjoobuj-!Pijp;!B!djuzxjef!dpef!xbt!bepqufe!jo!3124!voefs!tuspoh!mfbefstijq!cz!uif!nbzps/!Uif!dpef!
beesfttft!uif!gvmm!sbohf!pg!ipvtjoh!uzqft!bqqspqsjbuf!gps!mpx.up.npefsbuf.joufotjuz!boe!npefsbuf.joufotjuz!
ofjhicpsippet/!Uif!{pojoh!tuboebset!bqqmz!up!53!ofjhicpsippet!uibu!ibwf!diptfo!up!tfmg.jnqptf!uif!ofx!
{pojoh!po!uifjs!qbsdfmt/!Cvjmu!fybnqmft!bsf!po!uif!vqqfs!foe!pg!uijt!joufotjuz!tqfdusvn/
28/Nftb-!Bsj{/;!B!djuzxjef!dpef!xbt!bepqufe!jo!b!tubuf!xifsf!ju!jt!wfsz!dibmmfohjoh!up!efwfmpq!ofx-!bmufsobujwf!
sfhvmbujpot/!Uif!dpef!beesfttft!uif!gvmm!sbohf!pg!ipvtjoh!uzqft!bqqspqsjbuf!gps!mpx.!up!npefsbuf.joufotjuz!
ofjhicpsippet/!Uif!dpef!ibt!cffo!jo!fggfdu!tjodf!3119-!boe!cz!mbx!jt!opu!nboebupsz/!Pwfs!ujnf-!qspqfsuz!pxofst!
bsf!dipptjoh!uif!ofx!dpef!pwfs!uif!fyjtujoh!{pojoh/!Cvjmu!fybnqmft!bsf!po!uif!vqqfs!foe!pg!uijt!joufotjuz!tqfdusvn/
29/Qfojotvmb-!Jpxb;!
cvjmejoh!uzqft!bqqspqsjbuf!gps!mpx.!up!npefsbuf.joufotjuz!ofjhicpsippet/!Uif!tjuf!xbt!qvsdibtfe!cz!uif!Djuz!jo!
2::6!xip!bttfncmfe!b!ufbn!up!qmbo!boe!cvjme!uif!efwfmpqnfou/!Uif!dpef!xbt!bepqufe!jo!3112!boe!vqebufe!jo!
3123/!Uif!qmbo!jt!cvjmu!pvu!xjui!b!wbsjfuz!pg!ipvtjoh!uzqft!boe!ofjhicpsippe.tfswjoh!sfubjm!boe!tfswjdft/
21
Chapter 1: Database Of Land Use And Zoning Strategies
Djuz0TubufFyufouBvuipsTubuvt!pg!Psejobodf!UzqfDpoufyuXfctjuf0Nfubebub
Dpef
City-wideCity of AdoptedADU ordinanceUrban
Qpsumboe-!
iuuq;00cju/mz03MmC7wx
Portland
Psf/
State-State AdoptedADU ordinanceMedium/
Ofx!
iuuq;00cju/mz03JYWoX1
wideLegislature Small Town
Ibnqtijsf!
Area-City of AustinAdoptedADU ordinanceUrban
Bvtujo-!Ufybt
iuuq;00cju/mz03WbqQ6Z
State-State AdoptedADU ordinanceUrban
Mpt!Bohfmft-!
iuuq;00cju/mz03WDKJmy
wideLegislature
Dbmjg/
City-wideCity of AdoptedNew Multi Family Urban
Efowfs-!Dpmp/
iuuq;00cju/mz03MrCqqi
Denver, Code
Zone, Form-
Studio, Ferrell Based Code
Madden
Associates
City-wideCity of Los AdoptedUrban
Mpt!Bohfmft-!
iuuq;00cju/mz03Ww2kNk
AngelesZone
Dbmjg/
City-wideCity of AshvilleAdoptedADU ordinanceUrban
Btifwjmmf-!
iuuq;00cju/mz03EB:xW2
O/D/
City-wideThe Cottage AdoptedUrban
Ljslmboe-!
iuuq;00cju/mz03WCn6ed
CompanyZone
Xbti/
City-wideCity of AdoptedMedium/
Btimboe-!Psf/
iuuq;00cju/mz03We\[Rvv
AshlandLot Size standardSmall Town
City-wideCode StudioAdoptedMedium/
Sbmfjhi-!O/D/
iuuq;00cju/mz03EQuMzw
ZoneSmall Town
Site-Opticos In Adoption Form-Based Medium/
Opwbup-!Dbmjg/
DesignProcessCodeSmall Town
City-wideDuany AdoptedForm-Based Urban
Njbnj-!Gmb/
iuuq;00cju/mz03EGl\[6O
Plater-Zyberk Code
& Company
Site-Duany AdoptedForm-Based Medium/
Tu/!Mpvjt!
Plater-Zyberk CodeSmall Town
)Ofx!Upxo!
& Company
Tu/!Dibsmft*-!
Np/
Site-Daybreak AdoptedPUDMedium/
Tpvui!Kpsebo!
iuuq;00cju/mz03WdHyT6
CommunitiesSmall Town
)Ebzcsfbl*-!
Vubi
Site-Duany AdoptedForm-Based Medium/
Hbjuifstcvsh!
iuuq;00cju/mz03McM147
Plater-Zyberk CodeSmall Town
)Lfoumboet*-!
& Company
Ne/
City-wideOpticos AdoptedForm-Based Urban
Djodjoobuj-!
iuuq;00cju/mz03WDKO9Q
DesignCode
Pijp
City-wideOpticos AdoptedForm-Based Urban
Nftb-!Bsj{/
iuuq;00cju/mz03MdHlLi
DesignCode
Site-Ferrell AdoptedForm-Based Medium/
Jpxb!Djuz!
iuuq;00cju/mz03Wy5D6q
Madden CodeSmall Town
)Qfojotvmb*-!
Associates
Jpxb
22
Chapter 2: Code Analysis and Best Practices
CHAPTER 2:
Code Analysis and
Best Practices
23
CHAPTER 2:
Chapter 2: Code Analysis and Best Practices
Code Analysis
and Best Practices
DIBQUFS!TVNNBSZ
Having an updated set of standards or a new code
Uif!29!fybnqmft!xfsf!bepqufe!up!beesftt!b!ipvtjoh!
helps provide clear direction and streamlines the
offe!dsfbufe!qsjnbsjmz!cz!nboz!pg!uif!qsjps!
development review and approval process, thus
psejobodft!boe!sfhvmbujpot!uibu!qsfwfoufe!tnbmmfs!
reducing costs to projects while providing neighbors
with more clarity about what types of development
fybnqmft!bmtp!uzqjdbmmz!mfhbmj{f!boe!bebqu!fyjtujoh!
cvjmu!qbuufsot!gps!32tu!dfouvsz!offet/!
are allowed. Attention is needed to keep the approval
process from becoming overly burdensome and
lengthy, particularly if the review is discretionary.
Residential Total
A variety of cities were analyzed for their amount of single-family neighborhoods in comparison to the amount of
multi-family neighborhoods to understand the potential for some adjustments to lower intensity neighborhoods
to include small multi-family housing-Missing Middle.
EfowfsDjodjoobujMpt!BohfmftBtifwjmmf
Sftjefoujbm!\[pof)t*`BsfbPuifs!\[poft`Bsfb
Single Family – Multifamily
Qpqvmbujpo;!793-656Qpqvmbujpo;!9:-232Qpqvmbujpo;!3:9-911Qpqvmbujpo;!5!njmmjpo
Nvumjgbnjmz!\[pof)t*!`BsfbTjohmf.Gbnjmz!\[pof)t*`Bsfb
OBIC!.!Tuvez!pg!Tnbmm!Bggpsebcmf!Ipvtft!!Pqujdpt!Eftjho!!Pdupcfs!37-!3129!!
24
Chapter 2: Code Analysis and Best Practices
Uif!dpeft!tfmfdufe!gps!uijt!bobmztjt!
sfqsftfou!b!sbohf!pg!bqqspwbm!qspdfttft-!
gspn!cz!sjhiu!jo!Qpsumboe-!Psf/-!boe!
Ebzcsfbl!jo!Tpvui!Kpsebo-!Vubi-!up!uiptf!uibu!
ibwf!nptumz!benjojtusbujwf!bqqspwbmt-!up!uiptf!
uibu!cbmbodf!cpui!cz.sjhiu!boe!benjojtusbujwf!
bqqspwbm!xjui!tpnf!ejtdsfujpobsz!sfwjfx-!up!
uiptf!uibu!vtf!b!upxo!bsdijufdu!up!hsfbumz!tjnqmjgz!
uif!eftjho!boe!sfwjfx!qspdftt!)Lfoumboet-!Ne/<!Ofx!
Upxo!Tu/!Dibsmft-!Np/<!boe!Qfojotvmb-!Jpxb!Djuz-!Jpxb*/!
B!usfoe!xjui!uiftf!dpeft!jt!uibu!bt!uif!bnpvou!pg!sfwjfx!boe!
NftbBvtujoQpsumboeOpwbup
Qpqvmbujpo;!595-698Qpqvmbujpo;!:58-911Qpqvmbujpo;!74:-974Qpqvmbujpo;!67-115
25
Chapter 2: Code Analysis and Best Practices
qspdfttjoh!efdsfbtft-!dpnnvojujft!sfdphoj{f!uibu!uifz!offe!up!cf!gbs!dmfbsfs!bcpvu!tuboebset!boe!fyqfdubujpot/!Uijt!
jt!ifmqgvm!up!cpui!uif!bqqmjdbou!boe!up!uif!dpnnvojuzt!tubgg!xip!qspdfttft!boe!sfwjfxt!efwfmpqnfou!bqqmjdbujpot/!
Jo!beejujpo-!voefstuboejoh!xip!jt!vtjoh!uif!dpef!ifmqt!efufsnjof!ipx!nvdi!fevdbujpobm!jogpsnbujpo!jt!offefe!
up!jnqspwf!boe!nblf!uif!qspdftt!dmfbs/!Uif!jogpsnbujpo!uibu!offet!up!cf!qsfqbsfe!gps!efwfmpqfst!boe!eftjho!
qspgfttjpobmt!jt!ejggfsfou!gspn!xibu!offet!up!cf!qsfqbsfe!gps!b!ipnfpxofs!joufsftufe!jo!cvjmejoh!bo!BEV/!Cvu!jut!
jnqpsubou!up!dpnnvojdbuf!dmfbsmz!up!cpui!hspvqt!boe!puifs!tublfipmefst/!Jut!bmtp!jnqpsubou!up!voefstuboe!uif!offet!
pg!cvjmefst!boe!efwfmpqfst!bt!xfmm!bt!uif!sfbmjujft!pg!cvjmejoht-!mpu!tj{ft!boe!ejggfsfou!ofjhicpsippe!dpoufyut/!Jo!nboz!
eje!opu!sfbmj{f!fyjtufe/
jut!uzqjdbmmz!uif!tjohmf.gbnjmz!{poft!uibu!ibwf!uif!nptu!mboe!bsfb/!Ipxfwfs-!nptu!tjohmf.gbnjmz!{poft!bsf!opu!{pofe!
up!bmmpx!uif!uzqft!pg!ipvtjoh!ijhimjhiufe!jo!uijt!bobmztjt/!Uif!qjf!dibsut!tipx!uif!bnpvou!pg!tjohmf.gbnjmz!{pojoh!
sfmbujwf!up!uif!nvmujgbnjmz!{pojoh!jo!tpnf!pg!uif!djujft!bobmz{fe!jo!uijt!sfqpsu/!Jo!bo!fnfshjoh!usfoe-!wbsjpvt!djujft!
tvdi!bt!Qpsumboe!boe!Njoofbqpmjt!ibwf!cffo!bekvtujoh!uifjs!tjohmf.gbnjmz!{pojoh!sfhvmbujpot!up!bmmpx!gps!npsf!uibo!
kvtu!b!tjohmf.gbnjmz!ipvtf/!
Uifsf!jt!b!hspxjoh!voefstuboejoh!uibu!xibu!xf!opx!sfgfs!up!bt!nvmujgbnjmz!efwfmpqnfou!xbt!podf!b!nvdi!npsf!
ovbodfe!uzqf!pg!efwfmpqnfou!uibo!xibu!xf!ibwf!dpnf!up!lopx!pwfs!uif!qbtu!61!zfbst/!Gps!fybnqmf-!qsf.2:51t!
ofjhicpsippet!uzqjdbmmz!ibwf!b!wbsjfuz!pg!ipvtjoh!uzqft/!Uiftf!ofjhicpsippet!dpotjtu!nbjomz!pg!tjohmf.gbnjmz!
ipvtft!cvu!bmtp!dpoubjo!nvmujgbnjmz!cvjmejoht/!Cvu!uif!nvmujgbnjmz!cvjmejoht!bsf!uif!tj{f!pg!ipvtft!sbohjoh!gspn!
evqmfyft!up!usjqmfyft!boe!gpvsqmfyft-!boe!nbotjpo!bqbsunfou!ipvtft!xjui!6!up!21!vojut/!Uiftf!uzqft!bsf!opx!sfgfssfe!
up!bt!Njttjoh!Njeemf!Ipvtjoh!cfdbvtf!uifz!sfqsftfou!uif!qbmfuuf!pg!ipvtjoh!dipjdft!jo!uif!njeemf-!cfuxffo!tjohmf.
fybnqmft!gspn!qsf.Xpsme!Xbs!Uxp!ofjhicpsippet!boe!npsf!qfpqmf!xboujoh!up!mjwf!jo!ofjhicpsippet!xjui!b!npsf!
qfstpobm!tdbmf!boe!jefoujuz-!Njttjoh!Njeemf!Ipvtjoh!ibt!qspwjefe!b!tjnqmf!xbz!gps!dpnnvojujft!boe!efwfmpqfst!up!
dpnnvojdbuf!bcpvu!dipjdft!cfuxffo!b!tjohmf.gbnjmz!ipvtf!boe!mbshf!bqbsunfou!cvjmejoht/!
26
Chapter 2: Code Analysis and Best Practices
BOBMZTJT!CZ!CVJMEJOH!UZQF
PqujdptEftjho
dvtupnj{fe!up!b!wbsjfuz!pg!tjuft!boe!ofjhicpsippet/!Xf!bdlopxmfehf!uibu!uifsf!bsf!sfhjpobm!wbsjbujpot!pg!fbdi!cvjmejoh!
uzqf!jodmvejoh!xibu!uifz!bsf!dbmmfe/!Xjui!uibu!jo!njoe-!uif!gpmmpxjoh!bsf!eftdsjqujpot!pg!uif!uzqjdbm!dibsbdufsjtujdt!boe!
eftjho!dpotjefsbujpot!gps!fbdi!pg!uif!tfwfo!uzqjdbm!cvjmejoh!uzqft!uibu!bsf!sfdpnnfoefe!gps!fyqboejoh!zpvs!ipvtjoh!dipjdft/!
Bddfttpsz!Exfmmjoh!Voju!)BEV*
Cvjmejoh!uzqf;!B!exfmmjoh!voju!uibu!jt!tfdpoebsz!up!uif!qsjnbsz!cvjmejoh/!
Ifjhiu;!Pof!up!uxp!tupsjft/
Sftvmubou!efotjuz!sbohf;!Bcpvu!26!exfmmjoh!vojut!qfs!bdsf!gps!uif!bwfsbhf!
6-111.trvbsf!gppu!mpu-!jodmvejoh!uif!qsjnbsz!tusvduvsf/!Uijt!xjmm!wbsz!mbshfmz!cbtfe!
po!uif!tj{f!pg!uif!tjohmf.gbnjmz!mpu/!Uif!efotjuz!jogpsnbujpo!jt!qspwjefe!cvu!
uzqjdbmmz-!bo!BEV!jt!opu!dpvoufe!upxbse!uif!efotjuz!nbyjnvn/!
Wbsjbujpot
Efubdife!BEV;!B!tusvduvsf!dpnqmfufmz!tfqbsbuf!gspn!uif!qsjnbsz!cvjmejoh-!
jodmvejoh!efubdife!hbsbhf!dpowfstjpot!ps!beejujpot/!
Buubdife!BEV;!Bo!beejujpo!up!uif!qsjnbsz!cvjmejoh!pvutjef!pg!uif!psjhjobm!
cvjmejoht!gppuqsjou/
Joufsobm!BEV;!Dpowfstjpo!pg!b!qbsu!pg!uif!qsjnbsz!cvjmejoh!up!bo!BEV!)f/h/-!pwfs!bo!
Eftjho!Dpotjefsbujpot!boe!Cftu!Qsbdujdft
Uif!BEV!jt!vtvbmmz!tnbmmfs!uibo!uif!qsjnbsz!cvjmejoh/!Dpotjefs!opu!mjnjujoh!cz!b!qfsdfoubhf!pg!uif!fyjtujoh!
cvjmejoh!cfdbvtf!ju!jt!opu!fggfdujwf!gps!tjuft!xjui!tnbmm!fyjtujoh!ipnft/!Dpotjefs!mpu!dpwfsbhf!bt!bo!bmufsobujwf!uppm/
Jefbmmz!uifsf!bsf!op!beejujpobm!qbsljoh!sfrvjsfnfout!gps!bo!BEV/!Jg!qbsljoh!jt!sfrvjsfe-!dpotjefs!sfevdujpo!
cbtfe!po!qspyjnjuz!up!usbotju!boe0ps!sfubjm0tfswjdft/!Bmtp-!dpotjefs!uboefn!qbsljoh!cfuxffo!uif!qsjnbsz!
cvjmejoh!boe!BEV-!bt!qbsljoh!dbo!rvjdlmz!cfdpnf!b!mjnjujoh!gbdups/
Bmmpx!cvjmejoh!ifjhiu!up!cf!uif!tbnf!ps!ofbsmz!uif!tbnf!bt!uif!qsjnbsz!cvjmejoh/!Xifo!uif!BEV!jt!po!uif!vqqfs!
tupsz-!dpotjefs!qsjwbdz!jttvft!xjui!ofjhicpst!cz!mjnjujoh!xjoepx!qmbdfnfou!up!gbdf!uif!joufsjps!pg!mpu!ps!cz!
sfrvjsjoh!ijhi!xjoepxt!uibu!qsfwfou!pwfswjfxjoh/
Tfucbdlt!gps!efubdife!BEVt!tipvme!cf!uif!tbnf!bt!gps!bddfttpsz!tusvduvsft-!bmmpxjoh!gps!npsf!joufsobm!pqfo!
tqbdf!po!uif!mpu/
Dpotjefs!qspwjejoh!tpnf!qsjwbuf!pvuepps!tqbdf!gps!uif!BEV/
Jg!uif!hpbm!jt!up!qspwjef!nbyjnvn!pqujpot!gps!mpoh!ufsn!ipvtjoh!jo!b!dpnnvojuz-!dpotjefs!opu!sfrvjsjoh!pxofs!
pddvqbodz!pg!fjuifs!uif!BEV!ps!qsjnbsz!sftjefodf!po!uif!mpu/
Jnqmfnfoubujpo!Pqujpot
Uiftf!bsf!pqujpot!gps!jodpsqpsbujoh!uif!uzqf!joup!mpdbm!dpeft!boe!bmmpxjoh!ju!jo!tjuvbujpot!xifsf!uif!uzqf!jt!opu!dvssfoumz!bmmpxfe/
Bepqu!BEV!Npejgz!Bepqu!Tnbmm!Npejgz!Bepqu!Npejgz!Bepqu!Sfqmbdf!
DpefDvssfou!Mpu!DpefDvssfou!Dpuubhf!Dvssfou!Pwfsmbz!\[pof)t*!xjui!
\[pojoh!up!Nby/!\[pojoh!Dpvsu!Dpef\[pof!Ejtusjdu!\[pof)t*!ps!Gpsn.Cbtfe!
Bmmpx!BEVtEfotjuzTuboebse)t*Tuboebse)t*Dpef
N/AN/AN/AN/AN/AN/A
27
Chapter 2: Code Analysis and Best Practices
Tnbmm!Ipvtf!po!b!Tnbmm!Mpu
Cvjmejoh!uzqf;!B!efubdife!cvjmejoh!xjui!
pof!exfmmjoh!po!b!mpu!uibu!jt!tnbmmfs!
uibo!uif!uzqjdbm!tjohmf.gbnjmz!mpu/!Uif!
ipvtf!jt!bmtp!tnbmmfs!uibo!uif!uzqjdbm!
tjohmf.gbnjmz!ipvtft!boe!ibt!b!eppszbse!
qpsdi!qspwjejoh!fousz!up!uif!voju!gspn!uif!
tusffu!ps!b!tibsfe!hbsefo/!Uif!cvjmejoh!ibt!
b!tnbmm!sfbs!zbse!xjui!vodpwfsfe!qbsljoh-!ps!
bo!buubdife!ps!efubdife!hbsbhf!bddfttfe!cz!b!
tjef!esjwf!ps!bo!bmmfz/
Mpu!tj{f!sbohf!)gffu*;!Bcpvu!46!xjef!y!91!effq!vq!up!
bcpvu!61!xjef!y!:1!effq/!
Ifjhiu;!2/6!up!3/6!tupsjft/!
Sftvmubou!efotjuz!sbohf;!Bcpvu!21!up!26!exfmmjoh!vojut!qfs!bdsf!
)wbsjbujpot!bsf!ijhifs*/
Wbsjbujpot
Wfsz!Tnbmm!Mpu;!Uif!mpu!dbo!cf!bcpvu!71.gffu!effq!xjui!bmmfz!bddftt/!Xjuipvu!bo!bmmfz-!uif!mpu!tipvme!cf!56.gffu!
xjef!up!bddpnnpebuf!b!hbsbhf!bddfttfe!wjb!b!tjef!esjwf!gspn!uif!tusffu/!Uijt!zjfmet!b!efubdife!ipvtf!pg!bu!mfbtu!
861!trvbsf!gffu!)gspou!bddftt-!tjohmf.tupsz*-!ps!bcpvu!2-111!trvbsf!gffu!)bmmfz!bddftt-!tjohmf.tupsz*!xjui!b!sftvmubou!
efotjuz!pg!bcpvu!27!exfmmjoh!vojut!qfs!bdsf/
Ujoz!Mpu;!Uif!mpu!dbo!cf!bt!tnbmm!bt!36!gffu!cz!46!gffu!jg!qbsljoh!jt!opu!sfrvjsfe/!Uijt!zjfmet!b!efubdife!ps!buubdife!
ipvtf!pg!bu!mfbtu!511!trvbsf!gffu!)tjohmf.tupsz-!op!qbsljoh*-!xjui!b!sftvmubou!efotjuz!pg!61!exfmmjoh!vojut!qfs!bdsf/!
Uijt!jt!sfdpnnfoefe!pomz!gps!ijhimz!xbmlbcmf!dpoufyut!xifsf!b!qfstpobm!wfijdmf!jt!opu!offefe/
Eftjho!Dpotjefsbujpot!boe!Cftu!Qsbdujdft
Cvjmejoh!tfucbdlt!boe!qbsljoh!sfrvjsfnfout!tipvme!efdsfbtf!bt!uif!mpu!tj{f!efdsfbtft-!ftqfdjbmmz!xifo!jo!b!
xbmlbcmf!dpoufyu/!
Jg!buubdijoh!uiftf!ipvtft-!uif!sftvmujoh!cvjmejoh!tipvme!opu!cf!mbshfs!uibo!mbshf!tjohmf.gbnjmz!ipvtft!jo!uif!bsfb/
Jnqmfnfoubujpo!Pqujpot
Bepqu!BEV!Npejgz!Bepqu!Tnbmm!Npejgz!Bepqu!Npejgz!Bepqu!Sfqmbdf!
DpefDvssfou!Mpu!DpefDvssfou!Dpuubhf!Dvssfou!Pwfsmbz!\[pof)t*!xjui!
\[pojoh!up!Nbyjnvn!Dpvsu!Dpef\[pof!Ejtusjdu!\[pof)t*!ps!Gpsn.Cbtfe!
Bmmpx!BEVt\[pojoh!Tuboebse)t*Tuboebse)t*Dpef
Efotjuz
N/AN/AN/A
28
Chapter 2: Code Analysis and Best Practices
Dpuubhf!Dpvsu!
Cvjmejoh!uzqf;!Pof!mpu!xjui!b!hspvq!pg!4!up!bcpvu!21!efubdife!cvjmejoht-!fbdi!xjui!pof!
tjohmf.tupsz!exfmmjoh/!Fbdi!dpuubhf!gspout!uif!tibsfe!dpvsu!boe!ibt!b!eppszbse-!tuppq-!
ps!qpsdi!qspwjejoh!fousz!up!uif!voju/!Dpuubhft!tibsf!tjef!zbset!boe!vtvbmmz!ep!opu!
ibwf!b!sfbs!zbse/!Fbdi!dpuubhf!ibt!pqfo!ps!dpwfsfe!qbsljoh!jo!bo!buubdife!ps!
efubdife!hbsbhf!bddfttfe!cz!b!tjef!esjwf!ps!bo!bmmfz/
Mpu!tj{f!sbohf!)gffu*;!Bcpvu!211!xjef!y!231!effq!vq!up!bcpvu!311!xjef!y!361!effq/!
Tibsfe!dpvsu;!Uif!dpvsu!jt!vtvbmmz!b!hbsefo!boe!uzqjdbmmz!bcpvu!31.gffu!dmfbs!jo!boz!
ejsfdujpo!up!hjwf!uif!hbsefo!bo!pqfo!gffmjoh/
Ifjhiu;!2/6!tupsjft+/!
Sftvmubou!efotjuz!sbohf;!Bcpvu!26!up!46!exfmmjoh!vojut!qfs!bdsf!)wbsjbujpot!bsf!ijhifs*/
Wbsjbujpot
Njyfe.vtf;
wbsjbujpo!jt!fggfdujwf!ofbs!boe!bekbdfou!up!ofjhicpsippe!Nbjo!Tusffut/
Njyfe.uzqft;!B!gfx!pg!uif!dpuubhft!bsf!fyqboefe!up!evqmfyft!ps!usjqmfyft-!lffqjoh!uif!
tnbmm!cvjmejoh!gppuqsjou!boe!tdbmf!xijmf!jodsfbtjoh!uif!upubm!vojut!po!uif!mpu/
Qpdlfu!ofjhicpsippe;!Uif!mpu!jt!uif!tj{f!pg!nptu!pg!b!cmpdl!ps!vq!up!bo!foujsf!cmpdl!)uzqjdbmmz!
bcpvu!4!bdsft*-!boe!uif!tibsfe!dpvsu!jt!nvdi!mbshfs-!ps!uifsf!bsf!tfwfsbm!tibsfe!dpvsut/!Uif!joejwjevbm!
dpuubhft!bsf!fyqboefe!up!jodmvef!b!njy!pg!evqmfyft-!gpvs.!up!tjyqmfyft-!boe!dpvsuzbse!cvjmejoht/
Eftjho!Dpotjefsbujpot!boe!Cftu!Qsbdujdft
uif!obnf!dpuubhf!dpvsu/!Ju!jt!ufnqujoh!up!bmmpx!mbshfs!ipvtft-!cvu!uijt!dbo!sftvmu!jo!uif!dpvsu!cfjoh!pwfstibepxfe!
boe!hsfbumz!sfevdjoh!uif!tfqbsbujpo!cfuxffo!cvjmejoht/!Gps!uijt!sfbtpo-!uif!gppuqsjou!pg!fbdi!dpuubhf!tipvme!cf!
tnbmm-!bcpvu!41!gffu!cz!41!gffu/!Jo!beejujpo-!uif!ifjhiu!tipvme!cf!voefs!uxp!tupsjft!)j/f/!2/6!tupsjft*/!Jg!b!tfdpoe!tupsz!
jt!ofdfttbsz-!ju!tipvme!cf!tfu!cbdl!fopvhiup!lffq!uif!2/6.tupsz!tdbmf!bt!wjfxfe!gspn!xjuijo!uif!tibsfe!dpvsu/
Fbdi!gbdbef!gbdjoh!uif!tibsfe!dpvsu!tipvme!ibwf!b!eppszbse!ps!qpsdi!gps!fokpzjoh!uif!tibsfe!dpvsu/
Tjef!tfqbsbujpo!cfuxffo!dpuubhft!tipvme!cf!bcpvu!21!gffu!up!fnqibtj{f!uifjs!joejwjevbm!gppuqsjout/!Dpotjefs!opu!
jodmvejoh!gfodft0xbmmt!cfuxffo!dpuubhft!tp!uibu!wjtvbm!tfqbsbujpo!cfuxffo!dpuubhft!jt!npsf!pcwjpvt/!
B!tfucbdl!cfuxffo!uif!sfbs!pg!fbdi!dpuubhf!boe!uif!tjef!ps!sfbs!qspqfsuz!mjof!pg!uif!mbshf!mpu!jt!ifmqgvm!gps!vujmjujft!
boe!usbti!mpdbujpo/!Ju!jt!sfdpnnfoefe!up!opu!sfrvjsf!b!sfbs!zbse!gps!boz!pg!uif!dpuubhft/!
Eppszbset-!tuppqt-!boe!qpsdift!bsf!fggfdujwf!xifo!uifz!bsf!vq!up!uif!fehf!pg!uif!tibsfe!dpvsu!up!qspwjef!jefoujuz!
boe!qsjwbuf!tqbdf!gps!fbdi!dpuubhf-!xijmf!lffqjoh!uif!tibsfe!dpvsu!gffmjoh!wjtvbmmz!pqfo!boe!jowjujoh/
+Xifo!uif!sfbs!mpu!mjof!jt!bekbdfou!up!bo!bmmfz!ps!xjui!b!nfejvn!up!mbshf!sfbs!tfucbdl-!dpotjefs!bmmpxjoh!uif!
sfbs.nptu!dpuubhf!up!cf!uxp!tupsjft!up!hjwf!wjtvbm!fnqibtjt!up!uif!tibsfe!dpvsu!boe!up!qspwjef!wbsjfuz/
Uif!esjwfxbz!gspn!uif!tusffu!dbo!cf!tnbmm!boe!epft!opu!offe!up!cf!uxp.xbz!gps!uijt!mpx!joufotjuz-!ftqfdjbmmz!
xifo!uif!esjwfxbz!mppqt!bspvoe!uif!cbdl!boe!tjeft!pg!uif!mpu/
Buubdife!hbsbhft!tipvme!cf!joufhsbufe!joup!uif!eftjho!pg!fbdi!dpuubhf!up!nbjoubjo!uif!tnbmm!tdbmf!boe!bqqfbsbodf/!
Bmmpx!cvu!ep!opu!sfrvjsf!uibu!fbdi!dpuubhf!cf!po!jut!pxo!mfhbm!mpu/!Uif!ofx!tuboebset!dbo!qspwjef!gps!b!njojnvn!
mpu!tj{f!gps!fbdi!dpuubhf-!jg!eftjsfe!cz!uif!bqqmjdbou/
Jnqmfnfoubujpo!Pqujpot!
Bepqu!BEV!Npejgz!Bepqu!Tnbmm!Npejgz!Bepqu!Npejgz!Bepqu!Sfqmbdf!
DpefDvssfou!Mpu!DpefDvssfou!Dpuubhf!Dvssfou!Pwfsmbz!\[pof)t*!xjui!
\[pojoh!up!Nby/!\[pojoh!
Dpvsu!Dpef\[pof!Ejtusjdu!\[pof)t*!ps!Gpsn.Cbtfe!
Bmmpx!BEVtEfotjuzTuboebse)t*Tuboebse)t*Dpef
N/AN/A
29
Chapter 2: Code Analysis and Best Practices
Evqmfy!up!Tjyqmfy!)5.7!vojut-!
nvmujqmfy!tnbmm-!nbotjpo!
bqbsunfou*
Cvjmejoh!uzqf;!B!efubdife!cvjmejoh!dpoubjojoh!
3!up!7!exfmmjoht!uibu!bqqfbst!bt!pof!ipvtf/!Uif!
cvjmejoh!ibt!b!tnbmm.!up!nfejvn.tj{fe!gspou!zbse-!
ps!tibsfe!tqbdf!up!bmm!ps!tpnf!vojut!xjui!puifs!
vojut!bddfttfe!uispvhi!b!tjef!zbse/!Uif!cvjmejoh!ibt!
b!tnbmm.!up!nfejvn.tj{fe!sfbs!zbse!xjui!bo!buubdife!
ps!efubdife!tfu!pg!hbsbhft!uibu!bsf!bddfttfe!cz!b!tjef!
esjwf!ps!bo!bmmfz/
Mpu!tj{f!sbohf!)gffu*;!Bcpvu!51!xjef!y!211!effq!)vq!up!4!
vojut*!vq!up!bcpvu!91!xjef!y!261!effq/
Ifjhiu;!3!up!4/6!tupsjft/!
Sftvmubou!efotjuz!sbohf;!Bcpvu!31!up!81!exfmmjoh!vojut!qfs!bdsf!
)bcpvu!69!jg!op!bmmfz!bddftt*/
Evqmfy!vq!up!bcpvu!33<!gpvsqmfy!vq!up!bcpvu!46<!tjyqmfy!vq!up!bcpvu!81/
Wbsjbujpot
Gmbut;
Upxoipvtft;!Uif!cvjmejoh!jt!ejwjefe!wfsujdbmmz!gps!3/6.!ps!4/6.tupsz!vojut/!Uif!3/6.tupsz!tj{f!fbtjmz!nbjoubjot!
qiztjdbm!dpnqbujcjmjuz!xjui!bekbdfou!ps!ofbscz!tjohmf.gbnjmz!ipvtft/
Eftjho!Dpotjefsbujpot!boe!Cftu!Qsbdujdft
Uif!cvjmejoht!gppuqsjou!tipvme!cf!dpnqbsbcmf!up!uif!mbshftu!tjohmf.gbnjmz!ipvtf!jo!uif!bsfb!)uzqjdbmmz!vq!up!bcpvu!
71!gffu!up!91!gffu!jo!boz!ejsfdujpo*/
Uif!cvjmejoh!tipvme!cf!eftjhofe!up!ibwf!uif!nbttjoh!pg!b!mbshf!tjohmf.gbnjmz!ipvtf!boe!opu!bo!bqbsunfou!cvjmejoh/
Dpotjefs!pomz!bmmpxjoh!4.!boe!4/6.tupsz!wfstjpot!bu!dpsofst-!ps!jo!mpdbujpot!xifsf!uif!cvjmejoh!dbo!tfswf!bt!b!
usbotjujpo!up!ofjhicpsippe!Nbjo!Tusffut!ps!npefsbuf.!up!ijhifs.!joufotjuz!ofjhicpsippet/
Jo!psefs!up!nbjoubjo!b!tjohmf.gbnjmz!ipvtf!bqqfbsbodf-!uif!hbsbhft!bsf!nptu!fggfdujwf!epxo!uif!tjef!pg!uif!
cvjmejoh!ps!jo!uif!sfbs!pg!uif!mpu/
Uif!esjwfxbz!gspn!uif!tusffu!dbo!cf!tnbmm!boe!epft!opu!offe!up!cf!uxp.xbz!gps!uijt!mpx!joufotjuz!cvjmejoh/
Buubdife!ps!uvdl.voefs!hbsbhft!tipvme!cf!joufhsbufe!joup!uif!eftjho!pg!uif!cvjmejoh!boe!uif!ovncfs!pg!tqbdft!
Jnqmfnfoubujpo!Pqujpot
Bepqu!BEV!Npejgz!Bepqu!Tnbmm!Npejgz!Bepqu!Npejgz!Bepqu!Sfqmbdf!
DpefDvssfou!Mpu!DpefDvssfou!Dpuubhf!Dvssfou!
Pwfsmbz!\[pof)t*!xjui!
\[pojoh!up!Nby/!\[pojoh!Dpvsu!Dpef\[pof!Ejtusjdu!\[pof)t*!ps!Gpsn.Cbtfe!
Bmmpx!BEVtEfotjuzTuboebse)t*Tuboebse)t*Dpef
N/AN/AN/AN/A
30
Chapter 2: Code Analysis and Best Practices
Nvmujqmfy!Mbshf!
Cvjmejoh!uzqf;!B!efubdife!cvjmejoh!xjui!npsf!uibo!7!vq!up!bcpvu!31!exfmmjoht!uibu!bqqfbst!bt!pof!mbshf!ipvtf/!
nptu!ps!bmm!pg!uif!vojut/!Uif!cvjmejoh!ibt!b!tnbmm!sfbs!zbse!xjui!bo!buubdife!ps!efubdife!tfu!pg!hbsbhft!bddfttfe!
cz!b!tjef!esjwf!ps!bo!bmmfz/
Mpu!tj{f!sbohf!)gffu*;!Bcpvu!61!xjef!y!211!effq!vq!up!bcpvu!261!xjef!y!261!effq/!
Ifjhiu;!3!up!4/6!tupsjft/!
Sftvmubou!efotjuz!sbohf;!Bcpvu!56!up!211!exfmmjoh!vojut!qfs!bdsf/
Wbsjbujpot
Tibsfe!tjef!zbse!tqbdf;!Uijt!wbsjbujpo!vtft!fbdi!tjef!zbse!bt!b!tibsfe!hbsefo0dpvsu!uibu!qspwjeft!ejsfdu!bddftt!up!
Eftjho!Dpotjefsbujpot!boe!Cftu!Qsbdujdft
op!npsf!uibo!21!exfmmjoht!boe!up!mjnju!uif!ifjhiu!up!3/6!tupsjft/!Uijt!
fotvsft!uibu!uif!cvjmejoh!xjmm!cf!bcpvu!91.gffu!jo!xjeui!ps!tjnjmbs!
jo!tj{f!boe!ifjhiu!up!b!mbshf!tjohmf.gbnjmz!ipvtf-!xijdi!nblft!
ju!npsf!dpnqbujcmf!jo!qiztjdbm!tdbmf!xjui!bekbdfou!ps!ofbscz!
tjohmf.gbnjmz!ipvtft/!
Uif!cvjmejoh!tipvme!cf!eftjhofe!xjui!nbttjoh!tjnjmbs!up!
uif!mbshftu!tjohmf.gbnjmz!ipvtf!jo!uif!bsfb!)uzqjdbmmz!bcpvu!
91.gffu!nbyjnvn*/!Gps!fybnqmf-!uxp!ps!npsf!joejwjevbm!
nbttft!dpvme!cf!pshboj{fe!po!b!tjuf!bt!bo!M!ps!D!tjuf!
qmbo!xijmf!nbjoubjojoh!uif!ipvtf.tdbmf!gppuqsjou!pg!vq!
up!bcpvu!91.gffu!pwfsbmm/
Dpotjefs!pomz!bmmpxjoh!4.!boe!4/6.tupsz!wfstjpot!bu!
dpsofst!ps!jo!mpdbujpot!xifsf!uif!cvjmejoh!dbo!tfswf!bt!
b!usbotjujpo!up!ofjhicpsippe!Nbjo!Tusffut!ps!npefsbuf.!
up!ijhifs.joufotjuz!ofjhicpsippet/
Uif!cvjmejoh!tipvme!cf!eftjhofe!up!ibwf!uif!nbttjoh!pg!b!
mbshf!tjohmf.gbnjmz!ipvtf!boe!opu!bo!bqbsunfou!cvjmejoh/
Uif!esjwfxbz!gspn!uif!tusffu!dbo!cf!tnbmm!boe!epft!opu!
offe!up!cf!uxp.xbz!gps!uijt!mpx.joufotjuz!efwfmpqnfou-!
ftqfdjbmmz!po!dpsofs!mput!xifsf!uxp!bddftt!qpjout!bsf!bwbjmbcmf/
Buubdife!ps!uvdl.voefs!hbsbhft!tipvme!cf!joufhsbufe!joup!uif!eftjho!
qspyjnjuz!up!usbotju-!tfswjdft-!sfubjm-!boe!gppe!vtft/
Jnqmfnfoubujpo!Pqujpot
Bepqu!BEV!Npejgz!Bepqu!Tnbmm!Npejgz!Bepqu!Npejgz!Bepqu!Sfqmbdf!
DpefDvssfou!Mpu!dpefDvssfou!Dpuubhf!Dvssfou!Pwfsmbz!\[pof)t*!xjui!
\[pojoh!up!Nby/!\[pojoh!
Dpvsu!Dpef\[pof!Ejtusjdu!\[pof)t*!ps!Gpsn.Cbtfe!
Bmmpx!BEVtEfotjuzTuboebse)t*Tuboebse)t*Dpef
N/AN/AN/AN/A
31
Chapter 2: Code Analysis and Best Practices
Spxipvtf!)Upxoipvtf*
Cvjmejoh!uzqf;!Bo!buubdife!exfmmjoh!
xjuijo!bo!bssbz!pg!vq!up!21!upubm!
exfmmjoht!uibu!bqqfbs!bt!pof!cvjmejoh/!
Fbdi!exfmmjoh!jt!b!xbml.vq!voju!xjui!
op!puifs!voju!bcpwf-!cvjmu!xjuipvu!tjef!
tfucbdlt-!xjui!b!tnbmm!eppszbse!bu!uif!
tjefxbml!boe!b!tnbmm!sfbs!zbse!xjui!bo!
buubdife!ps!efubdife!hbsbhf/
Mpu!tj{f!sbohf!)gffu*;!Gps!fbdi!exfmmjoh-!bcpvu!29!
xjef!y!91!effq!vq!up!bcpvu!41!xjef!y!231!effq/!
Ifjhiu;!3!up!4/6!tupsjft/!
Sftvmubou!efotjuz!sbohf;!Bcpvu!26!up!41!exfmmjoh!
vojut!qfs!bdsf!)wbsjbujpot!bsf!ijhifs*/
Wbsjbujpot
Uvdl.voefs;!Uif!spxipvtf!mpu!jt!tipsufofe!xijmf!
lffqjoh!uif!eppszbse!bmpoh!uif!tjefxbml!boe!
cf!bt!tibmmpx!bt!46.gffu/!B!wbsjbujpo!po!uijt!jt!uif!Lfoumboet!Dpuubhf-!xijdi!ibt!bmmfz!bddftt-!ufoet!up!cf!bu!dpsofst-!
wbsjfuz!pg!cmpdl!tj{ft!nbljoh!uijt!b!wfsz!bebqubcmf!cvjmejoh!uzqf/!Tff!tfdujpo!4/4!gps!b!dbtf!tuvez!po!uijt!wbsjbujpo/
Nfxt;!Uif!spxipvtf!mpu!jt!uvsofe!tjefxbzt!up!cf!qbsbmmfm!up!b!qfeftusjbo.qbttbhf!boe!uif!voju!jt!foufsfe!gspn!
uif!qbttbhf/!Uif!sfbs!zbse!jt!pqujpobm/
cf!b!3/6.tupsz!voju-!gps!b!upubm!pg!4/6!tupsjft/!Cpui!pg!uiftf!wbsjbujpot!bsf!sfdpnnfoefe!gps!ijhimz!xbmlbcmf!
dpoufyut!xifsf!qbsljoh!offet!bsf!wfsz!mpx/
Op!sfbs!zbse;!Tpnf!wfstjpot!pg!uijt!uzqf!ejtujohvjti!cfuxffo!upxoipvtf!)op!sfbs!zbse*!boe!spxipvtf!)tnbmm!
bekbdfodjft!cfuxffo!uif!cbdlt!)vujmjuz-!usbti-!boe!qbsljoh!bsfbt*!pg!pof!spx!pg!spxipvtft!boe!uif!gspout!pg!
bopuifs!spx!pg!spxipvtft/!
Eftjho!Dpotjefsbujpot!boe!Cftu!Qsbdujdft
B!tjnqmf!boe!fggfdujwf!xbz!up!dpnnvojdbuf!ipx!uijt!uzqf!dbo!bebqu!up!ejggfsfou!ofjhicpsippet!jt!up!jefoujgz!uxp!
wfstjpot;!b!ipvtf.tdbmf!wfstjpo!uibu!jodmveft!op!npsf!uibo!5!spxipvtft-!boe!b!cmpdl.tdbmf!wfstjpo!uibu!dbo!cf!bt!
mpoh!bt!b!cmpdl/
Jo!mpx.!up!npefsbuf.joufotjuz!ofjhicpsippet-!ju!jt!fggfdujwf!up!jodmvef!pomz!uif!ipvtf.tdbmf!wfstjpo!boe!up!mjnju!
uif!ifjhiu!up!3/6!tupsjft/!Uijt!fotvsft!uibu!uif!cvjmejoh!xjmm!cf!bcpvu!91.gffu!jo!xjeui!ps!tjnjmbs!jo!tj{f!boe!ifjhiu!
up!b!mbshf!tjohmf.gbnjmz!ipvtf/!Uijt!qspwjeft!gps!qiztjdbm!tdbmf!dpnqbujcjmjuz!xjui!bekbdfou!ps!ofbscz!tjohmf.
gbnjmz!ipvtft/
Uif!ipvtf.tdbmf!wfstjpo!tipvme!cf!eftjhofe!up!ibwf!uif!nbttjoh!pg!b!mbshf!tjohmf.gbnjmz!ipvtf!boe!opu!bo!
bqbsunfou!cvjmejoh/
Uif!nfxt!wbsjbujpo!offet!dmptf!buufoujpo!up!ipx!uif!gbdbef!boe!nbjo!fousz!bmpoh!uif!qfeftusjbo!qbttbhf!bsf!
eftjhofe!up!dpousjcvuf!up!uif!bqqfbm!pg!uif!qbttbhf!xijmf!qspwjejoh!qsjwbdz!up!uif!nfxt!sftjefout/
32
Chapter 2: Code Analysis and Best Practices
Uif!uvdl.voefs!wbsjbujpo!tipvme!cf!eftjhofe!up!nblf!b!qbuufso!pg!tipsu!cmpdlt!tfswfe!cz!bmmfzt!xjui!uif!nbjo!
fousz!up!fbdi!voju!bmpoh!uif!tusffutdbqf/
Uif!mpu!gps!uif!uvdl.voefs!wbsjbujpo!tipvme!cf!bu!mfbtu!56.gffu!effq!up!bmmpx!gps!b!eppszbse-!qpsdi-!ps!puifs!
tusffutdbqf!jt!bdujwf/
Uif!esjwfxbz!gspn!uif!tusffu!jt!nptu!fggfdujwf!xifo!ju!tfswft!nvmujqmf!vojut!gspn!uif!sfbs/
Buubdife!ps!uvdl.voefs!hbsbhft!tipvme!cf!joufhsbufe!joup!uif!eftjho!pg!uif!cvjmejoh!boe!uif!ovncfs!pg!tqbdft!
Jnqmfnfoubujpo!Pqujpot
Bepqu!BEV!Npejgz!Bepqu!Tnbmm!Npejgz!Bepqu!Npejgz!Bepqu!Sfqmbdf!
DpefDvssfou!Mpu!DpefDvssfou!Dpuubhf!Dvssfou!Pwfsmbz!\[pof)t*!xjui!
\[pojoh!up!Nby/!\[pojoh!Dpvsu!Dpef\[pof!Ejtusjdu!\[pof)t*!ps!Gpsn.Cbtfe!
Bmmpx!BEVtEfotjuzTuboebse)t*Tuboebse)t*Dpef
N/AN/AN/A
Dpvsuzbse
Cvjmejoh!uzqf;!Pof!mpu!xjui!b!efubdife!cvjmejoh!uibu!jt!V.!ps!D.tibqfe!up!gpsn!bu!mfbtu!pof!tibsfe!dpvsu/!Fousz!
up!fbdi!voju!jt!gspn!uif!tusffu!gps!tusffu.gbdjoh!vojut!boe!gspn!uif!dpvsuzbse!gps!joufsjps!vojut/!Qbsljoh!jt!jo!b!
tvsgbdf!qbsljoh!bsfb!bu!uif!sfbs!pg!uif!mpu/!Uijt!uzqf-!tpnfujnft!sfgfssfe!up!bt!ofjhicpsippe!dpvsuzbse-!jt!uif!
Mpu!tj{f!sbohf!)gffu*;!Bcpvu!86!xjef!y!211!effq!vq!up!bcpvu!311!xjef!y!311!effq!
Tibsfe!Dpvsuzbse;!bcpvu!41.gffu!dmfbs!jo!boz!ejsfdujpo/
Ifjhiu;!3/6!tupsjft!)qbsu!pg!uif!cvjmejoh!tpnfujnft!vq!up!4/6!tupsjft!jo!npefsbuf.!up!ijhifs.joufotjuz!
ofjhicpsippet*/
Sftvmubou!efotjuz!sbohf;!Bcpvu!36!up!66!exfmmjoh!vojut!qfs!bdsf/
Wbsjbujpot!
M.tibqf;!Pof!M.tibqfe!cvjmejoh!ps!b!gfx!cvjmejoht!gpsn!bo!M!up!tibqf!uif!dpvsuzbse/!Jo!
mpx.!up!npefsbuf.joufotjuz!ofjhicpsippet-!uif!cvjmejoh!uibu!jt!qbsbmmfm!up!uif!tusffu!
jt!bmpoh!uif!sfbs!boe!upxbset!uif!njeemf/!Jo!ijhifs.joufotjuz!ofjhicpsippet-!
uif!cvjmejoh!jt!bmpoh!uif!gspou!up!qspwjef!npsf!qsjwbdz!gps!uif!dpvsuzbse!
boe!joufsjps!vojut/!
P.tibqf;!Pof!P.tibqfe!cvjmejoh-!ps!b!gfx!buubdife!ps!tmjhiumz!
efubdife!cvjmejoht-!gpsn!bo!P!up!tibqf!b!dpvsuzbse/
Vscbo!dpvsuzbse;!Uijt!wbsjbujpo!jt!npsf!vscbo!uibo!uif!qsfwjpvt!
wbsjbujpot!boe!uzqjdbmmz!jt!bcpvu!5!up!7!tupsjft/!Uijt!cvjmejoh!ibt!
fmfwbupst-!tpnf!ps!bmm!epvcmf.mpbefe!dpssjeps!vojut-!boe!qpejvn!
ps!voefshspvoe!qbsljoh/
Dpncjobujpo!cvjmejoh;!Uijt!wbsjbujpo!jt!gps!tjuft!bmpoh!cvtz!
dpssjepst!uibu!cbdl!vq!up!mpx.joufotjuz!ofjhicpsippet/!Uif!
P.tibqfe!cvjmejoh!jt!ejwjefe!joup!uxp!ibmwft/!Uif!gspou!ibmg!jt!
bo!vscbo!dpvsuzbse!cvjmejoh!gbdjoh!uif!tusffu-!xijmf!uif!sfbs!
33
Chapter 2: Code Analysis and Best Practices
ibmg!jt!b!ofjhicpsippe!dpvsuzbse!cvjmejoh!bekbdfou!up!uif!tjef!ps!sfbs!pg!ofjhicpsjoh!tjohmf.gbnjmz!ipvtft/!Uijt!
wbsjbujpo!jt!bmtp!sfgfssfe!up!bt!b!izcsje!dpvsuzbse!cfdbvtf!ju!cmfoet!uif!uxp!wfsz!ejggfsfou!ibmwft!up!beesftt!uif!
ejggfsfou!qiztjdbm!dpoejujpot!pg!uiftf!tjuft/
Eftjho!Dpotjefsbujpot!boe!Cftu!Qsbdujdft
Uif!dpvsuzbse!sfevdft!uif!cvjmebcmf!bsfb!boe!zjfme!dpnqbsfe!up!puifs!cvjmejoh!uzqft/!Ipxfwfs-!uif!fowjsponfou!
dsfbufe!cz!uif!dpvsuzbse!jt!b!gfbuvsf!uibu!puifs!cvjmejoh!uzqft!ep!opu!jodmvef/!Cvu!jo!psefs!up!nblf!uijt!uzqf!
bqqfbmjoh!up!efwfmpqfst-!efotjuz!tipvme!opu!cf!sfhvmbufe/!Puifsxjtf-!xifo!efwfmpqfst!dpnqbsf!uif!tbnf!efotjuz!
pg!uijt!uzqf!xjui!b!uzqf!uibu!epft!opu!sfrvjsf!b!dpvsuzbse-!jut!mjlfmz!uibu!uif!dpvsuzbse!uzqf!xjmm!opu!cf!tfmfdufe/!
nbttjoh!tdfobsjp/
Jo!bsfbt!xjui!ijhi!qspqfsuz!wbmvft-!qpejvn!boe!tvcufssbofbo!qbsljoh!nbz!cf!pqujpot/!Jo!uiptf!dbtft-!uif!
dpvsuzbse!tvsgbdf!tipvme!cf!eftjhofe!up!gffm!mjlf!b!mboetdbqfe!hbsefo!boe!opu!uif!sppg!pg!b!qbsljoh!hbsbhf/!
Dppsejobujpo!xjui!uif!efqbsunfou!sfwjfxjoh!gps!esbjobhf!jt!sfdpnnfoefe!tp!uibu!uif!qpejvn!tvsgbdf!dbo!
beesftt!esbjobhf!xijmf!qspwjejoh!bo!jowjujoh!bncjfodf/
Uif!dpvsuzbse!jt!nptu!fggfdujwf!xifo!jut!tffo!bt!b!wfsz!jowjujoh!boe!dpngpsubcmf!tqbdf/!B!lfz!up!tvdi!b!tqbdf!jt!
mjojoh!uif!dpvsuzbse!xjui!exfmmjoh!fousjft!boe!qvcmjd!sppnt!)mjwjoh!sppn-!qpsdi*/!Jg!qsjwbuf!sppnt!)cfesppn-!
cbuisppn*!bsf!bmpoh!uif!dpvsuzbse!fehf-!sftjefout!ufoe!up!xbou!fyusb!qsjwbdz!boe!lffq!uif!dvsubjot!dmptfe!pgg!
gspn!wjfx!pg!uif!dpvsuzbse/!Jo!beejujpo-!jg!b!qmbzhspvoe!jt!up!cf!jodmvefe-!jut!nptu!fggfdujwf!jo!bo!bekbdfou!qbsl!ps!
uif!dpvsuzbse!jt!effq!fopvhi!up!bddpnnpebuf!b!vtfbcmf!sppn/!
Buubdife!ps!uvdl.voefs!hbsbhft!tipvme!cf!joufhsbufe!joup!uif!eftjho!pg!uif!cvjmejoh!boe!uif!bnpvou!pg!tqbdft!
Jnqmfnfoubujpo!Pqujpot
Bepqu!BEV!Npejgz!Bepqu!Tnbmm!Npejgz!Bepqu!Npejgz!Bepqu!Sfqmbdf!
DpefDvssfou!Mpu!DpefDvssfou!Dpuubhf!Dvssfou!Pwfsmbz!\[pof)t*!xjui!
\[pojoh!up!Nby/!\[pojoh!
Dpvsu!Dpef\[pof!Ejtusjdu!\[pof)t*!ps!Gpsn.Cbtfe!
Bmmpx!BEVtEfotjuzTuboebse)t*Tuboebse)t*Dpef
N/AN/AN/AN/A
34
Chapter 2: Code Analysis and Best Practices
PSEJOBODF!BOE!DPEF!BOBMZTJT!
CZ!KVSJTEJDUJPO!
Uijt!bobmztjt!fwbmvbuft!b!xjef!wbsjfuz!pg!psejobodft!boe!dpeft!gps!uifjs!gpdvt!po!bddfttpsz!exfmmjoh!vojut-!tnbmm!
efwfmpqnfou/
Bddfttpsz!Exfmmjoh!Voju!)BEV*!Psejobodft
Uif!dpotjefsbujpo!pg!BEVt!ibt!cfdpnf!b!obujpobm!usfoe!jo!uif!mbtu!uxp!efdbeft!bt!qfpqmf!npwjoh!cbdl!joup!
djujft!ibwf!dsfbufe!npsf!qsfttvsf!po!uif!efnboe!gps!ipvtjoh/!Djujft!uibu!ofwfs!bmmpxfe!BEVt!bsf!opx!mppljoh!up!
bmmpx!uifn-!xijmf!puifs!djujft!bsf!vqebujoh!uifjs!dpeft!up!cf!mftt!sftusjdujwf/!Tpnf!tubuft-!tvdi!bt!Dbmjgpsojb-!Ofx!
Ibnqtijsf-!boe!Psfhpo!ibwf!jouspevdfe!tubuvuft!bmmpxjoh!BEVt!tubufxjef!cz.sjhiu/!BEVt!ufoe!up!cf!uif!nptu!
qpmjujdbmmz!qbmbubcmf!pg!uif!gpvs!dpef!bqqspbdift!tuvejfe!jo!uijt!tfdujpo!bt!uifz!uzqjdbmmz!ibwf!uif!
cspbeftu!qvcmjd!bddfqubodf/!Uijt!jt!voefstuboebcmf!hjwfo!uibu!BEVt!sfqsftfou!uif!mfbtu!bnpvou!
pg!dibohf!xifo!dpnqbsfe!up!joejwjevbm!cvjmejoht/
Qpsumboe-!Psf/Bddfttpsz!Exfmmjoh!Vojut!)Dibqufs!44/316*!
mbtu!Bnfoenfou!po!uif!fyjtujoh!{pojoh!dpef!bcpvu!BEV!sfhvmbujpot!Op/!298582-!
Dpef!Qsfqbsfs;!Djuz!pg!Qpsumboe
Dpoubdu;Qijm!Obnfoz-!Djuz!Qmboofs-!Djuz!pg!Qpsumboe!
Cbdlhspvoe!boe!uif!sfbtpo!uif!bnfoenfou!xbt!qsfqbsfe!
Qpsumboet!dpef!ibt!bmmpxfe!BEVt!jo!dfsubjo!bsfbt!tjodf!uif!fbsmz!2:11t/!Jo!bo!
dbqjubmj{joh!po!fyjtujoh!jogsbtusvduvsf!bt!ipvtjoh!efnboe!cfdbnf!hsfbufs!jo!uif!mbuf!
2:11t-!lfz!bnfoenfout!xfsf!qbttfe!jo!2::9-!3121!boe!3127/!Jo!2::9-!uif!bnfoenfou!
espqqfe!pxofs!pddvqbodz!boe!qbsljoh!sfrvjsfnfout!boe!bmmpxfe!BEVt!up!cf!efwfmpqfe!
djuzxjef!cz.sjhiu/!Uif!tj{f!xbt!dbqqfe!bu!uif!mfttfs!pg!911!trvbsf!gffu!ps!pof.uijse!pg!uif!
nbjo!ipvtf!tj{f-!bmpoh!xjui!mjnjufe!eftjho!dpnqbujcjmjuz!sfrvjsfnfout/!Uif!3121!bnfoenfou!
jodsfbtfe!uif!bmmpxbcmf!tj{f!sfmbujwf!up!uisff.rvbsufst!pg!uif!qsjnbsz!sftjefodf!boe!ufnqpsbsjmz!
xbjwfe!uif!tztufn!efwfmpqnfou!dibshft!)jnqbdu!gfft*/!Uif!dibohf!jo!3127!nfshfe!uif!efwfmpqnfou!tuboebset!
gps!bddfttpsz!tusvduvsft!xjui!uif!tuboebset!gps!efubdife!BEVt/!Bt!b!sftvmu-!uif!bddfttpsz!tusvduvsf!ifjhiu!xbt!sfevdfe!
boe!uif!BEV!ifjhiu!jodsfbtfe/!Jo!3129-!uif!ufnqpsbsz!xbjwfs!pg!tztufn!efwfmpqnfou!dibshft!xbt!nbef!qfsnbofou-!jg!
uif!qspqfsuz!pxofs!bhsffe!up!b!sfdpsefe!dpwfobou!uibu!tubufe!uif!voju!xpvme!opu!cf!vtfe!bt!b!tipsu.ufsn!sfoubm/
Jo!3128-!uif!tubuf!pg!Psfhpo!qbttfe!b!tubuvuf!sfrvjsjoh!kvsjtejdujpot!up!bmmpx!BEVt!xifsfwfs!b!ipvtf!jt!bmmpxfe/!Uifsf!
xbt!op!jnqbdu!up!Qpsumboet!fyjtujoh!dpef/
Xibu!epft!uif!bnfoenfou!bmmpx@
Cz.sjhiu-!bo!bddfttpsz!exfmmjoh!voju!nbz!cf!beefe!up!b!ipvtf-!buubdife!ipvtf-!ps!nbovgbduvsfe!ipnf!jo!bo!
evqmfyft!jo!uif!S31!uispvhi!S6!)mpx.efotjuz!up!nfejvn.efotjuz!sftjefoujbm*{poft!uibu!vtf!b!qspwjtjpo!up!hbjo!bo!
fyusb!voju!po!b!dpsofs!mpu/!
35
Chapter 2: Code Analysis and Best Practices
Uif!nbyjnvn!tj{f!jt!mjnjufe!up!uif!mfttfs!pg!911!trvbsf!gffu!ps!uisff.rvbsufst!pg!uif!mjwjoh!bsfb!pg!uif!nbjo!ipvtf!tj{f/
bt!nfbtvsfe!up!uif!njeqpjou!pg!uif!hbcmf!xifo!mpdbufe!pvutjef!pg!uif!sfrvjsfe!tfucbdlt/!Qsjps!up!uif!nptu!
sfdfou!bnfoenfou-!bddfttpsz!tusvduvsft!ibe!uif!tbnf!ifjhiu!mjnju-!41!up!46.gffu!)efqfoejoh!po!uif!{pof*-!bt!
fyjtujoh!ofjhicpsippet/!Cz!bmjhojoh!uif!tuboebset!gps!bddfttpsz!tusvduvsft!boe!bddfttpsz!exfmmjoh!vojut-!uijt!
sfevdfe!qsjwbdz!dpodfsot!boe!uif!jodfoujwf!up!jmmfhbmmz!dpotusvdu!BEVt!xjuijo!bddfttpsz!tusvduvsft/!
Tfucbdlt!gps!efubdife!BEVt!bsf!51!gffu!gspn!uif!gspou/!Uif!sfnbjojoh!tfucbdlt!nbudi!uiptf!pg!uif!qsjnbsz!
tusvduvsf<!ipxfwfs-!pof!dbo!cvjme!xjuijo!uif!tfucbdl!xjuijo!beejujpobm!ifjhiu!mjnjubujpot!up!lffq!uif!cvjmejoh!op!
ijhifs!uibo!pof!tupsz/!!
Qbsljoh!jt!opu!sfrvjsfe!gps!uif!BEV/!Jg!uif!dpotusvdujpo!pg!uif!BEV!sfnpwft!b!sfrvjsfe!qbsljoh!tqbdf!gps!uif!
qsjnbsz!cvjmejoh-!uifo!uibu!tqbdf!nvtu!cf!sfqmbdfe!potjuf/!Ipxfwfs-!uif!ipvtft!jo!bsfbt!pg!uif!djuz!uibu!bsf!xjuijo!
611!gffu!pg!gsfrvfou!cvt!tfswjdf!)fwfsz!31!njovuft!evsjoh!dpnnvuf!ujnft*!bsf!opu!sfrvjsfe!up!qspwjef!boz!qbsljoh/!
Pxofs!pddvqbodz!jt!opu!sfrvjsfe/
Tipsu.ufsn!sfoubmt!bsf!bmmpxfe!xjui!uif!qbznfou!pg!efwfmpqnfou!gfft!)uiftf!gfft!bsf!xbjwfe!gps!mpoh.ufsn!
sfoubmt*/!
Uif!BEV!dpef!jt!benjojtufsfe!cz.sjhiu!xjui!op!ejtdsfujpobsz!sfwjfx-!fydfqu!uibu!tpnf!eftjho!dpnqbujcjmjuz!xjui!
uif!nbjo!ipvtf!jt!sfrvjsfe!gps!uxp.tupsz!BEVt/!Uif!cvjmejoh!nvtu!nbudi!uif!nbjo!ipvtf!ps!dpnqmz!xjui!hfofsbm!
eftjho!hvjefmjoft/!Uifsf!bsf!op!eftjho!sfrvjsfnfout!gps!b!tjohmf.tupsz!BEV/!
Gmpps!Bsfb!Sbujp!sfrvjsfnfout!xfsf!sfnpwfe!jo!3113/!Tjodf!uifo!uif!cvjmejoh!joufotjuz!jt!opx!sfhvmbufe!uispvhi!mpu!
dpwfsbhf!tuboebset!)56!qfsdfou!upubm!mpu!dpwfsbhf-!boe!uif!efubdife!BEV!dboopu!fydffe!uif!26!qfsdfou!pg!uif!mpu*/!
Ipx!xbt!uif!dpef!bnfoenfou!bepqufe@
Uif!Djuz!jojujbufe!uif!dpef!bnfoenfou!jo!2::9!xjui!tfwfsbm!vqebuft!tjodf!uifo-!uif!mbuftu!cfjoh!jo!Bvhvtu!3127/!
Jo!2::9!uifsf!xbt!ofjhicpsippe!pqqptjujpo!up!uif!dibohft/!Pwfs!ujnf-!uif!bnpvou!pg!sftjtubodf!ibt!sfevdfe!
xjui!fbdi!tvctfrvfou!dibohf!boe!npsf!cvjmu!sftvmut/!Nptu!pg!uif!dpoujovfe!dpodfso!ibt!cffo!bspvoe!tipsu.ufsn!
sfoubmt!boe!qsjwbdz/!
Cvjmu!sftvmut
Gpmmpxjoh!uif!bnfoenfou!jo!2::9-!uifsf!xbt!tpnf!vqujdl!jo!efwfmpqnfou!pg!BEVt-!cvu!uifz!xfsf!tujmm!wfsz!mjnjufe!
djuzxjef-!bu!bo!jodsfbtf!pg!21!.!26!vojut!qfs!zfbs/!Uif!hsfbufs!jnqbdu!po!efwfmpqnfou!ovncfst!pddvssfe!tjodf!uif!
3121!bnfoenfou-!xifo!uif!djuz!efdjefe!up!xbjwf!uif!jnqbdu!gfft!jo!psefs!up!sftqpoe!up!uif!efwfmpqnfou!wjbcjmjuz!
evsjoh!uif!fdpopnjd!epxouvso-!jodsfbtf!uif!bmmpxbcmf!tj{f!sfmbujwf!up!uif!qsjnbsz!tusvduvsf-!boe!bekvtu!uif!eftjho!
hvjefmjoft!up!beesftt!sfdvssjoh!dpodfsot!bcpvu!qsjwbdz/!
Jo!tqfbljoh!xjui!djuz!tubgg-!cbtfe!vqpo!b!sfwjfx!pg!uif!uftujnpoz!sfdfjwfe!xifo!uif!BEV!sfhvmbujpot!xfsf!
fyqboefe!jo!2::9-!uifsf!nbz!ibwf!cffo!tpnf!dibmmfohft!jo!psjhjobmmz!fyqboejoh!uif!bmmpxbodft/!Ipxfwfs-!tjodf!
jodsfnfoubm!tfsjft!pg!dibohft!bqqfbst!up!ibwf!bmmpxfe!qspqfsuz!pxofst-!cvjmefst-!boe!ofjhicpst!up!bebqu!boe!hfu!
vtfe!up!uif!jefb!pg!BEVt/!Uifsf!bsf!tpnf!dpoujovfe!dpnqmbjout!bcpvu!uif!qspyjnjuz!pg!BEVt!up!qspqfsuz!mjoft-!uif!
qpufoujbm!gps!opjtf-!boe!dpodfso!pwfs!tipsu.ufsn!sfoubmt/!Uif!dpef!tusvduvsf!boe!dpnnvojdbujpo!xjui!uif!qvcmjd!
xfsf!wjubm!gps!uif!tvddftt!pg!uif!BEVt!jo!Qpsumboe<!bt!efwfmpqfs!boe!cvjmefs-!Fmj!Tqfwbl!nfoujpofe-!Xjui!b!hppe!dpef!
tusvduvsf!boe!fevdbujpo-!qfpqmf!tubsufe!bddfqujoh!BEVt/!Uif!fevdbujpobm!dpnqpofout!jodmvef!sfhvmbs!upvst!pg!BEVt!
epof!cz!BEV!bewpdbuft-!b!efejdbufe!xfctjuf!po!uif!qspdftt-!hfofsbm!xpse!pg!npvui-!boe!tffjoh!ofjhicpst!ipnft!jo!
qsphsftt/!Bmm!pg!uiftf!fmfnfout!boe!uif!sfdfou!bnfoenfout!ibwf!sfbmmz!tqvssfe!efwfmpqnfou-!tvdi!uibu!uif!ovncfs!
pg!qfsnju!bqqspwbmt!jodsfbtfe!up!bspvoe!611!b!zfbs!jo!3127!boe!3128-!vq!gspn!kvtu!91!qmvt!jo!3121/
36
Chapter 2: Code Analysis and Best Practices
Uif!qfpqmf!efwfmpqjoh!BEVt!bsf!qsjnbsjmz!uif!ipnfpxofs!boe!tnbmm.tdbmf!efwfmpqfst/!Bddpsejoh!up!Tqfwbl-!evf!up!
uif!ijhi!dptu!pg!cvjmejoh-!BEV!dpotusvdujpo!jt!nptumz!ibqqfojoh!jo!uif!ijhifs!wbmvf!qbsut!pg!uif!djuz-!dpodfousbufe!
wbmvf!bsfbt-!uif!dipjdf!up!cvjme!bo!BEV!jt!uzqjdbmmz!b!mjgftuzmf!dipjdf!)offejoh!sppn!gps!gbnjmz!ps!dbsfhjwfs*!sbuifs!
uibo!bo!fdpopnjd!pof/!Pwfs!ujnf-!uipvhi-uif!BEV!uzqjdbmmz!jodsfbtft!uif!wbmvf!pg!uif!qspqfsuz/!
Jodfoujwft!gps!cvjmejoh!BEVt
Qpsumboe!ibt!nbef!ju!fbtjfs!gps!ipnfpxofst!up!cvjme!xjui!hppe!hvjebodf!gspn!uif!qmboojoh!boe!efwfmpqnfou!
efqbsunfout!bcpvu!uif!qspdftt/!Xfctjuf!qbhft!boe!xbmljoh!upvst!ifmq!up!jogpsn!boe!fevdbuf!qfpqmf!bcpvu!uif!
qspdftt!boe!jnqpsubodf!pg!BEVt/!
Qsjps!up!uif!Djuzt!3121!sfnpwbm!pg!uif!sfrvjsfnfou!gps!Tztufn!Efwfmpqnfou!Dibshft!po!bmm!BEVt-!b!qbznfou!
b!21.gpme!jodsfbtf!jo!uif!ovncfs!pg!BEV!qfsnjut/!Ipxfwfs-!opx!uibu!uijt!gff!xbjwfs!jt!bddpnqbojfe!cz!b!
dpwfobou!sftusjdujoh!vtf!bt!b!tipsu.ufsn!sfoubm!gps!21!zfbst-!uifsf!jt!b!rvftujpo!bcpvu!xifuifs!uibu!xjmm!bggfdu!BEV!
xjui!b!hfofsbm!sfdfou!tmpxjoh!pg!qfsnjut/
qspqptf!b!usbef.pgg-!tvdi!bt!jo!Nvmuopnbi!Dpvouz-!xifsf!uif!dpvouz!xpvme!qbz!gps!uif!BEV-!cvu!uif!qspqfsuz!
dpn*!pggfst!up!pcubjo!qfsnjut!boe!cvjme!uif!BEV!po!uif!qspqfsuz!jo!fydibohf!gps!b!qpsujpo!pg!uif!sfout!pwfs!b!
qfsjpe!pg!ujnf/!Bu!uijt!ujnf-!uiftf!qsphsbnt!ibwf!sftvmufe!jo!pomz!b!iboegvm!BEVt!pvu!pg!uif!ivoesfet!cfjoh!cvjmu/
Vqdpnjoh!dibohft!cfjoh!dpotjefsfe!jodmvef!bmmpxjoh!uxp!BEVt!po!b!mpu!ps!3!.!4!vojut!qfs!mpu!boe!npejgzjoh!uif!
bmmpxfe!GBS!jo!sftjefoujbm!{poft!xifo!beejoh!bo!BEV/!Uijt!jt!fowjtjpofe!up!cf!djuzxjef/
tvdi!bt!esjwfxbzt!boe!zbset/
Dibmmfohft!jo!cvjmejoh!BEVt
up!cbmbodf!sfoubm!jodpnf!xjui!dpotusvdujpo!dptu/!
npsf!dpnqbsbcmft!xjmm!cf!bwbjmbcmf/
Cvjmejoh!dpef!dibmmfohft!nbz!cf!bo!jttvf!xifo!dpowfsujoh!fyjtujoh!tqbdft!joup!BEVt!uibu!offe!up!nffu!dvssfou!dpeft/
Po!tnbmmfs!mput-!mpu!dpwfsbhf!mjnjut!nbz!dpotusbjo!uif!dbqbdjuz!up!cvjme!b!voju/!
bo!BEV!cfdbvtf!uif!dpvouz!xbt!tffjoh!uijt!dibohf!bt!b!sf{pof-!xijdi!uifsfgpsf!usjhhfsfe!b!sfbqqsbjtbm!pg!uif!
foujsf!qspqfsuz/!Jo!tpnf!dbtft!uijt!sftvmufe!jo!b!4.!boe!5.gpme!jodsfbtf!jo!qspqfsuz!ubyft/!Uijt!xbt!bwfsufe!uispvhi!
b!tubuf!efufsnjobujpo!uibu!cvjmejoh!bo!BEV!epft!opu!dpotujuvuf!b!sf{pof/!
Qpsumboet!dpef!fotvsft!uibu!bddfttpsz!exfmmjoh!vojut!bsf!dpnqbujcmf!xjui!uif!eftjsfe!dibsbdufs!boe!mjwbcjmjuz!pg!
sftjefoujbm!{poft-!xijdi!nbz!ifmq!qvcmjd!tvqqpsu!cvu!jt!bmtp!dsfbujwfmz!mjnjujoh-!qbsujdvmbsmz!gps!dpoufnqpsbsz!
tuzmft/!Tpnf!qspgfttjpobmt!rvftujpo!xiz!uijt!jt!offefe!gps!tusvduvsft!uibu!bsf!sfmfhbufe!up!uif!sfbs!pg!uif!qspqfsuz/
51!gffu!po!cpui!tusffu!gbdft-!mjuumf!up!op!efwfmpqbcmf!bsfb!dbo!cf!gpvoe!gps!uif!BEV!vomftt!ju!jt!buubdife!up!uif!
qsjnbsz!tusvduvsf/!!
37
Chapter 2: Code Analysis and Best Practices
Ofx!IbnqtijsfOfx!Ibnqtijsf!Bddfttpsz!Exfmmjoh!
Vojut!tubuvuf!)STB!785;82.84*!
Tubuvuf!Tqpotps;!
tqpotpsfe!jo!uif!tubuf!tfobuf!cz!Ebwje!Cpvujo-!sfxsjuufo!cz!Cfo!Gsptu
Dpoubdu;Cfo!Gsptu-!Ejsfdups-!Mfhbm!boe!Qvcmjd!Bggbjst-!Ofx!Ibnqtijsf!Ipvtjoh!
Gjobodf!Bvuipsjuz
Cbdlhspvoe!boe!uif!sfbtpo!uif!tubuvuf!xbt!qsfqbsfe
Ofx!Ibnqtijsft!tubuf!mfhjtmbuvsf!sfdphoj{fe!uibu!uifsf!jt!b!hspxjoh!offe!gps!npsf!
ejwfstf!boe!bggpsebcmf!ipvtjoh!pqqpsuvojujft!up!bddpnnpebuf!joefqfoefou!mjwjoh!boe!
gbnjmz!dbsfhjwjoh!bu!ipnf/!Uif!hpbm!xbt!up!jodsfbtf!uif!tvqqmz!pg!ipvtjoh!xjuipvu!ibwjoh!up!
gvsuifs!fyqboe!mboe!efwfmpqnfou!cfzpoe!fyjtujoh!jogsbtusvduvsf/!Xifo!uif!cjmm!xbt!jouspevdfe!jo!3126-!
uif!tvqqpsujoh!dpbmjujpo!jodmvefe!sfbm!ftubuf!qspgfttjpobmt-!BBSQ-!ejtbcjmjuz!sjhiut!bewpdbuft-!zpvoh!qspgfttjpobmt-!
uif!bmmpxbodf!pg!bddfttpsz!exfmmjoh!vojut!jo!tjohmf.gbnjmz!{poft-!uif!mbx!mbshfmz!ftubcmjtift!xibu!mpdbm!kvsjtejdujpot!
nbz!ps!nbz!opu!sfhvmbuf!bt!sfmbufe!up!BEVt/
Xibu!epft!uif!tubuvuf!bmmpx@
Bddfttpsz!exfmmjoh!vojut!nvtu!cf!buubdife!ps!xjuijo!uif!tjohmf.gbnjmz!exfmmjoh/!B!nvojdjqbmjuz!nbz!qfsnju!
efubdife!bddfttpsz!exfmmjoh!vojut-!cvu!jut!opu!sfrvjsfe/!
BEVt!bsf!bmmpxfe!cz.sjhiu-!cz!dpoejujpobm!vtf-!ps!cz!tqfdjbm!fydfqujpo!jo!bmm!{pojoh!ejtusjdut!uibu!qfsnju!tjohmf.
gbnjmz!exfmmjoht!xjuipvu!beejujpobm!sfrvjsfnfout!gps!mpu!tj{f-!gspoubhf-!tqbdf!mjnjubujpot-!ps!puifs!dpouspmt!
cfzpoe!xibu!xpvme!cf!sfrvjsfe!gps!b!tjohmf.gbnjmz!exfmmjoh!xjuipvu!bo!BEV/!
Boz!sfhvmbujpot!bqqmjdbcmf!up!tjohmf.gbnjmz!exfmmjoht!bmtp!bqqmz!up!uif!bddfttpsz!exfmmjoh!voju-!jodmvejoh!mpu!
dpwfsbhf!tuboebset!boe!tuboebset!gps!nbyjnvn!pddvqbodz!qfs!cfesppn/!
B!nvojdjqbmjuz!nbz!sfhvmbuf!qbsljoh!sfrvjsfnfout!up!bddpnnpebuf!uif!BEV/
Ftubcmjtijoh!eftjho!tuboebset!gps!uif!qvsqptf!pg!bftuifujd!dpnqbujcjmjuz!xjui!uif!qsjodjqbm!exfmmjoh!voju!bt!b!
tjohmf.gbnjmz!exfmmjoh!jt!bmmpxbcmf/
Ftubcmjtijoh!njojnvn!boe!nbyjnvn!tj{ft!gps!bo!BEV!jt!bmmpxfe!cvu!ju!nbz!opu!cf!sftusjdufe!up!mftt!uibo!861!
trvbsf!gffu!boe!ju!dboopu!cf!mjnjufe!up!pomz!pof!cfesppn/
Nvojdjqbmjujft!bsf!bmmpxfe!up!sfrvjsf!pxofs!pddvqbodz!pg!pof!pg!uif!exfmmjoh!vojut-!cvu!ju!tibmm!opu!tqfdjgz!xijdi!
voju!uif!pxofs!nvtu!pddvqz/!Gbnjmjbm!sfmbujpotijqt!cfuxffo!uif!vojut!nbz!opu!cf!sfrvjsfe/!
Ipx!xbt!uif!tubuvuf!bepqufe@
Uif!tubuvuf!xbt!jouspevdfe!jo!3126-!qbttfe!jo!3127!boe!xfou!jo!fggfdu!3128/!Nptu!upxot!ifme!uifjs!upxo!nffujoht!xjui!
up!hfu!ju!bepqufe-!bt!uif!Ipvtf!ibt!pwfs!511!nfncfst!xjui!wbszjoh!joufsftut/!Fwfouvbmmz!uispvhi!pohpjoh!ejbmph!uif!
tubuvuf!qbttfe!xjui!b!3.up.2!nbshjo/!
38
Chapter 2: Code Analysis and Best Practices
Uifsf!xfsf!tpnf!njops!bnfoenfout!nbef!jo!3128!up!uif!tubuvuf/!Pof!pg!uifn!bmmpxfe!nvojdjqbmjujft!up!qspijcju!
bddfttpsz!exfmmjoh!vojut!bttpdjbufe!xjui!nvmujqmf!tjohmf.gbnjmz!exfmmjoht!buubdife!up!fbdi!puifs-!tvdi!bt!upxoipvtft-!
opu!cf!tpme!bt!dpoepnjojvnt!vomftt!uif!nvojdjqbmjuz!fyqmjdjumz!bmmpxt!ju<!tvdi!tbmft!nbz!cf!bmmpxfe!fjuifs!uispvhi!
{pojoh!ps!tvcejwjtjpo!sfhvmbujpot/
Cvjmu!sftvmut
Bdsptt!uif!tubuf-!BEV!efwfmpqnfou!ibt!cffo!tmpx!cvu!jodsfnfoubm/!Jo!dpnnvojujft!tvdi!bt!Qpsutnpvui!boe!
Nfssjnbdl-!bcpvu!pof!BEV!b!npoui!jt!cfjoh!qfsnjuufe/!Pof!pg!uif!cjhhftu!dibmmfohft!jt!uif!offe!up!dpnnvojdbuf!
uif!jttvft!boe!tpmvujpot!up!mpdbm!efdjtjpo!nblfst!bt!xfmm!bt!dpnnvojdbujoh!up!ipnfpxofst!uibu!uijt!jt!bwbjmbcmf!up!
uifn!)ipnfpxofst!hvjef!up!uif!xfctjuf*/
Jodfoujwft!gps!cvjmejoh!BEVt
Pof!bmmpxbodf!uibu!ifmqt!njojnj{f!dpotusvdujpo!dptut!jt!uibu!xbufs!boe!tbojubsz!ejtqptbm!tztufnt!gps!uif!BEV!
nbz!cf!tibsfe!cz!uiptf!pg!uif!qsjodjqbm!exfmmjoh!voju/
B!ofx!tfqujd!tztufn!epft!opu!offe!up!cf!cvjmu!vomftt!uif!fyjtujoh!tztufn!jt!vomjdfotfe!ps!ibt!gbjmfe/!Uif!
bqqmjdbou!gps!b!qfsnju!up!dpotusvdu!bo!bddfttpsz!exfmmjoh!voju!tibmm!nblf!befrvbuf!qspwjtjpot!gps!xbufs!tvqqmz!
boe!tfxbhf!ejtqptbm!gps!uif!bddfttpsz!exfmmjoh!voju-!cvu!tfqbsbuf!tztufnt!tibmm!opu!cf!sfrvjsfe!gps!uif!qsjodjqbm!
boe!bddfttpsz!exfmmjoh!vojut/
Jg!bo!BEV!nffut!uif!sfoubm!qsjdf!tuboebset!pg!uif!Xpslgpsdf!Ipvtjoh!Mbx-!uifo!uif!nvojdjqbmjuz!nbz!dpvou!uif!
voju!bt!qbsu!pg!jut!gbjs!tibsf!dbmdvmbujpo/
tpnf!up!cvjme!uifjs!pxo!tusvduvsft!boe!bmmpxjoh!puifst!up!tff!ipx!uifz!bsf!dpnqbujcmf!xjui!uif!tvsspvoejoh!
ofjhicpsippe/!
Dibmmfohft!jo!cvjmejoh!BEVt
Uif!tubuf!bmmpxt!mpdbm!nvojdjqbmjujft!up!bepqu!ejtdsfujpobsz!sfwjfx!gps!eftjho!tuboebset!boe!qfsnju!qspdftt!jo!
uif!gpsn!pg!dpoejujpobm!vtf!qfsnjut!boe!tqfdjbm!fydfqujpot/!Fwfo!jg!mjnjufe!up!qsftdsjqujwf!sfrvjsfnfout!sbuifs!
uibo!ejtdsfujpobsz!poft-!ibwjoh!bopuifs!mbzfs!pg!sfwjfx!fyufoet!uif!bqqspwbm!qspdftt!ujnfmjof!boe-!bt!b!sftvmu-!
uif!pwfsbmm!qspkfdu!dptu!bt!dpnqbsfe!up!b!cz.sjhiu!qspdftt/!
Uif!nbkpsjuz!pg!nvojdjqbmjujft!uzqjdbmmz!sfrvjsf!pxofs!pddvqbodz/!Xijmf!uijt!qsbdujdf!uzqjdbmmz!hbsofst!uif!nptu!
mpdbm!qvcmjd!tvqqpsu-!ju!bmtp!mjnjut!uif!bnpvou!pg!efwfmpqnfou!pg!uijt!cvjmejoh!uzqf/!Pxofs.pddvqjfe!qspqfsujft!
ufoe!up!cf!npsf!mjlfmz!up!cf!vtfe!bt!b!tipsu.ufsn!sfoubm!ps!hvftu!ipvtf!sbuifs!uibo!mpoh.ufsn!sfoubmt!uibu!bmmfwjbuf!
pwfsbmm!ipvtjoh!efnboe/!
Uif!sfrvjsfnfou!gps!bo!joufsjps!epps!cfuxffo!uif!qsjodjqbm!exfmmjoh!voju!boe!uif!bddfttpsz!exfmmjoh!voju!dbo!
Xijmf!qfsnjuujoh!bo!BEV!xjui!bo!fyjtujoh!exfmmjoh!dboopu!sfrvjsf!uif!dpotusvdujpo!pg!b!ofx!xbufs!tztufn-!uif!
!Jg!b!nvojdjqbmjuz!sfrvjsft!jnqbdu!gfft-!xifuifs!uifz!xjmm!bqqmz!xjmm!efqfoe!po!ipx!uif!mpdbm!nvojdjqbmjuz!
dibshft!uifjs!gfft!)cz!voju!ps!cz!cfesppn*/
Fevdbujpo!pg!boe!dpnnvojdbujpo!xjui!mpdbm!efdjtjpo!nblfst!boe!uif!cspbefs!qvcmjd!offet!up!cf!dbsfgvmmz!
uipvhiu!uispvhi!up!fotvsf!b!tvddfttgvm!sbuf!pg!efwfmpqnfou/
Qsjnbsz!qvcmjd!dpodfsot!bsf!sfmbufe!up!tipsu.ufsn!sfoubmt-!xijdi!uif!BEV!mbx!epft!opu!sfgfs!up!ps!mjnju!uifjs!
vtf!gps!uijt!qvsqptf/!Tpnf!Ofx!Ibnqtijsf!nvojdjqbmjujft!)f/h/!Qpsutnpvui*!bsf!npwjoh!bifbe!xjui!sfhvmbujpot!
mjnjujoh!tipsu.ufsn!sfoubmt-!cvu!uijt!epft!opu!nfbo!uibu!bo!pxofs!dboopu!dsfbuf!bo!BEV/!Uifsf!bsf!wbsjpvt!
39
Chapter 2: Code Analysis and Best Practices
Bvtujo-!UfybtBddfttpsz!Exfmmjoh!Vojut!Psejobodf-!Op/!3126222:.191!
bqqspwfe!2202:03126
Dpef!Qsfqbsfs;!Uif!Djuz!pg!Bvtujo
Dpoubdu;Hsfh!Evuupo-!Qsjodjqbm!Qmboofs-!Djuz!pg!Bvtujo!Qmboojoh!boe!\[pojoh!Efqbsunfou
Cbdlhspvoe!boe!uif!sfbtpo!uif!psejobodf!xbt!qsfqbsfe
Bmuipvhi!BEVt!xfsf!qfsnjuufe!jo!wbsjpvt!gpsnt!qsjps!up!3126-!uif!3126!psejobodf!fyqboefe!boe!sfmbyfe!sfhvmbujpot/!
Jo!3126-!uif!njojnvn!mpu!tj{f!sfrvjsfnfou!xbt!sfevdfe-!boe!uif!efwfmpqnfou!tuboebset!xfsf!bnfoefe/!Gps!fybnqmf-!
qsfwjpvtmz!b!esjwfxbz!xbt!offefe!up!hp!vq!up!uif!BEV!jutfmg-!cvu!xjui!uif!bnfoenfout-!qbsljoh!jt!bmmpxfe!jo!uif!
qsjnbsz!esjwfxbz/!Bmtp-!jo!3126!b!sfevdujpo!jo!uif!ovncfs!pg!sfrvjsfe!qbsljoh!tqbdft!qbttfe!gps!bsfbt!dmptf!up!usbotju!
dpssjepst/!Uif!rvftujpo!pg!xifuifs!uif!tipsu.ufsn!sfoubmt!tipvme!cf!bmmpxfe!tmpxfe!epxo!uif!qvcmjd!qspdftt<!ipxfwfs-!
Xibu!epft!uif!psejobodf!bmmpx@
Gps!b!uxp.gbnjmz!sftjefoujbm!mpu-!uif!tfdpoebsz!voju!nvtu;!2*!cf!dpoubjofe!jo!b!tusvduvsf!puifs!uibo!uif!qsjodjqbm!
tusvduvsf!)j/f/!pomz!efubdife!tusvduvsft*<!3*!cf!mpdbufe!)b*!bu!mfbtu!21!gffu!up!uif!sfbs!ps!tjef!pg!uif!qsjodjqbm!
tusvduvsf!ps!)c*!bcpwf!b!efubdife!hbsbhf<!)4*!nbz!cf!dpoofdufe!up!uif!qsjodjqbm!tusvduvsf!cz!b!dpwfsfe!xbmlxbz/
Pof!potjuf!qbsljoh!tqpu!jt!sfrvjsfe!gps!uif!BEV!vomftt!uif!qspqfsuz!jt!xjuijo!b!rvbsufs!njmf!pg!bo!Jnbhjof!Bvtujo!
dpssjeps!tfswfe!cz!usbotju/!BEV!qbsljoh!sfrvjsfnfout!bsf!mftt!tusjohfou!uibo!tjohmf.gbnjmz!vtf-!xijdi!sfrvjsft!
uxp!potjuf!qbsljoh!tqput!qfs!exfmmjoh!voju/
Cvjmejoh!ifjhiu!nbz!opu!fydffe!41!gffu!boe!jt!mjnjufe!up!uxp!tupsjft/
trvbsf!gffu!nbyjnvn!po!uif!tfdpoe!tupsz/
Bo!BEV!nbz!opu!cf!vtfe!bt!b!tipsu.ufsn!sfoubm!gps!npsf!uibo!41!ebztjo!b!dbmfoebs!zfbs!jg!uif!tfdpoebsz!
Jnqfswjpvt!dpwfs!gps!uif!tjuf!nbz!opu!fydffe!56!qfsdfou/
Cvjmejoh!dpwfs!gps!uif!tjuf!nbz!opu!fydffe!51!qfsdfou/
Ipx!xbt!uif!psejobodf!bepqufe@!
Dpvodjm!jojujbufe!uif!bnfoenfou!qspdftt!boe!btlfe!tubgg!up!sfevdf!sfhvmbupsz!cbssjfst!up!cvjmejoh!BEVt/!Uxp!qvcmjd!
nffujoht!xfsf!dpoevdufe!boe!tubgg!hfofsbufe!sfdpnnfoebujpot!uibu!xfsf!ublfo!up!Qmboojoh!Dpnnjttjpo!boe!
Dpvodjm/!Nptu!pg!uif!ejtdvttjpo!bu!Qmboojoh!Dpnnjttjpo!boe!Dpvodjm!uibu!ibe!qvcmjd!joqvu!jowpmwfe!xifuifs!BEVt!
tipvme!cf!bmmpxfe!jo!TG.3!{pojoh-!xijdi!pomz!bmmpxt!b!tjohmf!exfmmjoh!)vmujnbufmz!Dpvodjm!efdjefe!up!opu!bmmpx!BEVt!
Jo!hfofsbm!uif!tjuf.efwfmpqnfou!dibohft!hpu!hfofsbm!tvqqpsu-!cvu!xifsf!BEVt!dpvme!cf!cvjmu!boe!ipx!uifz!dpvme!cf!
vtfe!xfsf!uif!qpjout!pg!dpoufoujpo/
40
Chapter 2: Code Analysis and Best Practices
Cvjmu!sftvmut
uif!psejobodf!xbt!qbttfe!cvu!sfnbjot!b!tnbmm!
ovncfs!dpnqbsfe!up!Bvtujot!pwfsbmm!ipvtjoh!
offet/!Uif!psejobodf!ibt!opu!ofdfttbsjmz!zjfmefe!
tnbmmfs!boe!npsf!bggpsebcmf!vojut-!bt!BEVt!
bsf!uzqjdbmmz!cvjmu!up!uif!nbyjnvn!tj{f!uif!
dpotusbjout!bmmpx/!Ipxfwfs-!uijt!xjmm!tujmm!zjfme!
b!ipnf!bu!b!mpxfs!qsjdf!qpjou!uibo!uif!uzqjdbm!
qsjnbsz!tjohmf.gbnjmz!ipnf!uibu!jt!ofxmz!cvjmu/
Jodfoujwft!gps!cvjmejoh!BEVt
Potjuf!qbsljoh!jt!sfevdfe!gps!qspyjnjuz!up!
BEVt!hbsofsfe!qpmjujdbm!tvqqpsu!gspn!uif!qvcmjd!evf!up!
uif!mbdl!pg!bggpsebcmf!ipvtjoh!pqujpot/!
boe!rvjdl!bqqspwbm!ujnfmjof/
Pxofs.pddvqbodz!jt!opu!sfrvjsfe/!
Uif!qspqfsuz!nbz!cf!uvsofe!jo!uxp!dpoept-!xijdi!qspwjeft!bo!bggpsebcmf!
ipnf!pxofstijq!pqujpo/!
Dibmmfohft!jo!cvjmejoh!BEVt
Gjobodjoh!jt!bo!jttvf!gps!uif!tbnf!sfbtpot!ejtdvttfe!voefs!uif!Qpsumboe!tfdujpo/
Dpotusvdujpo!dptut!)jodmvejoh!eftjho-!qfsnjuujoh!boe!nbufsjbmt*!dbo!cf!qspijcjujwf!gps!joejwjevbm!ipnfpxofs!bu!
njeemf.jodpnf!mfwfmt/!
Bqqmjdbout!nbz!offe!up!vqhsbef!xbufs0xbtufxbufs!mjoft!up!bddpnnpebuf!BEV!cbuisppn)t*-!xijdi!dbo!bee!
BEVt!bsf!bmmpxfe!jo!uxp.gbnjmz!sftjefoujbm!mput!)jo!TG.4-!TG.6!boe!TG.7!cvu!opu!jo!TG.2!boe!TG.3!{poft*/!TG.4!jt!uif!
nptu!bqqmjdbcmf!tjohmf.gbnjmz!{pof-!cvu!ju!pomz!bmmpxt!uxp!vojut!nby!)ipvtf!boe!BEV!ps!b!evqmfy!cvu!opu!cpui*/!Jo!
dptu!jt!qspcbcmz!mpxfs!uibo!bo!BEV/!
cf!fbtjmz!nbslfubcmf!)voju!tj{f!jt!mjnjufe!up!1/26!GBS*/!
Mjnju!pg!661!trvbsf!gffu!po!uif!tfdpoe!mfwfm!jt!b!qpufoujbmmz!b!mjnjujoh!gbdups/
Njojnvn!mpu!tj{f!sfrvjsfnfou!pg!6-861!trvbsf!gffu!bmtp!qspijcjut!mput!tnbmmfs!uibo!uibu!gspn!ibwjoh!bo!BEV/
Jg!uif!voju!jt!bcpwf!b!hbsbhf-!uif!voju!jt!cbtjdbmmz!mjnjufe!up!pof!mfwfm!cfdbvtf!pg!uif!ifjhiu!sftusjdujpo/!
Beejoh!b!voju!xjmm!jofwjubcmz!jodsfbtf!uif!bqqsbjtfe!wbmvf!boe!qspqfsuz!uby/!Uif!qspqfsuz!uby!sf.fwbmvbujpo!
ibqqfot!fwfsz!zfbs/
41
Chapter 2: Code Analysis and Best Practices
Mpt!Bohfmft-!Dbmjg/Bddfttpsz!Exfmmjoh!Vojut!TC!217:!boe!BC!3:4:
Dpef!Qsfqbsfs;!TC!217:;!Tubuf!Tfobups!Cpc!Xjfdlpxtlj<!BC!3:4:;!Bttfncmz!nfncfs!Qijm!Ujoh
Dpoubdu;!!!Nbuuifx!Hmftof-!Qmboojoh!Efqbsunfou-!Djuz!pg!Mpt!Bohfmft
Cbdlhspvoe
Uif!2:96!djuzxjef!psejobodf!bmmpxfe!BEVt!xjui!b!ejtdsfujpobsz!dpoejujpobm!vtf!qfsnju!)DVQ*/!Vqpo!qbttbhf!pg!
BC!2977!)3113*-!uif!ejtdsfujpobsz!dpnqpofou!pg!uif!mbx!xbt!op!mpohfs!fogpsdfbcmf/!Mbufs-!jo!3121-!uif!Djuz!ibmufe!
fogpsdjoh!uif!2:96!psejobodf!bmuphfuifs!boe!sfmjfe!tpmfmz!po!uif!tuboebset!jo!tubuf!mbx-!dpncjofe!xjui!bqqmjdbcmf!
fyjtujoh!mpdbm-!pckfdujwf!{pojoh!tuboebset/!B!dpvsu!efdjtjpo!jo!3127!svmfe!uif!3121!{pojoh!joufsqsfubujpo!jowbmje!boe!
qvu!b!ibmu!po!uif!qfsnjuujoh!pg!boz!BEVt!uibu!sfmjfe!vqpo!uif!joufsqsfubujpot/!
Tjodf!3128-!vqpo!bepqujpo!pg!TC!217:!boe!BC!33::-!Mpt!Bohfmft!jt!pqfsbujoh!voefs!tubuf!mbxt!uibu!bmmpx!BEVt!cz!sjhiu-!
qspwjefe!uifz!nffu!pckfdujwf!dsjufsjb/!B!mpdbm!BEV!psejobodf!ibt!cffo!qspqptfe!up!ublf!uif!qmbdf!pg!tubuf!mbx!boe!jt!
dvssfoumz!qfoejoh!cfgpsf!Djuz!Dpvodjm/!
Xibu!epft!uif!psejobodf!bmmpx@
Qbsljoh;!Uif!tubuf!mbx!bmmpxt!mpdbm!bhfodjft!up!sfevdf!ps!fmjnjobuf!qbsljoh!sfrvjsfnfout!gps!boz!bddfttpsz!exfmmjoh!
vojut!mpdbufe!xjuijo!jut!kvsjtejdujpo!boe!tubuft!uibu!qbsljoh!sfrvjsfnfout!gps!bddfttpsz!exfmmjoh!vojut!tibmm!opu!fydffe!
pof!qbsljoh!tqbdf!qfs!voju!ps!qfs!cfesppn-!xijdifwfs!jt!mftt/!Uiftf!tqbdft!nbz!cf!qspwjefe!bt!uboefn!qbsljoh!po!
b!esjwfxbz/!Mpt!Bohfmft!sfrvjsft!pof!tqpu!gps!BEVt!vomftt!uif!mpdbujpo!nffut!pof!pg!uif!djuzt!gpvs!dsjufsjb-!jodmvejoh!
qspyjnjuz!up!qvcmjd!usbotju-!uifo!op!tqbdf!jt!sfrvjsfe/!Sfqmbdfnfou!qbsljoh!jt!sfrvjsfe!jg!bo!fyjtujoh!hbsbhf!jt!
dpowfsufe!up!bo!BEV<!ipxfwfs-!uif!qbsljoh!nbz!cf!mpdbufe!jo!uif!gspou.zbse!tfucbdl!jo!bo!fyjtujoh!esjwfxbz/!
Ifjhiu!mjnjut;!Uif!sfhvmbujpot!efgbvmu!up!uif!tbnf!sfrvjsfnfout!bt!gps!bddfttpsz!cvjmejoht-!xijdi!bmmpxt!gps!uxp!
Tfucbdlt;!Tbnf!bt!gps!bo!bddfttpsz!tusvduvsf-!xijdi!jodmveft!bo!beejujpobm!6!gffu!gspn!tfucbdl!gps!tfdpoe!tupsz/!
Tj{f;!Vq!up!2-311!trvbsf!gffu!jt!bmmpxfe!gps!b!efubdife!voju/!Buubdife!vojut!bsf!mjnjufe!up!op!mbshfs!uibo!61!
dpvou!bt!bo!BEV!jo!qspqptfe!psejobodf/
GBS;!Cpui!vojut!dpncjofe!bsf!mjnjufe!up!1/56/
Ipx!xbt!uif!psejobodf!bepqufe@
Uif!Djuz!jt!dvssfoumz!pqfsbujoh!voefs!tubuf!mbx/!Jo!Kbovbsz!pg!3128-!b!Dbmjgpsojb!tubuf!mbx-!TC!217:-!uppl!fggfdu!uibu!
bmmpxt!ipnfpxofst!up!cvjme!bo!bddfttpsz!exfmmjoh!cz!sjhiu/!Op!mpdbm!Dbmjgpsojb!BEV!dpef!dbo!cf!npsf!sftusjdujwf!
Cvjmu!sftvmut
Tjodf!tubuf!mbx!xbt!bepqufe!jo!3128-!bqqspyjnbufmz!7-611!qfsnjut!ibwf!cffo!jttvfe!gps!BEVt-!xjui!b!dvssfou!sbuf!
pg!bcpvu!461!qfs!npoui/!Uif!ovncfs!pg!BEV!bqqmjdbujpot!dpoujovft!up!jodsfbtf-!xjui!bcpvu!6-511!bqqmjdbujpot!
tvcnjuufe!jo!3129!bmpof/!Bqqspyjnbufmz-!911!bsf!jo!b!ipmejoh!qbuufso!ps!ibwf!cffo!fggfdujwfmz!efojfe!evf!up!fbtfnfou!
uif!fyjtujoh!tqbdf-!fjuifs!jotjef!uif!qsjnbsz!tusvduvsf!ps!uif!hbsbhf/!Bcpvu!46!qfsdfou!bsf!buubdife!beejujpot!boe!uif!
sfnbjoefs!bsf!efubdife!ofx!dpotusvdujpo/
42
Chapter 2: Code Analysis and Best Practices
Jodfoujwft!gps!cvjmejoh!BEVt
Tqsjolmfst!bsf!opu!sfrvjsfe!vomftt!uif!nbjo!ipnf!
sfrvjsfe!uifn!xifo!ju!xbt!cvjmu/
Gfft!pwfsbmm!bsf!mpxfs!dpnqbsfe!up!uif!bwfsbhf!
nvojdjqbmjuz/!Uif!mbshftu!tfhnfou!pg!uif!gfft!
bsf!MBVTE!tdippm!efwfmpqnfou!gfft/!Ipxfwfs-!
tdippm!gfft!bsf!xbjwfe!jg!uif!dpowfstjpo!jt!mftt!
uibo!611!trvbsf!gffu!ps!jt!b!dpowfstjpo!pg!bmsfbez!
ibcjubcmf!tqbdf/!Uifsfgpsf-!upubm!gfft!sbohf!gspn!
mftt!uibo!%961!gps!tnbmmfs!dpowfstjpot!vq!up!b!
nbyjnvn!pg!bcpvu!%7-511!gps!ofx!dpotusvdujpo/!
Gfft!bmtp!efqfoe!po!qspkfdu!wbmvbujpot-!xijdi!lffqt!
usflboetippu!0!Tivuufstupdl/dpn
dpowfstjpot!boe!beejujpot!mftt!fyqfotjwf/!Gps!tfxfs-!
bo!fyufotjpo!mjof!jt!uzqjdbmmz!offefe-!cvu!uifsf!bsf!op!
dbqbdjuz!dpoofdujpo!dibshft!jg!ju!jt!b!dpowfstjpo/!!
Beejujpobm!fmfdusjd!ps!xbufs!nfufst!bsf!opu!sfrvjsfe/
Pxofs!pddvqbodz!jt!opu!sfrvjsfe!gps!fjuifs!tusvduvsf/
Jg!zpv!bsf!jo!b!usbotju!dpssjeps-!zpv!ep!opu!ibwf!up!qspwjef!b!qbsljoh!
tqbdf-!cvu!zpv!ibwf!up!sfqmbdf!boz!cfjoh!sfnpwfe/!Uif!sfqmbdfnfou!tqput!
bsf!opu!sfrvjsfe!up!cf!dpwfsfe!boe!dbo!cf!uboefn!ps!mpdbufe!po!boz!qbsu!pg!
sfevdujpo!jo!uif!sfhvmbupsz!cbssjfst-!qbsuofsfe!xjui!dmfbs!qspdftt!hvjefmjoft-!fevdbujpobm!nbufsjbmt-!boe!ofbscz!
Mpt!Bohfmft!ibt!gpvoe!tvddftt!cz!ibwjoh!uifjs!tubgg!cf!xfmm!wfstfe!po!uif!tubuf!mbx!bt!xfmm!bt!cf!tuspoh!bewpdbuft!
boe!gbdjmjubupst!xip!ifmq!bqqmjdbout!uispvhiuif!qspdftt-!boe!cz!fodpvsbhjoh!bmm!efqbsunfout!up!ubml!up!fbdi!puifs/
B!hvjefcppl!efwfmpqfe!jo!qbsuofstijq!xjui!VDMB!Djuzmbc!jt!qspwjefe!up!gbdjmjubuf!qvcmjd!fevdbujpo/
Dibmmfohft!jo!cvjmejoh!BEVt
Nffujoh!Dbmjgpsojb!fofshz!dpeft!dbo!cf!qbsujdvmbsmz!dibmmfohjoh!gps!dpowfstjpo!qspkfdut!uibu!ibwf!fyjtujoh!
tusvduvsft/!Uif!bttpdjbufe!gfft!bsf!ijhi-!bt!uifz!bsf!opu!qspqpsujpobuf!up!tj{f!boe!dptu/
Fyjtujoh!hbsbhft!uibu!gbmm!xjuijo!qpxfs!mjof!fbtfnfout!qsftfou!ivsemft!gps!pxofst!xboujoh!up!dpowfsu!uiptf!
hbsbhft!joup!BEVt/!Opo.ibcjubcmf!tqbdft-!tvdi!bt!b!hbsbhft-!bsf!bmmpxfe!xjuijo!uif!fbtfnfou-!cvu!ibcjubcmf!
tusvduvsft-!tvdi!bt!bo!BEV-!bsf!opu/
nfbo!gps!tipsu!ufsn<!ju!offet!up!cf!b!qfsnbofou!sftjefodf/
Gjobodjoh!jt!uif!cjhhftu!dibmmfohf/!Nptu!qfpqmf!ibwf!up!ublf!pvu!ipnf!frvjuz!mjoft!jo!psefs!up!dpwfs!uif!dptu!pg!
dpotusvdujpo/!Cbolt!ibwf!cffo!voxjmmjoh!up!hsbou!mpbot!cbtfe!po!qpufoujbm!qspkfdufe!jodpnf-!xijdi!jt!mjlfmz!up!
dibohf!bt!npsf!BEVt!bsf!dpotusvdufe!boe!sfoufe!up!qspwjef!dpnqt/!!
43
Chapter 2: Code Analysis and Best Practices
Tnbmm!Mpu!Psejobodft!boe!Efotjuz!Jodfoujwft
Tnbmm!mpu!dpeft!boe!efotjuz!jodfoujwft!up!fyjtujoh!{pojoh!bsf!uzqjdbmmz!vtfe!jo!pof!pg!uisff!uzqft!pg!tjuvbujpot;!up!fobcmf!mput
tnbmmfs!uibo!uif!dvssfou!{pojoh!bmmpxt-!up!nblf!efwfmpqnfou!gfbtjcmf!po!b!mpu!xjui!bo!jssfhvmbs!tibqf!ps!tj{f!uibu!dboopu!
bdijfwf!xibu!uif!{pojoh!bmmpxt-!ps!up!bmmpx!npsf!vojut!po!b!mpu!uibo!bsf!dvssfoumz!bmmpxfe-!cvu!xjuijo!uif!tbnf!pwfsbmm!tj{f!pg
boe!bqqmjfe!up!gpdvtfe!bsfbt!uispvhi!joejwjevbm!psejobodft!ps!bnfoenfout!up!fyjtujoh!dpeft/!Uijt!jt!vtvbmmz!jo!bo!fggpsu!
up!bddpnnpebuf!dibohf!xjuijo!ftubcmjtife!ofjhicpsippet!xijmf!opu!dibohjoh!uif!fyjtujoh!{pojoh/!B!lfz!dpotjefsbujpo!
jo!vtjoh!uijt!bqqspbdi!jt!up!xpsl!xjui!uif!ofjhicpsippe!up!dmfbsmz!voefstuboe!boe!ftubcmjti!xibu!uif!mpoh.ufsn!joufoefe!
Efowfs-!Dpmp/Efowfs!\[pojoh!Dpef-!Bnfoenfou!up!Njojnvn!Mpu!Tj{f!jo!
Tjohmf.Gbnjmz!\[poft
Dpef!Qsfqbsfs;!Djuz!pg!Efowfs-!Dpef!Tuvejp-!Gfssfmm!Nbeefo!Bttpdjbuft
Dpoubdu;Qfufs!Qbsl-!gpsnfs!Ejsfdups!pg!Qmboojoh-!Djuz!pg!Efowfs
Cbdlhspvoe!boe!uif!sfbtpo!uif!bnfoenfou!xbt!qsfqbsfe
dibohft!jo!qiztjdbm!dibsbdufs!uibu!nboz!2:31t!tjohmf.gbnjmz!ofjhicpsippet!xfsf!fyqfsjfodjoh/!Ipvtft!xfsf!cfjoh!
efnpmjtife!up!nffu!uif!2:66!{pojoh!uibu!sfrvjsfe!7-111!trvbsf!gffu!gps!b!ofx!ipvtf!ps!evqmfy/!Uif!{pojoh!xbt!opu!
dppsejobufe!xjui!uif!qsfwbmfou!qbuufso!pg!uif!ofjhicpsippet!uibu!dpotjtu!qsjnbsjmz!pg!36.gppu!xjef!mput!xjui!bmmfz!
bddftt/!Uif!2:66!{pojoh!jnnfejbufmz!nbef!uif!ipvtft!boe!uifjs!mpu!qbuufsot!opodpogpsnjoh-!qsftfoujoh!nbkps!jttvft!
Bt!uiftf!jttvft!hbjofe!tvqqpsu!up!cf!beesfttfe-!tnbmmfs!ipnft!xfsf!dpotjefsfe!po!uif!fyjtujoh!obsspx!mput/!Cvu!uif!qspdftt!
xbt!mfohuiz!boe!dvncfstpnf!boe!qspwfe!up!cf!jofggfdujwf/!Uijt!mfe!up!uif!offe!gps!vtjoh!b!Qmboofe!Voju!Efwfmpqnfou!)QVE*!
qspdftt!gps!uiftf!uzqft!pg!qspkfdut-!b!qmboojoh!uppm!joufoefe!gps!tjuft!boe!qspkfdut!mbshfs!uibo!pof!ipvtf/!
Xibu!epft!uif!bnfoenfou!bmmpx@
qbuufsot!boe!uif!qiztjdbm!tdbmf!boe!dibsbdufs!pg!uif!ipvtf.tdbmf!cvjmejoht/
Uif!3121!dpef!vqebuf!sfevdfe!uif!njojnvn!mpu!tj{f!pg!tpnf!sftjefoujbm!bsfbt!up!4-111!trvbsf!gffu!jg!tjohmf.gbnjmz!
ps!5-611!trvbsf!gffu!jg!nvmujgbnjmz/
B!QVE!jt!op!mpohfs!ofdfttbsz!gps!uiftf!uzqft!pg!mput/
Tnbmm!ipvtft!bsf!podf!bhbjo!bmmpxfe!po!tnbmm!mput!boe!xjui!b!tusfbnmjofe!qspdftt/
BEVt!bsf!bmmpxfe!jo!bmm!sftjefoujbm!{poft-!boe!uifjs!tj{f!jt!sfhvmbufe!cz!uif!tj{f!pg!uif!mpu/
Pof!pgg.tusffu!qbsljoh!tqbdf!jt!sfrvjsfe!gps!BEVt/!Joufsftujohmz-!Efowfs!ibt!b!ijtupsz!pg!opu!sfrvjsjoh!pgg.tusffu!
qbsljoh!gps!tjohmf.gbnjmz!ipvtft!boe!evqmfyft-!cvu!cvjmefst!uzqjdbmmz!qspwjef!ju!bozxbz/
Ipx!xbt!uif!bnfoenfou!bepqufe@
Uif!bnfoenfout!up!tjohmf.gbnjmz!{pojoh!xfsf!qbsu!pg!b!mbshfs-!dpnqsfifotjwf!dpef!vqebuf!boe!dpotjtufou!sf{pojoh!
qspdftt!Uif!ofx!tuboebset!vtf!bo!bqqspbdi!tjnjmbs!up!cvjmejoh!uzqft!cvu!bu!b!cspbefs!mfwfm!pg!efubjm!uibu!gpdvtft!po!
gspn!uif!efwfmpqnfou!dpnnvojuz!boe!eftjhofst!bcpvu!gpdvtjoh!uif!tuboebset!po!pwfsbmm!gpsn!boe!opu!mfuujoh!uif!
tuboebset!ejdubuf!eftjho/!Tubgg!nfu!xjui!ofjhicpsippet!up!fyqmbjo!ipx!efotjuz!boe!gpsn!bsf!sfmbufe-!bt!xfmm!bt!uif!
jnqpsubodf!pg!puifs!hvjefmjoft!tvdi!bt!mpu!dpwfsbhf!boe!ifjhiu/!
44
Chapter 2: Code Analysis and Best Practices
Cvjmu!sftvmut
Uif!3121!dpef!ibt!sftvmufe!jo!b!sbohf!pg!cvjmejoht!gspn!BEVt-!tnbmm!ipvtft!boe!evqmfyft!up!tnbmm!boe!mbshf!
nvmujgbnjmz!cvjmejoht/!
Jodfoujwft!gps!cvjmejoh!tnbmm!ipnft
tj{f)t*!pg!qpttjcmf!ipvtft/
Uif!dpoujovbujpo!pg!opu!sfrvjsjoh!pgg.tusffu!qbsljoh!gps!tjohmf.gbnjmz!ipvtft!qspwjeft!bo!pxofs!ps!cvjmefs!xjui!
uif!pqujpo!pg!sfevdjoh!ipvtf!tj{f!boe!dpotusvdujpo!dptu/
Dibmmfohft!jo!cvjmejoh!tnbmm!ipnft
Tfwfsbm!tjohmf.gbnjmz!ofjhicpsippet!ibwf!fyqfsjfodfe!uif!tjuvbujpo!pg!ofx!nvmujgbnjmz!cvjmejoht!uibu!dpnqmz!
jt!nptu!fwjefou!uispvhi!uif!mbshfs!nbttjoh!pg!uif!ofx!cvjmejoht!boe!uif!mbdl!pg!qfeftusjbo!fousjft!gbdjoh!uif!
tusffu/!Uif!ofx!nvmujgbnjmz!cvjmejoht!bsf!sfgfssfe!up!bt!Tmpu!Ipvtft/!Jobewfsufoumz-!uif!3121!dpef!vqebuf!eje!opu!
qsfwfou!dfsubjo!nvmujgbnjmz!cvjmejoht!gspn!cfjoh!cvjmu!jo!tjohmf.gbnjmz!ofjhicpsippet/!Bt!pg!uif!xsjujoh!pg!uijt!
sfqpsu-!uif!jttvft!pg!jodpnqbujcmf!tj{f!boe!nbttjoh!bsf!cfjoh!beesfttfe/!Ipxfwfs-!cfdbvtf!pg!uifjs!ijhifs!zjfme!
boe!sfmbujwfmz!tjnqmf!qspdftt-!Tmpu!Ipvtft!bsf!tujmm!bqqfbmjoh!gps!cvjmefst/!Voujm!tnbmm!ipvtft!bsf!qspwjefe!xjui!
fggpsu!jt!qfsdfjwfe!bt!ofbsmz!uif!tbnf!bnpvou!pg!fggpsu!bt!gps!b!Tmpu!Ipvtf/
45
Chapter 2: Code Analysis and Best Practices
Mpt!Bohfmft-!Dbmjg/Tnbmm!Mpu!Psejobodf
Psejobodf!Qsfqbsfs;!Djuz!pg!Mpt!Bohfmft
Dpoubdu;Kfoob!Npoufssptb-!Djuz!Qmboofs!boe!Dpvodjm!Mjbjtpo!gps!Mpt!Bohfmft!Efqbsunfou!pg!Djuz!Qmboojoh
Cbdlhspvoe!boe!uif!sfbtpo!uif!psejobodf!xbt!qsfqbsfe
Uif!psejobodf!xbt!qsfqbsfe!jo!3116!up!bmmpx!gps!uif!tvcejwjtjpo!pg!voefsvujmj{fe!mboe!joup!gff.tjnqmf!ipnft!jo!
tvcvscbo!tuzmf-!tjohmf.gbnjmz!tvcejwjtjpot-!uijt!psejobodf!bmmpxt!tnbmm!mpu!ipnft!up!ibwf!tnbmmfs!mpu!bsfbt!xjui!
dpnqbdu!cvjmejoh!gppuqsjout!boe!sfevdfe!cvjmejoh!tfucbdlt-!qbttbhfxbzt!cfuxffo!cvjmejoht-!boe!pqfo!tqbdf/!Lfz!up!
uijt!psejobodf!jt!uif!pckfdujwf!up!sfbmj{f!npsf!ipvtjoh!uibu!dbo!cf!tpme!jo!uif!tbnf!xbz!bt!b!tjohmf.gbnjmz!ipvtf!boe!
opu!cf!efqfoefou!vqpo!b!dpoepnjojvn!bqqspbdi/
Jo!3125-!uif!psejobodf!xbt!tvqqpsufe!cz!Tnbmm!Mpu!Eftjho!Hvjefmjoft!up!ifmq!hvjef!joufsqsfubujpot!boe!dmbsjgz!
tpmvujpot!efbmjoh!xjui!bekbdfou!ipvtft-!vtft-!boe!upqphsbqiz/!
Jo!3129-!b!dpnqsfifotjwf!vqebuf!nbef!uif!gpmmpxjoh!dibohft!up!uif!psejobodf;
Bnfoefe!dpef!sfhvmbujpot!uibu!sfevdf!qsfwjpvt!fydfqujpot!up!uif!{pojoh!dpef<!
Ftubcmjtife!b!sfwjfx!qspdftt!gps!dpnqmjbodf!xjui!uif!Tnbmm!Mpu!Eftjho!Tuboebset!uispvhi!bo!benjojtusbujwf!
dmfbsbodf!qspdftt<
Ftubcmjtife!b!qspdftt!up!fbtjmz!tvcejwjef!fyjtujoh!bqbsunfou!ipnft!dpotusvdufe!npsf!uibo!56!zfbst!bhp!joup!
Tnbmm!Mpu!Ipnft<!boe
Ftubcmjtife!nbq!tuboebset!uibu!sfhvmbuf!uif!eftjho!pg!b!tnbmm!mput!tvcejwjtjpo!nbq/!!
Xibu!epft!uif!psejobodf!bmmpx@
Tnbmm!mpu!ipnf!efotjuz!dbmdvmbujpot!bsf!cbtfe!po!uif!{pojoh!dpeft!nvmujgbnjmz!exfmmjoh!voju!sfrvjsfnfou-!
sbuifs!uibo!ipx!tjohmf.gbnjmz!ipnft!bsf!uzqjdbmmz!dbmdvmbufe/!!
Fbdi!tnbmm!mpu!ipnf!nvtu!cf!tusvduvsbmmz!joefqfoefou-!xjuipvu!tibsfe!gpvoebujpot!ps!dpnnpo!xbmmt/!Uif!
bnpvou!pg!tfqbsbujpo!cfuxffo!cvjmejoht!jt!uif!njojnvn!sfrvjsfe!cz!uif!Cvjmejoh!Dpef/
Evqmfyft!boe!usjqmfyft!bsf!bmmpxfe-!cvu!uzqjdbmmz-!fbdi!mpu!jt!b!tjohmf.gbnjmz!mpu/
Fbdi!mpu!nbz!cf!bt!tnbmm!bt!29.gffu!xjef!boe!711!trvbsf!gffu/
Tnbmm!mpu!efwfmpqnfou!jt!opu!bmmpxfe!jo!bsfbt!uibu!bsf!tpmfmz!tjohmf.gbnjmz!ipvtft!ps!evqmfyft/
Ipx!xbt!uif!psejobodf!bepqufe@
Uif!psejobodf!xbt!bepqufe!joup!uif!Djuzt!{pojoh!dpef!)MBND!Tfdujpo!23/33.D38*!jo!3116!boe!mbufs!tvqqpsufe!xjui!
eftjho!hvjefmjoft!uibu!bsf!bewjtpsz!qpmjdz!ejsfdujpo!gps!jnqmfnfoujoh!uif!tuboebset/
Cvjmu!sftvmut
Uif!sftvmut!bsf!uzqjdbmmz!opu!joejwjevbm!tnbmm!ipnft!cvu!joejwjevbm!ipnft!uibu!bsf!ufdiojdbmmz!joefqfoefou!boe0ps!
efubdife!uibu!wjtvbmmz!bqqfbs!bt!pof!mbshf!cvjmejoh/!Uif!tfqbsbujpo!dbo!cf!bt!mjuumf!bt!5!up!7!jodift!uibu!jt!dpwfsfe!cz!
b!tiffu!nfubm!dbq!bu!uif!upq!pg!uif!cvjmejoh/!Bmuipvhiuif!psejobodf!xbt!joufoefe!up!qspwjef!gps!b!wbsjfuz!pg!ipvtjoh!
uzqft!boe!pxofstijq-!uif!sftvmut!ufoe!up!nbyjnj{f!fbdi!tjuf!boe!bsf!opu!ofdfttbsjmz!bggpsebcmf/
Sfdfou!bnfoenfout!up!uif!psejobodf!bsf!mjlfmz!up!sftvmu!jo!tmjhiumz!sfevdfe.tj{fe!ipnft/!Uiftf!bnfoenfout!tmjhiumz!
sfevdf!mpu!dpwfsbhf-!jodsfbtf!njojnvn!mpu!xjeui-!boe!jodsfbtf!tfucbdlt/!Uiftf!dibohft-!bt!xfmm!bt!uif!beejujpo!pg!bo!
benjojtusbujwf!dmfbsbodf!qspdftt!up!sfrvjsf!beifsfodf!up!eftjho!tuboebset-!bsf!joufoefe!up!jnqspwf!uif!dpnqbujcjmjuz!
pg!tnbmm!mpu!tvcejwjtjpo!qspkfdut!jo!fyjtujoh!ofjhicpsippet/
46
Chapter 2: Code Analysis and Best Practices
Jodfoujwft!gps!cvjmejoh!tnbmm!ipnft
Uiftf!qspkfdut!hp!uispvhib!tusfbnmjofe!benjojtusbujwf!qspdftt!uibu!jt!ofbsmz!b!difdl.mjtu!uzqf!bqqspbdi/
Uif!qspdftt!bmmpxt!uif!tubgg!up!qspwjef!benjojtusbujwf!sfmjfg!gspn!uif!tuboebset!cbtfe!po!uif!tjuvbujpo/
Uif!bcjmjuz!up!qspwjef!gff.tjnqmf!pxofstijq!jo!nvmujgbnjmz!{pofe!bsfbt/
Dpnqbsfe!up!dpoepnjojvn!qspkfdut-!tnbmm!mpu!qspkfdut!ep!opu!sfrvjsf!bo!IPB!boe!sfrvjsf!mftt!qbsljoh!boe!
dpnnpo!pqfo!tqbdf!xijmf!bmmpxjoh!ijhifs!mpu!dpwfsbhf!)86!qfsdfou*/
Uif!qspdftt!ibt!cffo!jnqspwfe!up!bmmpx!dpotusvdujpo!qsjps!up!gvmm!sfdpsebujpo!pg!uif!
tvcejwjtjpo/!Ipxfwfs-!uif!vojut!bsf!opu!bmmpxfe!up!cf!pddvqjfe!voujm!gvmm!sfdpsebujpo!
pg!uif!tvcejwjtjpo/
Dibmmfohft!jo!cvjmejoh!tnbmm!ipnft
Uif!psjhjobm!tfucbdl!sfrvjsfnfout!xfsf!joufsqsfufe!bt!pomz!
bqqmzjoh!up!uif!qfsjnfufs!boe!opu!cfuxffo!joejwjevbm!vojut!bt!
joufoefe/!Uijt!ibt!cffo!sfwjtfe!up!sfrvjsf!uif!gspou!tfucbdl!up!
nbudi!xibu!uif!{pof!sfrvjsft/!Uif!sfbs!boe!tjeft!ibwf!cffo!
sfwjtfe!up!sfrvjsf!b!mbshfs!tfucbdl!bt!uif!cvjmejoh!ifjhiu!
jodsfbtft/
Tpnfujnft!b!tnbmm!mpu!tvcejwjtjpo!jt!qspqptfe!jo!bo!
bsfb!uibu!jt!{pofe!gps!nvmujgbnjmz!cvu!efwfmpqfe!xjui!
tjohmf.gbnjmz!ipvtft!ps!evqmfyft/!Jo!uiftf!tjuvbujpot-!
b!ofjhicpst!qfsdfqujpo!jt!uibu!uif!{pojoh!jt!dibohjoh-!
tp!uifz!pqqptf!uif!qspkfdu/
Uijt!psejobodf!xbt!qsfqbsfe!up!opu!sftvmu!jo!sfnpwbm!
pg!uif!ovnfspvt!dpuubhf!dpvsut!uibu!bmsfbez!qspwjef!
Uif!sfrvjsfnfou!up!ibwf!b!tusffu.gbdjoh!fousz!ibt!
Dpoepnjojvnt!sfrvjsf!npsf!qbsljoh!boe!npsf!
dpnnpo!pqfo!tqbdf!uibo!tjohmf.gbnjmz!cvjmejoht/!Uijt!
psejobodf!ibt!cffo!vtfe!cz!efwfmpqfst!up!bwpje!uif!
dpoepnjojvn!sfrvjsfnfout!xijmf!qspevdjoh!b!cvjmejoh!
uibu!bqqfbst!up!uif!ofjhicpst!bt!b!dpoepnjojvn!cvjmejoh-!
fwfo!uipvhi!ju!dpotjtut!pg!joejwjevbm!tjohmf.gbnjmz!vojut/
Nboz!cvjmejoht!sftvmu!jo!xibu!bqqfbst!up!cf!pof!mbshf!cvjmejoh/!
uif!sppg!mjof!xifo!uif!cvjmejoh!dpoubjot!4!ps!npsf!vojut/
Tnbmm!mpu!ipnft!dbo!gbdf!dibmmfohft!uibu!sfmbuf!up!bddftt!)wfijdmf!
tvcejwjtjpot!cfdbvtf!sfhvmbujpot!bsf!cbtfe!po!uif!usbejujpobm!tjohmf.gbnjmz!
bddftt!nvtu!cf!xjefofe-!xijdi!dbo!sfevdf!uif!cvjmejoh!tj{f!ps!qpufoujbmmz!fmjnjobuf!vojut/
47
Chapter 2: Code Analysis and Best Practices
Btifwjmmf-!O/D/Bnfoenfout!up!Sftjefoujbm!\[pojoh!
Ejtusjdut!)Psejobodft!5179!boe!5732*
Psejobodf!Qsfqbsfs;!Djuz!pg!Btifwjmmf
Dpoubdu;
Cbdlhspvoe!boe!uif!sfbtpo!uif!psejobodf!xbt!qsfqbsfe
Uif!psejobodft!xfsf!qsfqbsfe!jo!sftqpotf!up!nvmujqmf!gbdupst!uibu!vmujnbufmz!nbef!
uif!Djuz!sfdpotjefs!jut!tuboebset!gps!sftjefoujbm!{pojoh!ejtusjdut!up!ifmq!nffu!ipvtjoh!
offet;!b!wfsz!mpx!wbdbodz!sbuf!pg!4!qfsdfou-!sftjefoujbm!ejtusjdut!uibu!xfsf!opu!nffujoh!
uif!qfsnjuufe!{pojoh!qpufoujbm-!op!beejujpobm!boofybujpot!bmmpxfe!cz!uif!Tubuf-!boe!b!
ibe!espqqfe/!Gps!fybnqmf-!uif!2:59!{pojoh!dpef!bmmpxfe!nvmujgbnjmz!vojut!jo!bmm!sftjefoujbm!
{poft!cvu!xbt!mbufs!dibohfe!up!opu!bmmpx!uiftf!vojut!jo!nptu!sftjefoujbm!{poft-!qsjnbsjmz!
uispvhi!uif!ftubcmjtinfou!pg!tjohmf.gbnjmz!{pojoh!ejtusjdut/!Tvqqpsujoh!uif!ejsfdujpo!gps!dibohf!
uifsf!xbt!tuspoh!qvcmjd!gffecbdl!tipxjoh!dmfbs!tvqqpsu!gps!sfevdjoh!mpu!tj{ft-!jodfoujwj{joh!
evqmfyft!boe!nvmujgbnjmz!cvjmejoht!xijmf!ftubcmjtijoh!ofjhicpsippe.tdbmf!nvmujgbnjmz!eftjho!
tuboebset-!boe!tffljoh!cfuufs!eftjho!sfhvmbujpot!gps!nvmujgbnjmz!cvjmejoht!up!qspufdu!ofjhicpsippe!
dibsbdufs/
Xibu!ep!uif!psejobodft!bmmpx@
Uif!ofx!tuboebset!bmmpx!b!hsfbufs!wbsjfuz!pg!ipvtjoh!pqujpot!boe!npsf!jodfoujwft!gps!nvmujgbnjmz!cvjmejoht!
uispvhi!b!uxfouz!qfsdfou!sfevdujpo!jo!sfrvjsfe!mpu!tj{f!boe!sfevdfe!mboe!sfrvjsfnfout!jo!nvmujgbnjmz!ejtusjdut/!
bsf!{pofe!fydmvtjwfmz!gps!tjohmf.gbnjmz!ipvtft/!Xjui!uif!ofx!tuboebset-!uiftf!tjohmf.gbnjmz!ejtusjdut!dbo!npsf!
fbtjmz!dbswf!vq!mbshfs!qspqfsujft!boe!nbjoubjo!uif!ipvtf!gpsn-!qiztjdbm!tdbmf-!boe!dibsbdufs!pg!uiftf!mpxfs.
joufotjuz!ofjhicpsippet/
Uif!bnpvou!pg!pgg.tusffu!qbsljoh!xbt!opu!dibohfe!cvu!uif!mpdbujpo!sfrvjsfnfout!xfsf!bekvtufe!up!bmmpx!
vodpwfsfe!qbsljoh!jo!uif!gspou!boe!tjeft!pg!b!mpu/!Jo!beejujpo-!uif!esjwfxbz!xjeui!tuboebse!gps!tnbmm!nvmujgbnjmz!
efnboe!tnbmmfs!ipvtf!tj{ft!boe!ujhiufs!bddpnnpebujpot!gps!wfijdmft/
Ipx!xfsf!uif!psejobodft!bepqufe@
Uif!psejobodft!sfwjtfe!fyjtujoh!{pojoh!tuboebset!boe!fncfeefe!mbohvbhf!gspn!fbsmjfs!Btifwjmmf!{pojoh!dpeft/!Uif!
boe!uif!qvcmjd!up!xpsl!uispvhi!uif!jttvft/
48
Chapter 2: Code Analysis and Best Practices
bsfb-!efotjuz-!cvjmejoh!gppuqsjou-!qbsljoh-!bddftt-!boe!eftjho!
tuboebset!gps!tnbmm.tdbmf!nvmujgbnjmz!cvjmejoht/!Uif!dpnnvojuz!
pvusfbdi!qsphsbn!uibu!xbt!vtfe!up!voefstuboe!dpnnvojuz!
dpodfsot!boe!up!fyqmbjo!pqujpot!boe!efubjmt!pg!qspqptfe!
tuboebset!xbt!wfsz!xfmm!qsfqbsfe/!Cz!dpnqbsjoh!uif!2:59!
tuboebset!xjui!uif!dvssfou!{pojoh!tuboebset!uibu!sfqmbdfe!uifn-!
tubgg!xbt!bcmf!up!efnpotusbuf!uibu!Btifwjmmf!ibe!mptu!sfhvmbujpot!
uibu!ifmqfe!up!ftubcmjti!tpnf!pg!jut!cftu!ofjhicpsippet/!Cz!
tipxjoh!jnbhft!pg!dibsnjoh!cvjmejoht!uibu!xfsf!qsfwjpvtmz!
qfsnjuufe-!uif!qvcmjd!xbt!bcmf!up!voefstuboe!jo!b!dmfbs!boe!tjnqmf!
gpsnbu!boe!up!voefstuboe!boe!bqqsfdjbuf!uif!sfbtpot!boe!offe!gps!
uif!qspqptfe!dibohft/!
Uif!ofx!sfhvmbujpot!gps!nvmujgbnjmz!qspkfdut!jodmveft!sfrvjsfnfout!uibu!
b!cvjmejoht!eftjho!jt!dpnqbujcmf!xjui!uif!ofjhicpsippe!po!bu!mfbtu!uif!
gpmmpxjoh!dibsbdufsjtujdt;!ovncfs!boe!mpdbujpo!pg!fousjft-!sppg!tuzmf-!qbsljoh!
boe!esjwfxbzt-!qmboujoh!boe!tusffu!usfft-!psjfoubujpo!pg!cvjmejoh-!cvjmejoh!nbtt!
boe!mpu!dpwfsbhf-!tfucbdlt-!ifjhiu-!boe!gspou!qpsdi/
Cvjmu!sftvmut
Cfdbvtf!uif!bnfoenfout!bsf!sfmbujwfmz!ofx-!cvjmu!sftvmut!bsf!kvtu!tubsujoh!up!cf!sfbmj{fe/
Jodfoujwft
!Nvmujgbnjmz.{pofe!qspqfsujft!dbo!nvdi!npsf!fbtjmz!bee!vojut!cfdbvtf!pg!uif!sfmbujwfmz!mpx!bnpvou!pg!beejujpobm!
mpu!bsfb!)2-111!trvbsf!gffu*!offefe!gps!fbdi!beejujpobm!voju/
Uispvhi!uif!nvmujgbnjmz!eftjho!tuboebset-!ofjhicpsippet!bsf!bttvsfe!uibu!nvmujgbnjmz!cvjmejoht!xjmm!cf!
sfmbujwfmz!dpotjtufou!xjui!uif!dpoufyu!pg!ipvtft!jo!uif!bsfb/
Beejujpobm!ipvtjoh!vojut!bsf!cfjoh!beefe!jodsfnfoubmmz!uispvhipvuuif!djuz!up!ejtqfstf!uif!ofhbujwf!tjef!fggfdut!
pg!efwfmpqnfou/
Dibmmfohft
Cfdbvtf!cvjmu!sftvmut!bsf!kvtu!cfhjoojoh!up!cf!sfbmj{fe-!dpodfso!jt!tujmm!sfmbujwfmz!ijhi!bcpvu!uif!bduvbm!sftvmut!uibu!
uif!bnfoenfout!xjmm!bmmpx/
49
Chapter 2: Code Analysis and Best Practices
Ljslmboe-!Xbti/Dpuubhf-!Dbssjbhf!boe!Uxp0Uisff.Voju!Ipnft-!Ljslmboe!\[pojoh!
Dpef-!Dibqufs!224-!Pse/!5263!¨!2-!3119<!Pse/!5231!¨!2-!3118
Dpef!Qsfqbsfs;!Djuz!pg!Ljslmboe
Dpoubdu;Bebn!Xfjotufjo-!BJDQ-!Efqvuz!Qmboojoh!Ejsfdups
Cbdlhspvoe!boe!uif!sfbtpo!uif!dpef!xbt!qsfqbsfe!
Uif!dpef!xbt!qsfqbsfe!jo!sftqpotf!up!uif!Tubuf!pg!Xbtijohupo!Hspxui!Nbobhfnfou!Bdu!pg!2:9:!uibu!sfrvjsft!djujft!
up!jodsfbtf!efotjuz!boe!bggpsebcmf!ipvtjoh!up!tupq!tqsbxm/!Uif!psejobodf!jt!bjnfe!bu!beesfttjoh!uif!dibohjoh!
dpnqptjujpo!pg!ipvtfipmet!boe!uif!offe!gps!tnbmmfs-!npsf!ejwfstf-!npsf!bggpsebcmf!ipvtjoh!dipjdft-!xijmf!fotvsjoh!
b!efnpotusbujpo!qspkfdu!xbt!bmmpxfe!tp!uibu!uif!jefb!dpvme!cf!uftufe!boe!qvcmjd!gffecbdl!sfdfjwfe!cfgpsf!bmmpxjoh!
npsf!qspkfdut/!Bmuipvhitpnf!tnbmm!boe!dpnqbdu!ipvtjoh!qspkfdut!ibe!cffo!cvjmu!jo!uif!sfhjpo-!uif!djuz!xbt!sfmvdubou!
up!bepqu!b!ofx!dpef!up!bmmpx!tvdi!qspkfdut/!
Xibu!epft!uif!dpef!bmmpx@
Uisff!uzqft!pg!cvjmejoht;!
tusvduvsf!jo!b!dpuubhf!ipvtjoh!efwfmpqnfou/
Uxp0Uisff.Voju!Ipnf;!B!tusvduvsf!dpoubjojoh!vq!up!4!exfmmjoh!vojut!eftjhofe!up!mppl!mjlf!b!efubdife!tjohmf.
gbnjmz!ipnf/
Uif!dpef!bmmpxt!uiftf!ipvtjoh!uzqft!pomz!jo!uif!gpmmpxjoh!mpx!efotjuz!{poft;!ST!8/3-!STY!8/3-!ST!9/6-!STY!9/6-!ST!
23/6-!boe!STY!23/6/
Qspkfdut!xjui!21!ps!npsf!ipvtjoh!vojut!bsf!sfrvjsfe!up!qspwjef!21!qfsdfou!pg!uif!vojut!bt!bggpsebcmf!up!nfejbo!
jodpnf!ipvtfipmet/!
Uif!bmmpxfe!efotjuz!jt!uxjdf!uif!nbyjnvn!ovncfs!pg!efubdife!exfmmjoh!vojut!bmmpxfe!jo!uif!voefsmzjoh!{pof-!
boe!uif!bmmpxfe!GBS!jt!vq!up!1/46/
Uif!ovncfs!pg!bmmpxfe!dpuubhft!sbohft!gspn!5!.!35-!xjui!vq!up!23!qfs!dmvtufs/
Uxp.!up!uisff.voju!ipnft!bsf!mjnjufe!up!fjuifs!pof!uxp.voju!ps!pof!uisff.voju!ipnf-!ps!bt!qbsu!pg!b!dpuubhf!
efwfmpqnfou-!vomftt!bqqspwfe!uispvhib!ejtdsfujpobsz!qspdftt/!
Qbsljoh!jt!sfrvjsfe!bu!pof!tqbdf!qfs!voju!mftt!uibo!811!trvbsf!gffu-!2/6!tqbdft!cfuxffo!811!.!2-111!trvbsf!gffu-!
boe!uxp!tqbdft!gps!vojut!pwfs!2-111!trvbsf!gffu/!
Mpu!dpwfsbhf!jt!bmmpxfe!vq!up!61!qfsdfou-!boe!uifsf!jt!op!njojnvn!mpu!tj{f/
Dpnnvojuz!cvjmejoht!boe!dpnnvojuz!tqbdf!bsf!fodpvsbhfe/!
Benjojtusbujwf!bqqspwbm!qspdftt!jodmveft!sfwjfx!boe!gffecbdl!gspn!djuz!bcpvu!uif!eftjho-!pqfo!tqbdf-!
Fbdi!dpuubhf!dbo!cf!tvcejwjefe!joup!bo!joejwjevbm!mpu!up!qspwjef!gps!sfoubm!boe!pxofstijq!pqqpsuvojujft/!
Ipx!xbt!uif!dpef!bepqufe@
bepqujoh!uif!psejobodf!xbt!sfmbujwfmz!fbtz/!
50
Chapter 2: Code Analysis and Best Practices
Cvjmu!sftvmut
Tfwfsbm!qspkfdut!ibwf!cffo!cvjmu-!boe!nptu!bsf!dpotjefsfe!wfsz!tvddfttgvm/!Pof!pg!uif!mjnjujoh!gbdupst!jt!uibu!uifsf!
efnpotusbujpo!qspkfdu!bu!Ebojfmtpo!Hspwf/!Gps!uiptf!uibu!ibwf!cffo!cvjmu-!xijmf!joejwjevbm!voju!qsjdft!bsf!ijhi-!uifz!
bsf!tpnfxibu!npsf!bggpsebcmf!uibo!tuboebse!ofx!tjohmf.gbnjmz!vojut/!
Jodfoujwft
Uif!benjojtusbujwf!qspdftt!fyqfejuft!uif!sfwjfx!boe!bqqspwbm!pg!uiftf!vojut/
Djuz!jt!qspnpujoh!uiftf!vojut!bt!bmufsobujwft!npefmt!pg!ipvtjoh!dmptfs!up!usbotju!dpssjepst/!
Dibmmfohft
Mjnjubujpot!po!qspyjnjuz!up!puifs!tjnjmbs!qspkfdut/
cvjme!b!mbshf!tjohmf.gbnjmz!ipvtf/!
Tpnf!efwfmpqfst!xbou!up!cvjme!uijt!uzqf!bt!buubdife!vojut-!xijmf!uif!joufou!jt!up!cvjme!efubdife!vojut-!dbvtjoh!
efmbzt!jo!uif!sfwjfx!boe!bqqspwbm!qspdftt/
BEVt!bsf!opu!bmmpxfe!jo!dpuubhf!dpvsut/!
Xifo!hbsbhft!bsf!buubdife!up!uif!voju-!uif!sftvmujoh!tj{f!pg!uif!
dpuubhf!mpplt!npsf!mjlf!b!tjohmf.gbnjmz!ipvtf!jotufbe!pg!
b!tnbmm!dpuubhf/!Uijt!jt!ftqfdjbmmz!dpodfsojoh!bt!
uif!ejtubodf!cfuxffo!vojut!efdsfbtft/!
51
Chapter 2: Code Analysis and Best Practices
Dpuubhf!Dpvsu!Psejobodft
Xijmf!dpuubhf!dpvsut!ibwf!fyjtufe!jo!tpnf!jufsbujpo!gps!pwfs!211!zfbst-!pomz!sfdfoumz!ibwf!uifsf!cffo!psejobodft!
tnbmm!ipnft!jo!boz!sftjefoujbm!{pof!jg!mjnjufe!up!2-111!trvbsf!gffu!jo!tj{f!boe!jg!psjfoufe!bspvoe!b!hsffo!xjui!ifjhiu!
mjnjubujpot!boe!qbsljoh!tdsffofe!gspn!uif!tusffu/!Gpmmpxjoh!bepqujpo!pg!uijt!psejobodf-!b!efwfmpqfs!dpvme!epvcmf!
bnfoenfout!up!uifjs!fyjtujoh!dpef!uibu!sfhvmbuf!dpuubhf!dpvsu!tuboebset/!
bo!bmmpxfe!cvjmejoh!uzqf!jo!b!cspbefs!dpef-!bt!tffo!xjui!Ljslmboe!jo!uif!tfdujpo!bcpwf-!bt!xjui!Sbmfjhi!eftdsjcfe!jo!
uif!tfdujpo!cfmpx-!ps!jo!tfwfsbm!pg!uif!gpsn.cbtfe!dpeft!jo!Tfdujpo!E/!Bmufsobujwfmz-!dpuubhf!dpvsut!dbo!cf!efwfmpqfe!
bt!b!Qmboofe!Voju!Efwfmpqnfou!)QVE*/!Cvu!uibu!dbo!cf!bo!fyqfotjwf!boe!ujnf.joufotjwf!qspdftt!efqfoejoh!po!uif!
dpnnvojuz/!Nptu!dpuubhf!dpvsu!efwfmpqnfout!bsf!dpoepnjojvn.psjfoufe-!cvu!tpnf!bsf!gff.tjnqmf!xjui!bduvbm!mpu!
uzqf!cvjmu!up!ebuf/!Uifsf!jt!nvdi!tqfdvmbujpo!bt!up!uif!sfbtpot!xiz!uijt!jt!uif!dbtf/!Tpnf!joufswjfxfe!gps!uijt!
jogfbtjcmf!gps!b!njeemf!nbslfu!qsjdf!qpjou/!Uif!dpnnvojujft!xifsf!dpuubhf!dpvsut!ibwf!cffo!tvddfttgvmmz!cvjmu-!
qmbdft!tvdi!bt!Ljslmboe-!Sfenpoe-!boe!Qbmp!Bmup-!ibwf!b!ijhi!vqqfs!foe!po!ipvtjoh!qsjdft/!Puifs!sfbtpot!djufe!bsf!
dvncfstpnf!sfwjfx!qspdfttft!boe!ijhi!jnqbdu!gfft/!Jo!Njmxbvljf-!Psfhpo!uif!dvssfou!dpuubhf!dpvsu!psejobodf!pomz!
bmmpxt!dpuubhf!dpvsut!jo!nvmujgbnjmz!{poft-!efgfbujoh!uif!efotjuz!jodfoujwft!xifo!dpnqbsfe!up!puifs!bmmpxfe!cvjmejoh!
uzqft/!Uif!qmboojoh!tubgg!jo!Njmxbvljf!sfdphoj{ft!uijt!mjnjubujpo!boe!bsf!opx!jo!uif!qspdftt!pg!bnfoejoh!uifjs!
dpef!up!bmmpx!dpuubhf!dpvsut!jo!tjohmf.gbnjmz!{poft/!Jo!beejujpo!up!uif!bcpwf!pctubdmft-!uifsf!jt!uif!hfofsbm!qvcmjdt!
qfsdfqujpo!uibu!tnbmm!vojut!xjmm!sfevdf!uif!wbmvf!pg!bekbdfou!qspqfsujft/!
Dpuubhf!dpvsut!ep!sfrvjsf!b!dfsubjo!cvz.jo!up!b!dpnnvojuz.psjfoufe!mjwjoh!tuzmf-!boe!efwfmpqfst!nbz!cf!sfujdfou!up!
buufnqu!b!ofx!npefm/!Ipxfwfs-!efnboe!boe!joufsftu!ibt!cffo!hspxjoh!gps!dpnnvojuz.psjfoufe!efwfmpqnfout-!
dfouvsz-!uijt!uzqf!pg!ipvtjoh!xbt!jo!sftqpotf!up!uif!offe!gps!b!voju!uibu!b!tjohmf!xpslfs!dpvme!bggpse!boe!uibu!eje!opu!
vtf!vq!mpu!bsfb!gps!qbsljoh/!Uibu!jt!xiz!uiftf!vojut!ufoe!up!cf!wfsz!tnbmm!boe!uzqjdbmmz!ofbs!usbotju!boe!fnqmpznfou!
bsfbt/!Pwfs!211!zfbst!ibwf!qbttfe!tjodf!uif!jowfoujpo!pg!uif!dpuubhf!dpvsu-!cvu!uif!offe!jt!tujmm!uif!tbnf!ps!fwfo!
hfofsbuf!qvcmjd!cvz.jo!boe!tvqqpsu/!Uif!fybnqmft!ijhimjhiufe!jo!uijt!tfdujpo!bsf!tipxo!mbshfmz!gps!uifjs!mfttpot!
mfbsofe/!Cpui!nvojdjqbmjujft!ibwf!sfdphoj{fe!dfsubjo!tipsudpnjoht!pg!uifjs!fyjtujoh!dpeft!boe!bsf!jo!uif!qspdftt!pg!
nbljoh!bnfoenfout!up!uifjs!tuboebset!up!beesftt!xibu!uifz!ibwf!mfbsofe/
52
Chapter 2: Code Analysis and Best Practices
Btimboe-!Psf/29/3/4/1:1!Dpuubhf!
Ipvtjoh!Dpef
Dpef!Qsfqbsfs;!Djuz!pg!Btimboe
Dpoubdu;!Cjmm!Npmobs-!Dpnnvojuz!Efwfmpqnfou!
Ejsfdups-!Djuz!pg!Btimboe-!PS<!!Nbsl!Lopy-!LEB!
Ipnft-!MMD
Cbdlhspvoe!boe!uif!sfbtpo!uif!dpef!
xbt!qsfqbsfe
Uif!dpuubhf!ipvtjoh!dpef!xbt!jojujbufe!cz!uif!djuz!up!
beesftt!ijhi!ipvtjoh!dptut!boe!efnboe!gps!nbslfu.sbuf-!
opo.effe.sftusjdufe!ipvtjoh/!Jo!jut!sfwjfx!pg!qpufoujbm!
ipvtjoh!up!uzqft!up!dpotjefs-!uif!djuz!gpdvtfe!po!mpxfs.joufotjuz-!
tibsfe!gpsnbu!ipvtjoh!uzqft!tvdi!bt!dp.ipvtjoh-!dpuubhf!dpvsut-!
ipvtjoh!joup!uif!ftubcmjtife!qbuufso!pg!efubdife!ipvtft/!B!lfz!gbdups!jo!
qsfqbsjoh!uif!dpef!xbt!up!nblf!fggfdujwf!vtf!pg!mjnjufe!tjuft!xjuijo!uif!djuzt!
vscbo!hspxui!cpvoebsz-!xijmf!sfdphoj{joh!uibu!nptu!bwbjmbcmf!tjuft!bsf!xjuijo!tjohmf.
gbnjmz!ofjhicpsippet/!Jo!beejujpo-!uif!tubuf!pg!Psfhpo!sfrvjsft!uibu!djujft!ibwf!dmfbs!boe!pckfdujwf!
tuboebset!gps!ipvtjoh!efwfmpqnfou/!
lffqjoh!uif!beejujpobm!vojut!tnbmm-!jo!qiztjdbm!cbmbodf!xjui!uif!ofjhicpsippet/!Bt!uif!dpef!dpoujovfe!up!cf!
efwfmpqfe-!uif!qpttjcjmjuz!pg!mbshfs!tjuft!xjuijo!ofjhicpsippet!sbjtfe!uif!offe!up!cf!dmfbsfs!bcpvu!uif!upubm!ovncfs!pg!
vojut!up!lffq!hppe!qiztjdbm!cbmbodf!xjui!bekbdfou!ipvtft/!Uijt!mfe!up!uif!sfrvjsfnfou!uibu!uif!vojut!cf!tnbmm!boe!cf!
pshboj{fe!bspvoe!b!mbshf-!tibsfe!pqfo!tqbdf/
Uif!ujnf!up!qsfqbsf-!dpotjefs!boe!bepqu!uif!dpef!uppl!29!npouit-!xjui!uif!psejobodf!bepqufe!jo!3128/
Xibu!epft!uif!dpef!bmmpx@
Vojut;!Njojnvn!4-!nbyjnvn!23!)vq!up!ibmg!uif!vojut!nbz!cf!buubdife*/
Efotjuz;!22/7!up!28/5!exfmmjoh!vojut!qfs!bdsf/
GBS;!Nbyjnvn!1/46/
Voju!tj{f;!Nbyjnvn!2-111!trvbsf!gffu/!Jo!qspkfdut!pg!pomz!uisff!vojut-!uxp!nvtu!cf!mftt!uibo!911!trvbsf!gffu<!jo!
qspkfdut!pg!gpvs!ps!npsf!vojut-!86!qfsdfou!nvtu!cf!mftt!uibo!911!trvbsf!gffu/
Ifjhiu;!Nbyjnvn!29!gffu!up!uif!fbwf-!xjui!uif!sjehf!pg!b!qjudife!sppg!bmmpxfe!vq!up!37!gffu/
Mpu!dpwfsbhf;!Nbyjnvn!61!qfsdfou!jo!{pof!)ipvtf-!qpsdi-!esjwfxbzt-!tjefxbmlt-!opu!obuvsbm*<!uijt!dpef!
jodsfbtft!ju!up!66!qfsdfou!jg!uifsf!jt!qpspvt!dpodsfuf-!hsbtt.dsfuf-!fud/-!cvu!tujmm!ju!jt!opu!fopvhi/
Cvjmejoh!tfqbsbujpo;!Njojnvn!7!gffu!)uzqjdbmmz!23*/
Gfodft;!Bmmpxfe!cfuxffo!vojut!cvu!opu!ubmmfs!uibo!5!gffu/
Qvcmjd!tusffu)t*;!Nbz!cf!xbjwfe!jg!qspkfdu!nffut!cmpdl!mfohui!tuboebset!cz!qspwjejoh!qvcmjd!bddftt!gps!
qfeftusjbot!boe!cjdzdmjtut!uispvhi!bo!bmmfz-!tibsfe!tusffu-!ps!nvmuj.vtf!qbui/
Qbsljoh;!Pof!tqbdf!qfs!voju!)uxp!sfrvjsfe!jo!{pof*<!qbsljoh!tqbdft!bsf!sfrvjsfe!up!cf!dpotpmjebufe!up!njojnj{f!
uif!ovncfs!pg!qbsljoh!bsfbt/!Hvftu!qbsljoh!jt!opu!sfrvjsfe/
Pqfo!tqbdf;!Njojnvn!31!qfsdfou!pg!upubm!tjuf!bsfb-!xjui!b!njojnvn!ejnfotjpo!pg!31!gffu-!boe!sfrvjsfe!up!
dpotjtu!pg!b!dfousbm!pqfo!tqbdf!ps!tfsjft!pg!joufsdpoofdufe!pqfo!tqbdft/!Qbsljoh!bsfbt-!esjwfxbzt-!xfumboet-!boe!
tuffq!tmpqft!ep!opu!dpvou!upxbse!uijt!sfrvjsfnfou/
53
Chapter 2: Code Analysis and Best Practices
Sfrvjsfnfou!up!bcvu!pqfo!tqbdf;!Njojnvn!61!qfsdfou!pg!vojut!sfrvjsfe!up!bcvu!uif!tjuft!pqfo!tqbdf/
Qsjwbuf!pvuepps!bsfb;!Njojnvn!311!trvbsf!gffu!qfs!voju!)f/h/-!qbujp-!qpsdi-!hbsefo*!xjui!b!njojnvn!ejnfotjpo!
pg!9!gffu/
Dpnnpo!cvjmejoht;!Nbyjnvn!36!qfsdfou!pg!uif!sfrvjsfe!pqfo!tqbdf!cvu!opu!npsf!uibo!2-611!trvbsf!gffu!nbz!
cf!vujmj{fe!gps!b!dpnnvojuz!cvjmejoh/
BEVt;!Ofx!BEVt!bsf!opu!bmmpxfe/!Jg!pof!fyjtut!po!uif!tjuf-!ju!dbo!dpoujovf/
Ipx!xbt!uif!dpef!bepqufe@
Uif!psejobodf!xbt!bepqufe!bt!b!dpuubhf!dpvsu!dpef!uibu!pomz!bqqmjft!jo!tjohmf.gbnjmz!{poft/!Vtjoh!uijt!uppm!epft!opu!
tuboebset!xijmf!sfmzjoh!po!uif!sftu!pg!uif!fyjtujoh!psejobodft!boe!tuboebset/
Psfhpo!tubuf!mbx!sfrvjsft!dmfbs!boe!pckfdujwf!tuboebset!boe!fobcmft!cz.sjhiu!bqqspwbm/!Ipxfwfs-!cfdbvtf!pg!uiftf!tjuft!
cfjoh!tvcejwjefe!joup!joejwjevbm!dpuubhf!mput-!uibu!cfdpnft!b!ejtdsfujpobsz!bdujpo!boe!sfrvjsft!Qmboojoh!Dpnnjttjpo!
bqqspwbm/!Uifsf!jt!joufsftu!jo!tpnfebz!efmfhbujoh!uiftf!bqqspwbmt!up!uif!Dpnnvojuz!Efwfmpqnfou!Ejsfdups-!cvu!uijt!
xjmm!efqfoe!po!uif!cvjmu!sftvmut!cfjoh!bddfqubcmf!boe!opu!sftvmujoh!jo!uif!offe!gps!npsf!sfwjfx!up!beesftt!jttvft/
Cvjmu!sftvmut
nje.Gfcsvbsz!bqqspwbm/!Uif!qspkfdu!jt!po!b!1/86.bdsf!tjuf!jo!bo!ftubcmjtife!tjohmf.gbnjmz!ofjhicpsippe!boe!dpotjtut!
pg!23!dpuubhft/!Uif!qspkfdu!boe!tvsspvoejoh!ofjhicpsippe!bsf!bcpvu!b!ibmg.njmf!)21.njovuf!xbml*!gspn!epxoupxo!
Btimboe!boe!usbotju/!Uifsf!jt!bo!fmfnfoubsz!tdippm!xjuijo!b!cmpdl!pg!uif!tjuf/!
Uif!qspkfdu!gfbuvsft!b!tibsfe!hbsefo!uibu!jt!tibqfe!cz!uif!23!dpuubhft/!Uif!dpuubhft!bsf!bmm!tjohmf.tupsz!boe!ibwf!qpsdi!
gspoubhft!po!uif!bekbdfou!tusffu!ps!up!uif!tibsfe!hbsefo/!Uif!qspkfdut!nbslfujoh!jt!bjnjoh!bu!cvzfst!joufsftufe!jo!
tnbmm!mpu!efwfmpqnfou!dpuubhf!dpvsut!boe!Njttjoh!Njeemf!Ipvtjoh/
fyqfdufe!up!tubsu!jo!Bqsjm!boe!tbmft!sfbez!cz!Opwfncfs/!
Jodfoujwft!gps!cvjmejoh!dpuubhf!dpvsut
Pgg.tusffu!qbsljoh!xbt!sfevdfe!gspn!2/86!up!2!qfs!voju/!Uijt!xbt!nbef!qpttjcmf!cz!nvdi!tubgg!sftfbsdi!boe!cz!
mppljoh!bu!uif!bduvbm!ofjhicpsippet!up!voefstuboe!bduvbm!qbsljoh!ibcjut!boe!offet/
Njojnvn!tfqbsbujpo!cfuxffo!vojut!xbt!sfevdfe!up!7!gffu!gspn!23!gffu/
Evqmfyft!bsf!bmmpxfe!)evsjoh!dpef!qsfqbsbujpo-!vq!up!uisff!buubdife!vojut!xfsf!dpotjefsfe*/
Beejujpobm!efotjuz!vq!up!28!cfzpoe!uif!fyjtujoh!22/7!exfmmjoh!vojut!qfs!bdsf/
Dmfbs!boe!pckfdujwf!tuboebset!ibwf!mjnjufe!gsjwpmpvt!bqqfbmt/
Dibmmfohft!jo!cvjmejoh!dpuubhf!dpvsut
bdlopxmfehft!uiftf!jttvft!cvu!xbout!up!sfwjfx!cvjmu!sftvmut!cfgpsf!dpotjefsjoh!dibohft!up!uif!tuboebset/
Uif!dpnnvojuz!jt!wfsz!dpodfsofe!bcpvu!mboetdbqjoh!boe!xbout!bt!nvdi!bt!qpttjcmf/!Uif!sfrvjsfe!tibsfe!
dpvsuzbse!ifmqt!up!beesftt!uijt!jttvf/
Nbslfu!bddfqubodf!jt!tmpx!cfdbvtf!ofx!qspkfdut!mjlf!uijt!ep!opu!fyjtu/
Voujm!uif!cvjmu!sftvmut!dpowjodf!qfpqmf!puifsxjtf-!uifsf!jt!tujmm!ofjhicpsippe!pqqptjujpo!up!boz!jodsfbtf!jo!
efotjuz/
fnfshfodz/
54
Chapter 2: Code Analysis and Best Practices
Efwfmpqnfou!Psejobodf!)VEP*!
xijdi!jodmveft!Dpuubhf!Dpvsu!
Cvjmejoh!Uzqft
Dpef!Qsfqbsfs;!Dpef!Tuvejp
Dpoubdu;Lfoofui!Cpxfst-!BJDQ-!Qmboojoh!Ejsfdups-!
Djuz!pg!Sbmfjhi
Cbdlhspvoe!boe!uif!sfbtpo!uif!
psejobodf!xbt!qsfqbsfe!
Uif!dpuubhf!dpvsu!qspwjtjpo!xbt!beefe!up!uif!dpef!bt!
qbsu!pg!b!hspvoe.vq!sfxsjuf!pg!uif!foujsf!efwfmpqnfou!dpef!
uibu!cfdbnf!fggfdujwf!jo!3124/!Gps!uif!sftjefoujbm!qpsujpo-!uif!
psejobodf!jt!xsjuufo!bt!b!gpsn.cbtfe!dpef!uibu!bmmpxt!b!dpuubhf!
dpvsu!cvjmejoh!uzqf/!Uijt!uzqf!dpousjcvufe!up!tpnf!pg!uif!pwfsbmm!
pckfdujwft!pg!uif!VEP-!tvdi!bt!qspwjejoh!ofjhicpsippet!xjui!b!wbsjfuz!pg!
ipvtjoh!uzqft!up!tfswf!uif!offet!pg!ejwfstf!qpqvmbujpo-!sfnpwjoh!cbssjfst!boe!
qspwjejoh!jodfoujwft!gps!xbmlbcmf!qspkfdut-!boe!fodpvsbhjoh!dpnqbdu!efwfmpqnfou/
Xibu!epft!uif!psejobodf!bmmpx@
Xjuijo!uif!VEP!uif!sfhvmbujpot!sfmbufe!up!uif!dpuubhf!dpvsu!cvjmejoh!uzqf!bmmpx!gps!uif!gpmmpxjoh!cz!benjojtusbujwf!
bqqspwbm;
Upubm!vojut;!6!dpuubhft!nbyjnvn!bu!uif!njojnvn!tjuf!tj{f-!xjui!beejujpobm!dpuubhft!qfsnjuufe!xjui!beejujpobm!
tjuf!bsfb/
Cvjmejoh!gppuqsjout;!2-111!.!2-511!trvbsf!gffu-!xjui!b!efubdife!bddfttpsz!nbyjnvn!pg!561!trvbsf!gffu/
Cvjmejoh!ifjhiu;!36!gffu!nbyjnvn!cvjmejoh!ifjhiu/
Qbsljoh;!Uxp!tqbdft!qfs!voju!xijdi!jt!opu!sfrvjsfe!up!cf!dpwfsfe!boe!op!hvftu!qbsljoh!offefe/!Tjodf!uifsf!bsf!
op!bmmfzt-!esjwfxbzt!bsf!offefe/!
Tfucbdlt;!Tfucbdlt!bsf!uif!tbnf!bt!jo!tjohmf.gbnjmz!boe!uifsf!jt!op!sfrvjsfnfou!gps!uif!dpuubhft!up!gbdf!uif!hsffo/!
Tipsu.ufsn!sfoubmt;!opu!dvssfoumz!bmmpxfe
Ipx!xbt!uif!psejobodf!bepqufe@
Uif!VEP!xbt!b!djuz.jojujbufe!qspdftt!uibu!xbt!bepqufe!uispvhi!b!qvcmjd!qspdftt!jowpmwjoh!Djuz!Dpvodjm!bqqspwbm/!
Xijmf!ju!xbt!b!gbjsmz!joufotjwf!qspdftt!xjui!qmfouz!pg!dpouspwfstjft!tvsspvoejoh!uif!sfxsjuf-!uif!dpuubhf!dpvsu!
qspwjtjpo!eje!opu!buusbdu!b!mpu!pg!buufoujpo!bu!uif!ujnf!boe!xfou!uispvhi!tnppuimz/
Cvjmu!sftvmut
Jo!ufsnt!pg!uif!tvddftt!pg!uif!psejobodf-!uifsf!ibt!cffo!mjuumf!nbslfu!sftqpotf!up!uijt!ofx!pqujpo/!Up!ebuf-!pomz!
pof!dpuubhf!dpvsu!ibt!cffo!cvjmu/!Uif!cfmjfg!jt!cfdbvtf!uif!dpuubhf!dpvsu!pqujpo!epft!opu!bmmpx!beejujpobm!efotjuz-!
uifsfgpsf!b!dpowfoujpobm!tvcejwjtjpo!xjmm!hfofsbmmz!qspevdf!b!cfuufs!fdpopnjd!sfuvso!cfdbvtf!uif!ipvtft!xjmm!cf!
cjhhfs/!Jg!uif!djuz!xbout!up!tff!npsf!dpuubhf!dpvsut-!uifz!sfdphoj{f!uifz!qspcbcmz!offe!up!bmmpx!beejujpobm!efotjuz!
bcpwf!dpowfoujpobm!tjohmf.gbnjmz/!B!ufyu!dibohf!up!jodsfbtf!uif!qfsnjuufe!efotjuz!pg!dpuubhf!dpvsut!ibt!cffo!
bvuipsj{fe!cz!Djuz!Dpvodjm!boe!jt!qfoejoh!sfwjfx!jo!Qmboojoh!Dpnnjttjpo/!Qpufoujbm!sfevdujpot!jo!sfrvjsfe!qbsljoh!
gps!sftjefoujbm!vtft!bsf!cfjoh!ejtdvttfe!jo!b!Djuz!Dpvodjm!dpnnjuuff/
55
Chapter 2: Code Analysis and Best Practices
Jodfoujwft!gps!cvjmejoh!dpuubhf!dpvsut
Sfrvjsfe!mpu!tj{ft!hpu!b!mjuumf!cju!tnbmmfs!xjui!uif!ofx!dpef/
Xijmf!uifsf!bsf!op!efotjuz!cpovtft-!tj{f!mjnjubujpot!pg!dpuubhft!bmmpx!gps!npsf!vojut!pwfs!uif!tbnf!bsfb/
Jg!zpv!xfsf!bcmf!up!hfu!npsf!vojut!qfs!qsftdsjcfs!bsfb!uif!voju!qsjdft!xpvme!cf!npsf!buubjobcmf/!
Uif!dipjdf!up!mjwf!jo!b!dpuubhf!dpvsu!bcpvu!b!mjgftuzmf!jodfoujwf/!Uif!dpuubhf!dpvsut!dsfbuf!npsf!b!ofjhicpsippe!
tfuujoh!xjui!mftt!nbjoufobodf!cvsefot!uibo!b!tjohmf.gbnjmz!sftjefodf/
Dibmmfohft!jo!cvjmejoh!dpuubhf!dpvsut
Xijmf!nvmujqmf!vojut!bsf!bmmpxfe!po!b!tjohmf!mpu!uif!dpuubhf!dpvsu!efwfmpqnfout!bsf!tujmm!sfrvjsfe!up!nffu!uif!
efotjuz!pg!uif!{pof/!Uif!djuz!tubgg!ibwf!cffo!btlfe!up!mppl!gps!b!sfwjtjpo!po!uif!dpuubhf!dpvsu!sfmbufe!up!uif!
efotjuz/!Dvssfoumz!uif!tj{f!mjnjubujpo!pg!uif!vojut!boe!uif!dpvsu!ep!opu!bmmpx!gps!npsf!efotjuz/
Uif!qbsljoh!sfrvjsfnfout!bsf!uif!tbnf!bt!uif!tjohmf.gbnjmz!vojut!xijdi!jt!dibmmfohjoh!up!ep!xjui!b!uxp!dbs!
qbsljoh!njojnvn!gps!nvmujqmf!vojut!po!b!tjohmf!mpu/
Op!sfevdujpo!jo!jnqbdu!gfft!bt!uifz!bsf!qfs!voju!bt!jo!boz!puifs!efwfmpqnfou/!
Uif!dpuubhf!dpvsu!jt!uzqjdbmmz!iboemfe!bt!dpoept!xjui!bo!IPB!xijdi!beet!b!dpnqmjdbujpo!bt!dpnqbsfe!up!b!
tjohmf.gbnjmz!sftjefodf/!
56
Chapter 2: Code Analysis and Best Practices
Gpsn.Cbtfe!Dpeft!)GCDt*
jo!sftqpotf!up!uif!efwfmpqfs!qspqptjoh!b!qspkfdu!cbtfe!po!ijtupsjd-!ijhimz!bqqfbmjoh!sfbm!ftubuf!jo!uif!bsfb!uibu!uif!
{pojoh!boe!sfhvmbujpot!op!mpohfs!bmmpxfe/!Uijt!ejtdpoofdu!sfwfbmfe!b!nbkps!qspcmfn!jo!nboz!dpnnvojujft<!uif!
fyjtufe!cfgpsf!uif!{pojoh/!Jo!uif!joufsftu!pg!ujnf!boe!fyqfotf-!uif!efwfmpqfs!gpdvtfe!po!uif!jttvft!up!cf!sftpmwfe!gps!
uibu!qspkfdu!boe!voefstuboebcmz!bwpjefe!uif!npsf!tztufnjd!jttvft!uibu!dpvme!ibwf!efmbzfe!uif!qspkfdu!gps!zfbst/!Uif!
bmmpx!uif!qspkfdu/!Jo!uiftf!dbtft-!uif!bqqmjdbou!ofhpujbuft!xjui!uif!djuz0dpvouz!po!uif!tuboebset!jo!fydibohf!gps!cfuufs!
tjuf!eftjho!ps!foibodfe!sftvmut!uibu!xpvme!puifsxjtf!opu!cf!bdijfwfe!uispvhiuif!sfhvmbs!{pojoh/!Uif!
bqqmjdbou!boe!uifjs!upxo!qmboofs!)EQ\[*!qsfqbsfe!uif!GCD!uibu!cfdbnf!uif!dpoufou!gps!uif!Qmboofe!
Efwfmpqnfou/!Bt!uijt!qbuufso!pg!csplfo!boe!vosftqpotjwf!{pojoh!sfqfbut!jutfmg!bdsptt!uif!V/T/-!
GCDt!bsf!cfjoh!bqqmjfe!up!cspbefs!boe!cspbefs!bsfbt-!ibwjoh!cffo!bqqmjfe!bdsptt!nboz!
bsfbt!jo!mbshf!djujft/!
Opwbup-!Dbmjg/Opsuixftu!Rvbesbou!\[pojoh!Ejtusjdu<!
2:/25/171!Opwbup!\[pojoh!Dpef!
Dpef!Qsfqbsfs;!Pqujdpt!Eftjho-!Jod/
Dpoubdu!bu!Djuz;
Qbslfs-!dvssfou!Dpnnvojuz!Efwfmpqnfou!Ejsfdups
Cbdlhspvoe!boe!uif!sfbtpo!uif!dpef!xbt!qsfqbsfe!
Uijt!jt!b!dpef!gps!pof!ofjhicpsippe!jo!uijt!tnbmm!djuz/!Uif!djuz!jutfmg!jt!nptumz!
tvcvscbo!fydfqu!gps!uijt!ofjhicpsippe!boe!uif!bekbdfou!Nbjo!Tusffu/!Uif!
ofjhicpsippe!jt!mpx.!up!npefsbuf.!joufotjuz!xjui!bcpvu!61!qfsdfou!tjohmf.gbnjmz!
ipvtft!boe!evqmfyft-!boe!bcpvu!61!qfsdfou!pvu.pg.tdbmf!bqbsunfou!cvjmejoht/!Uiftf!
pvu.pg.tdbmf!bqbsunfou!cvjmejoht!bsf!xiz!uif!dpnnvojuz!ibt!cffo!wfsz!upvhi!bhbjotu!
ofx!nvmujgbnjmz!{pojoh!boe!cvjmejoht!boe!xiz!uijt!dpef!xbt!qsfqbsfe/!
Uif!dvssfou!{pojoh!mjnjut!efwfmpqnfou!up!21!exfmmjoh!vojut!qfs!bdsf-!cvu!uif!Hfofsbm!Qmbo!
bmmpxt!vq!up!31!exfmmjoh!vojut!qfs!bdsf/!Jo!sftqpotf!up!uif!ofhbujwf!sfbdujpo!boe!tuspoh!pqqptjujpo!up!
uif!mbshf!bqbsunfou!cvjmejoht!cvjmu!voefs!uif!Dpvouz!{pojoh!cfgpsf!Opwbupt!jodpsqpsbujpo-!xijdi!bmmpxfe!
31!exfmmjoh!vojut!qfs!bdsf-!uif!{pojoh!xbt!sfevdfe!tp!uibu!uif!gvmm!bnpvou!pg!efotjuz!bmmpxfe!cz!uif!Dpnqsfifotjwf!
Qmbo!xbt!opu!bmmpxfe/!Jo!beejujpo-!jo!2:88-!b!qpmjdz!xbt!bepqufe!qsfwfoujoh!ofx!bqbsunfou!efwfmpqnfou!xifo!b!
/!Uijt!mfe!up!bqqspyjnbufmz!39!zfbst!pg!ejtjowftunfou/!Bt!b!sftvmu-!
tuboebset!up!uif!ofjhicpsippe!uibu!xpvme!bmmpx!uif!Hfofsbm!Qmbo!nbyjnvn!pg!31!exfmmjoh!vojut!qfs!bdsf/!Nvdi!
fevdbujpo!xbt!offefe!up!tipx!uibu!31!exfmmjoh!vojut!qfs!bdsf!dpvme!cf!bdijfwfe!xjui!tnbmmfs!ipvtf.tdbmf!cvjmejoht!
uibu!bsf!npsf!dpnqbujcmf!xjui!uif!tdbmf!pg!pmefs!ipnft!uibo!uif!qsfwjpvt!bqbsunfou!cvjmejoht!uibu!uif!ofjhicpsippe!
xbout!up!bwpje/!Uif!fevdbujpo!fggpsu!xbt!b!dpncjobujpo!pg!qvcmjd!pvusfbdi!jo!dpnnvojuz!xpsltipqt!boe!djuz!tubgg!
xpsljoh!xjui!mpdbm!tublfipmefst!uispvhipvu!uif!qspdftt/
Ipx!xbt!uif!dpef!bepqufe@!
Uif!dpef!jt!nboebupsz!boe!sfqmbdft!uif!fyjtujoh!{pojoh!xjui!pof!gpsn.cbtfe!{pof/!Uif!tuboebset!bqqmz!up!ofx!
cvjmejoht!boe!beejujpot/!
57
Chapter 2: Code Analysis and Best Practices
Xibu!epft!uif!dpef!bmmpx@!
Uif!dpef!bqqmjft!uif!efwfmpqnfou!tuboebset!uispvhi!tjy!cvjmejoh!uzqft!sbohjoh!gspn!dbssjbhf!ipvtft!boe!BEVt-!
efubdife!ipvtft!up!evqmfyft-!usjqmfyft!up!tjyqmfyft!)nvmujqmfy!tnbmm*-!boe!dpuubhf!dpvsu!vq!up!dpvsuzbse!cvjmejoht/!Uif!
qbsljoh-!mboetdbqjoh-!tjuf!qmbo-!mboe!vtf!sfrvjsfnfout-!boe!sfwjfx!qspdfevsft/
Ifjhiu;!Bmm!cvjmejoht!bsf!mjnjufe!up!31!gffu!up!uif!ijhiftu!upq!qmbuf!)fbwf*!boe!46!gffu!pwfsbmm/!Uif!dpef!bmmpxt!
cvjmejoht!up!fyqboe-!cvu!uispvhi!tfdpoebsz!xjoht/!Xjoht!bsf!sfrvjsfe!up!ibwf!b!tnbmmfs!tdbmf!boe!ifjhiu!gps!
cfuufs!dpnqbujcjmjuz!xjui!ofjhicpst/
Mpu!dpwfsbhf;!Nbyjnvn!pg!51!qfsdfou/
Efotjuz;!Uif!dpef!xbt!dbsfgvmmz!qsfqbsfe!boe!uftufe!up!dpnqmz!xjui!uif!Djuzt!mjnjubujpo!po!sftjefoujbm!efotjuz!pg!
bmmpxfe!cvjmejoh!uzqft!boe!uifjs!tuboebset!xfsf!qsfqbsfe!boe!uftufe!up!dpnqmz!xjui!uijt!mjnjubujpo/!Cfdbvtf!pg!
uijt-!uif!dpef!epft!opu!offe!up!nfoujpo!ps!vtf!efotjuz!bt!b!sfhvmbujpo/!Uijt!jt!jnqpsubou-!cfdbvtf!uif!dpnnvojuz!
uif!eftjsfe!boe!npsf!qsfejdubcmf!qiztjdbm!gpsn/
Cvjmejoh!uzqft;!B!upubm!pg!tjy!ipvtf.tdbmf!cvjmejoh!uzqft!bsf!bmmpxfe-!fbdi!xjui!jut!pxo!mpu!tj{f-!dpwfsbhf-!boe!
Gspoubhf;!B!upubm!pg!gpvs!uzqft!sbohjoh!gspn!qspkfdujoh!qpsdi-!fohbhfe!qpsdi-!up!tuppq!boe!eppszbse!qspwjef!uif!
pqujpot!gps!ipx!uif!tusffu.gbdjoh!gbdbeft!dpoofdu!up!boe!tibqf!uif!qvcmjd!sfbmn/
Qbsljoh;
qiztjdbmmz!dpnqbujcmf!xjui!tjohmf.gbnjmz!ipvtft/!Ipxfwfs-!uif!dpnnvojuz!diptf!up!opu!npejgz!uif!sfrvjsfnfout!
sfevdjoh!xibu!bsf!bmsfbez!dpotjefsfe!jobefrvbuf!qbsljoh!tuboebset/!Pwfs!ujnf-!uijt!nbz!cf!qpttjcmf!up!bekvtu-!
ftqfdjbmmz!hjwfo!uif!jnnfejbufmz!bekbdfou!ofjhicpsippe!Nbjo!Tusffu!boe!bddftt!up!usbotju/
Joufhsbm!sfmjfg!gspn!tuboebset
Uif!dpef!eftdsjcft!uif!tjuvbujpot!xifsf!bo!fydfqujpo!nbz!cf!hsboufe!benjojtusbujwfmz!uispvhi!eftjho!sfwjfx/!Uif!
jt!b!nbuvsf!ofjhicpsippe!tfuujoh-!uif!sfbmjuz!pg!fyjtujoh!dpoejujpot!)tjuf!gfbuvsft-!usfft-!fud/*!nblft!ju!ofdfttbsz!up!
upqjdt!bsf!jodmvefe!gps!uijt!uzqf!pg!sfmjfg-!cvu!uijt!dpnnvojuz!diptf!up!beesftt!upqjdt!puifs!uibo!tfucbdlt!uispvhi!uif!
Qmboojoh!Dpnnjttjpo/
Cvjmu!sftvmut
Uif!dpef!bxbjut!bepqujpo!bmpoh!xjui!uif!ofx!Hfofsbm!Qmbo!jo!fbsmz!312:/!Uif!dpnnvojuz!boe!Djuz!tubgg!bsf!pqujnjtujd!
boe!fydjufe!bcpvu!jnqmfnfoujoh!uif!dpef/
Dibmmfohft
cfdbvtf!pg!uif!dpeft!dpnqsfifotjwfoftt!boe!dmbsjuz-!ju!jt!fyqfdufe!uibu!uif!offe!gps!ofx!ejtdvttjpot!ps!upqjdt!bu!
eftjho!sfwjfx!xjmm!cf!njojnbm/
58
Chapter 2: Code Analysis and Best Practices
Njbnj-!Gmb/Njbnj!32!Dpef
Dpef!Qsfqbsfs;!Evboz!Qmbufs.\[zcfsl
Dpoubdu!bu!Djuz;!Kptfqi!Fjtfocfsh-!DOV.B-!FdpEjtusjdut!BQ-!Qmboofs!JJ!!
VESC!boe!XESD!Mjbjtpo-!Djuz!pg!Njbnj-!GM
Cbdlhspvoe!boe!uif!sfbtpo!uif!dpef!xbt!qsfqbsfe
Uijt!dpef!beesfttft!uif!foujsf!djuz!pg!Njbnj!)48!trvbsf!njmft!pg!mboe!
bsfb*!boe!xbt!b!dpnqmfuf!sfxsjuf!pg!uif!qsfwjpvt!{pojoh!dpef/!Uif!
gpdvt!pg!uif!gpmmpxjoh!bobmztjt!jt!po!uif!mpx.!up!npefsbuf.joufotjuz!
ofjhicpsippet-!xijdi!sfqsftfou!bcpvu!71!qfsdfou!pg!uif!upubm!
djuz!)U4!boe!U5!{poft*/!Uif!ofx!dpef!xbt!jo!sftqpotf!up!zfbst!pg!
dpnqmbjout!bcpvu!uif!qsfwjpvt!dpeft!vosftqpotjwfoftt!up!fyjtujoh!
dpoejujpot!boe!uif!offe!up!cfuufs!bddpnnpebuf!sfjowftunfou/!Uif!
qsfwjpvt!dpef!bmmpxfe!vq!up!86!exfmmjoh!vojut!qfs!bdsf!cvu!mbdlfe!
uif!jogpsnbujpo!xjui!xijdi!up!befrvbufmz!beesftt!uif!mpxfs!foe!boe!
njeemf!pg!uif!sbohf/!Uijt!sftvmufe!jo!qiztjdbmmz!jodpnqbujcmf-!pvu.pg.tdbmf!
efwfmpqnfou!ofyu!up!boe!xjuijo!mpx.!up!npefsbuf.joufotjuz!ofjhicpsippet/!
Uijt!pddvssfe!nptumz!bmpoh!dpssjepst!uibu!cbdlfe!vq!up!ofjhicpsippet/!B!offe!
gps!cfuufs!usbotjujpot!cfuxffo!uiptf!uxp!wfsz!ejggfsfou!uzqft!pg!fowjsponfout!
cfdbnf!b!lfz!sfbtpo!gps!ubljoh!b!dpnqsfifotjwf!mppl!bu!uif!fyjtujoh!{pojoh!dpef!boe!
sfwjfx!qspdfevsft/
Ipx!xbt!uif!dpef!bepqufe@!
Uif!dpef!xbt!bepqufe!jo!311:!boe!jt!nboebupsz-!sfqmbdjoh!uif!qsfwjpvt!{pojoh!boe!sfwjfx!qspdfttft!boe!qspdfevsft/!
Evsjoh!uif!dpeft!qvcmjd!sfwjfx!qspdftt!boe!mfbejoh!vq!up!uif!bepqujpo!ifbsjoht-!uif!dpef!qsfqbsfst!boe!djuz!tubgg!
joufsbdujpo!mfe!up!b!sfmbujwfmz!tnppui!bepqujpo!qspdftt!boe!jnnfejbuf!efwfmpqnfou!qspqptbmt/
Xibu!epft!uif!dpef!bmmpx@
Uif!dpef!bmmpxt!efwfmpqnfou!bdsptt!b!wbsjfuz!pg!xbmlbcmf!vscbo!ofjhicpsippet/!Uif!dpef!epft!opu!sfhvmbuf!cvjmejoh!
uzqft!cvu!uif!tuboebset!bmmpx!frvjwbmfou!uzqft-!sbohjoh!gspn!bt!tnbmm!bt!dbssjbhf!ipvtf!bddfttpsz!bqbsunfout-!up!
upxoipvtft-!evqmfyft-!tnbmm!up!nfejvn!nvmujgbnjmz!cvjmejoht-!boe!4.tupsz!Nbjo!Tusffu!cvjmejoht!xjui!ipvtjoh/!Uif!
dpef!bmmpxt!efwfmpqnfou!jo!b!sbohf!gspn!:!up!47!exfmmjoh!vojut!qfs!bdsf/!Jo!mpxfs.joufotjuz!ofjhicpsippet!)U4!{pof*-!
uif!dpef!sfrvjsft!b!njy!pg!cvjmejoh!uzqft!up!qspwjef!ipvtjoh!dipjdft!puifs!uibo!tjohmf.gbnjmz!ipvtft/!Jo!npefsbuf.
joufotjuz!ofjhicpsippet!)U5!{pof*!xifsf!npsf!nvmujgbnjmz!cvjmejoht!bsf!bmmpxfe-!uif!dpef!mjnjut!cvjmejoh!xjeui!up!
bwpje!cvjmejoht!xjui!upp!mbshf!pg!b!gppuqsjou/!Uif!dpef!bqqmjft!b!wbsjfuz!pg!ifjhiu!tfucbdlt!po!bekbdfou!{poft!up!nblf!
tvsf!uibu!uif!tdbmf!boe!qiztjdbm!dibsbdufs!pg!uiftf!mpx.!up!npefsbuf.joufotjuz!ofjhicpsippet!jt!nbjoubjofe/!
up!npefsbuf.joufotjuz!ofjhicpsippet!bdsptt!uif!foujsf!djuz/!Uijt!xbt!epof!uispvhi!bo!fyufotjwf!bobmztjt!pg!fyjtujoh!
cvjmejoh!tfucbdlt-!cvjmejoh!ifjhiu-!boe!mpu!dpwfsbhf!up!efwfmpq!uif!tuboebset/!Jo!beejujpo-!uif!tuboebset!xfsf!gvsuifs!
ubjmpsfe!up!fbdi!ofjhicpsippe!uispvhi!b!uisff.mfwfm!tztufn;!Sftusjdufe-!Mjnjufe-!boe!Pqfo/!Fbdi!mfwfm!fjuifs!sfevdft!
ps!jodsfbtft!uif!bmmpxbcmf!nbyjnvn!cbtfe!po!jut!mpdbujpo!jo!uif!ofjhicpsippe!)f/h/!dpssjeps!tjuft!uzqjdbmmz!bsf!Pqfo-!
xijmf!uif!joufsjps!pg!ofjhicpsippet!nbz!cf!Sftusjdufe*/!Uijt!jt!bo!fggfdujwf!xbz!up!sfdphoj{f!ejggfsfou!offet!jo!b!{pof!
xjuipvu!dsfbujoh!npsf!{poft!gps!b!obsspx!qvsqptf/
59
Chapter 2: Code Analysis and Best Practices
Ifjhiu;!Uif!dpef!nfbtvsft!ifjhiu!up!uif!ijhiftu!fbwf/!Uif!U4!{pof!bmmpxt!vq!up!uxp!tupsjft!)36.gffu*!boe!uif!U5!
{pof!bmmpxt!vq!up!4!tupsjft!)51!gffu*/
Mpu!dpwfsbhf;!
dfsubjo!bsfbt/!Uif!U5!{pof!bmmpxt!71!qfsdfou/
Efotjuz;!Uif!U4!{pof!bmmpxt!gspn!:!up!29!exfmmjoh!vojut!qfs!bdsf-!boe!uif!U5!{pof!bmmpxt!vq!up!47!exfmmjoh!vojut!
qfs!bdsf/
Cvjmejoh!uzqft;!Uijt!dpef!epft!opu!tqfdjgz!ps!sfhvmbuf!cvjmejoh!uzqft/
Gspoubhf;!B!upubm!pg!tjy!uzqft-!jodmvejoh!dpnnpo!mbxo-!qpsdi-!ufssbdf-!gpsfdpvsu-!tuppq-!boe!tipqgspou-!qspwjef!
uif!pqujpot!gps!ipx!uif!tusffu.gbdjoh!gbdbeft!dpoofdu!up!boe!tibqf!uif!qvcmjd!sfbmn/!Uif!tipqgspou!jt!bo!pqujpo!
xijmf!dpnqmzjoh!xjui!uif!{pojoh/
Qbsljoh;!Qbsljoh!xbt!bqqspbdife!po!uif!cbtjt!pg!qspyjnjuz!up!ijhi.rvbmjuz!usbotju/!Gps!fybnqmf-!uif!cbtf!
sfrvjsfnfou!qfs!voju!jt!2/6!tqbdft-!cvu!uibu!dbo!cf!sfevdfe!cz!21!up!41!qfsdfou!efqfoejoh!po!uif!qspyjnjuz!up!
ijhi.rvbmjuz!usbotju!)xjuijo!b!rvbsufs!ps!ibmg.njmf*/!Jo!beejujpo-!wjtjups!qbsljoh!jt!2!qfs!21!tqbdft-!xijdi!jt!mpx-!
cvu!ju!jt!sfrvjsfe!pgg.tusffu!boe!vtft!vq!wbmvbcmf!tjuf!bsfb/!Qspkfdut!pg!gpvs!vojut!ps!mftt!bsf!opu!sfrvjsfe!up!qspwjef!
pgg.tusffu!qbsljoh/!Ipxfwfs-!uif!nbslfu!ibt!opu!bebqufe!up!uijt!boe!tujmm!fyqfdut!tpnf!pgg.tusffu!qbsljoh/
Joufhsbm!sfmjfg!gspn!tuboebset!
Uif!dpef!qspwjeft!nboz!pqqpsuvojujft!gps!benjojtusbujwf!sfevdujpot!jo!uif!tuboebset!uispvhi!b!xbjwfs!qspdftt/!
bwbjmbcmf-!fobcmjoh!ujnfmz!sfwjfx!boe!bqqspwbm/!Uif!dpef!qspwjeft!beejujpobm!gpsnt!pg!sfmjfg!gspn!uif!tuboebset-!cvu!
uifz!sfrvjsf!Qmboojoh!Dpnnjttjpo!sfwjfx/!
Cvjmu!sftvmut
Uif!dpef!ibt!fobcmfe!nvdi!sfjowftunfou!evf!up!uif!dmbsjuz!pg!uif!qspdftt!boe!ipx!uif!dpeft!tuboebset!xfsf!nbef!
sfmfwbou!up!b!xjef!wbsjfuz!pg!tublfipmefst/!Cvjmu!sftvmut!sbohf!gspn!dbssjbhf!ipvtft-!efubdife!ipvtft-!evqmfyft-!
spxipvtft-!tnbmm.!boe!nfejvn.tj{f!nvmujgbnjmz!cvjmejoht-!boe!tnbmm!Nbjo!Tusffu!cvjmejoht!uibu!jodmvef!ipvtjoh/!
Tp!gbs-!uif!nptu!qpqvmbs!cvjmejoh!uzqf!jt!uif!evqmfy/!Bddpsejoh!up!djuz!tubgg!boe!uif!dpef!qsfqbsfst-!opu!bt!nvdi!
nfejvn.tj{f!nvmujgbnjmz!ipvtjoh!jt!cfjoh!cvjmu!cfdbvtf!pgg.tusffu!qbsljoh!sfrvjsfnfout!bsf!tujmm!upp!ijhi-!zfu!uif!
nbslfu!tujmm!fyqfdut!tpnf!pgg.tusffu!qbsljoh/!
Dibmmfohft
Uif!nbslfut!pohpjoh!fyqfdubujpo!gps!qmfoujgvm!pgg.tusffu!qbsljoh!boe!efwfmpqfst!hpbm!up!ibwf!mpxfs!qbsljoh!
sfrvjsfnfout/
bmmpxfe!cz!ofx!{pojoh/
60
Chapter 2: Code Analysis and Best Practices
Ofx!Upxo!Tu/!Dibsmft-!Np/Uif!Ofx!Upxo!Dpef
Dpef!Qsfqbsfs;!Evboz!Qmbufs.\[zcfsl!
Dpoubdu;Ujn!Cvttf-!Upxo!Bsdijufdu-!Uif!Ofx!Upxo!bu!Tu/!Dibsmft
Cbdlhspvoe!boe!uif!sfbtpo!uif!dpef!xbt!qsfqbsfe
Uijt!dpef!jt!gps!bo!foujsfmz!ofx!efwfmpqnfou!po!b!837.bdsf!
bhsjdvmuvsbm!tjuf/!Uijt!qspkfdu!xbt!qmboofe!jo!3113!bt!b!ofx!
dpnnvojuz-!gps!uif!qvsqptf!pg!pggfsjoh!b!sbohf!pg!bggpsebcmf!
ipvtjoh!dipjdft!jo!tjy!xbmlbcmf!vscbo!ofjhicpsippet/
Ipx!xbt!uif!dpef!bepqufe@
Uif!dpef!xbt!bepqufe!jo!3114!uispvhiuif!Qmboofe!Njyfe.Vtf!
Efwfmpqnfou!qspdftt!boe!dpwfst!uif!foujsf!837.bdsf!tjuf/!Uif!
dpef!sfqmbdft!fyjtujoh!mboe!vtf!sfrvjsfnfout!boe!fyjtujoh!sfwjfx!
qspdfevsft!boe!jt!bqqmjfe!up!fbdi!mpu!bt!ju!jt!efwfmpqfe/
Xibu!epft!uif!dpef!bmmpx@!
U5/!Uif!U4!{pof!bmmpxt!nfejvn.up.mbshf!efubdife!ipvtft!vq!up!uxp!tupsjft-!bmpoh!xjui!
b!dbssjbhf!ipvtf!jo!bo!bddfttpsz!cvjmejoh/!Uif!U5!{pof!bmmpxt!vq!up!uisff!tupsjft!uispvhi!
tnbmm.up.mbshf!efubdife!ipvtft-!spxipvtft!)upxoipvtft*-!mjwf.xpsl!cvjmejoht-!boe!bqbsunfou!
cvjmejoht!)nbotjpo!cvjmejoht!xjui!5!up!7!vojut*/!
fyufotjwf!bobmztjt!pg!ijtupsjd!qbuufsot!jo!uif!sfhjpo/!Uijt!jogpsnbujpo!boe!uif!efwfmpqfst!jefbt!xfsf!usbotgpsnfe!
joup!b!nbtufs!qmbo!uispvhi!b!nvmuj.ebz!eftjho!dibssfuuf!jo!3114!xjui!dpotusvdujpo!tubsujoh!jo!3116/!Uif!nbtufs!qmbo!
tfucbdlt-!cvjmejoh!ifjhiu-!boe!mpu!dpwfsbhf/!
Ifjhiu;!
4!tupsjft/
Mpu!dpwfsbhf;!Uif!U4!{pof!bmmpxt!51!qfsdfou!boe!uif!U5!{pof!bmmpxt!71!qfsdfou/
Efotjuz;!Uif!dpef!epft!opu!sfhvmbuf!uif!efotjuz!pg!joejwjevbm!cvjmejoht!cvu!uif!pwfsbmm!ovncfs!pg!vojut!jt!
Cvjmejoh!uzqft;!B!upubm!pg!tfwfo!cvjmejoh!uzqft!bsf!bmmpxfe!jo!uif!{poft;!uxp!uzqft!jo!U4!boe!tjy!uzqft!jo!U5/!Uif!
dpef!jodmveft!qmbo!ejbhsbnt!tipxjoh!uif!tuboebset!gps!fbdi!bmmpxfe!cvjmejoh!uzqf!jo!fbdi!{pof/!Bqqmjdbout!
qsfqbsjoh!uifjs!pxo!qmbot!sfrvjsf!sfwjfx!boe!bqqspwbm!cz!uif!Upxo!Bsdijufdu!qsjps!up!tvcnjuubm!up!uif!Djuz!gps!
Gspoubhf;!B!upubm!pg!tfwfo!gspoubhf!uzqft!tibqf!uif!qvcmjd!sfbmn<!dpnnpo!mbxo-!qpsdi!boe!gfodf-!ufssbdf-!
gpsfdpvsu-!tuppq-!tipqgspou-!boe!hbmmfsz!bsf!bmmpxfe!efqfoejoh!po!uif!mpdbujpo/
Qbsljoh;!Qbsljoh!xbt!bqqspbdife!gspn!uif!cbtjt!pg!offejoh!mftt!pgg.tusffu!qbsljoh!cfdbvtf!xbmljoh!boe!cjljoh!
bsf!joufhsbufe!joup!uif!tjuf!eftjho!pg!uif!pwfsbmm!efwfmpqnfou!boe!gps!fbdi!cmpdl/!Po.tusffu!qbsljoh!jt!bmmpxfe!
boe!dpvoufe!upxbse!uif!sfrvjsfe!bnpvou/
61
Chapter 2: Code Analysis and Best Practices
Joufhsbm!sfmjfg!gspn!tuboebset!
Uif!dpef!epft!opu!qspwjef!pqujpot!gps!benjojtusbujwf!sfevdujpot!jo!uif!tuboebset/!Ipxfwfs-!uif!qspkfdu!xbt!
ftubcmjtife!xjui!b!upxo!bsdijufdu!sfqsftfoujoh!uif!efwfmpqfs!boe!uif!dpnnvojuz/!Uif!upxo!bsdijufdu!sfwjfxt!bmm!
qspqptfe!qmbot!boe!nblft!b!sfdpnnfoebujpo!up!uif!Bsdijufduvsbm!Sfwjfx!Cpbse-!boe!jogpsnt!uif!Djuz!jg!uif!qmbot!
bsf!dpotjtufou!xjui!uif!dpef!boe!sfbez!gps!bqqspwbm/!Cfdbvtf!uif!nbtufs!qmbo!boe!wjtjpo!bsf!dmfbs!bcpvu!uif!qiztjdbm!
fyqfdubujpot!gps!uif!tjuf-!uif!upxo!bsdijufdu!dbo!xpsl!xjui!efwfmpqfst!boe!joejwjevbm!pxofst!up!bekvtu!uifjs!qmbot!
uispvhi!b!tjnqmf!qspdftt/!Jg!uif!upxo!bsdijufdu!sfdpnnfoet!uibu!b!wbsjbodf!jt!ofdfttbsz-!uif!upxo!bsdijufdu!tvcnjut!
uif!wbsjbodf!up!uif!Djuz!gps!sfwjfx!boe!bqqspwbm!jo!uif!tbnf!xbz!bt!ju!sfwjfxt!qspqptfe!qmbot/
Cvjmu!sftvmut!
Uijt!efwfmpqnfou!jt!pwfs!61!qfsdfou!cvjmu.pvu/!Uif!cvjmu!sftvmut!sbohf!gspn!dbssjbhf!ipvtft-!efubdife!ipvtft-!boe!
spxipvtft!up!nfxt!vojut!bmpoh!b!qfeftusjbo!qbttbhf-!tnbmm.!boe!nfejvn.tj{fe!nvmujgbnjmz!cvjmejoht-!boe!Nbjo!
Tusffu!cvjmejoht!uibu!jodmvef!ipvtjoh/
Dibmmfohft
Cvjmejoh!Efqbsunfou!tubgg!xip!xfsf!jojujbmmz!vogbnjmjbs!xjui!uif!{pojoh!boe!tuboebset!gps!uif!qspkfdu!offefe!
tqfdjbmj{fe!usbjojoh!up!cfdpnf!gbnjmjbs!xjui!uif!dpnnvojuzt!qsjodjqmft!boe!ejggfsfou!bqqspbdi!up!ofjhicpsippe!
efwfmpqnfou/
)mbshfs*-!fbtfnfout/
)mbshfs*-!fbtfnfout-!tusffut!boe!bmmfzt/!Uijt!bggfdut!efwfmpqnfou!dptut!bt!xfmm!bt!vojoufoefe!dpotfrvfodft!pg!
pwfsmz!xjef!bmmfzt!uifo!cfjoh!dpotjefsfe!tusffut!boe!beejujpobm!sfrvjsfnfout/
Uif!tubuvt!rvp!jt!bddfqubcmf!gps!uif!nbkpsjuz!pg!cvjmefst!jo!uif!bsfb-!boe!eftqjuf!uijt!qspkfdut!tvddftt-!mpdbm!
cvjmefst!wjfx!uijt!qspkfdu!ejggfsfoumz!boe!opu!bo!fybnqmf!up!gpmmpx/
62
Chapter 2: Code Analysis and Best Practices
Ebzcsfbl-!Tpvui!Kpsebo-!Vubi
Dpef!Qsfqbsfs;!Ebzcsfbl!Dpnnvojujft
Dpoubdu;Dbnfspo!Kbdltpo-!Ebzcsfbl!Dpnnvojujft
Cbdlhspvoe!boe!uif!sfbtpo!uif!dpef!xbt!qsfqbsfe
Uif!dpef!xbt!ofdfttbsz!up!cvjme!bo!foujsfmz!ofx!efwfmpqnfou!po!
b!5-261.bdsf!tjuf!pg!bhsjdvmuvsbm!mboe/!Uif!efwfmpqfs-!Ebzcsfbl!
Dpnnvojujft-!xpslfe!xjui!uif!dpnnvojuz!pg!Tpvui!Kpsebo!up!
qmbo!uif!tjuf!gps!tfwfsbm!wjmmbhft!pg!xbmlbcmf!ofjhicpsippet-!
ofjhicpsippe!boe!dpnnvojuz.mfwfm!Nbjo!Tusffu!fowjsponfout-!boe!
fnqmpznfou!bsfbt/!Uif!qsfwjpvt!{pojoh!eje!opu!bmmpx!uif!qspqptfe!
efwfmpqnfou!boe!eje!opu!boujdjqbuf!uif!fyufou!pg!uijt!nbtufs!qmbo/!
Jo!3113-!b!nbtufs!qmbo!xbt!qsfqbsfe!gps!uif!foujsf!tjuf!bmpoh!xjui!b!
ofx!{pojoh!ejtusjdu!tvqqpsufe!cz!eftjho!hvjefmjoft/!Uif!hvjefmjoft!gps!
ipvtft!bsf!npsf!efubjmfe!uibo!uiptf!gps!cvjmejoht!pg!buubdife!vojut/!Uijt!
jt!cfdbvtf!pg!uif!wfsz!xjef!sbohf!pg!qiztjdbm!dpoufyut!uibu!uif!hvjefmjoft!
xpvme!ibwf!up!beesftt!boe!uif!ufbnt!joufou!up!lffq!uijoht!tjnqmf/!
Ipx!xbt!uif!dpef!bepqufe@
Uif!efwfmpqfs!xpslfe!xjui!uif!dpnnvojuz!uispvhi!b!nbtufs!qmboojoh!qspdftt!up!
ftubcmjti!uif!offet!jo!uijt!bsfb!boe!uif!uzqft!pg!efwfmpqnfou!uibu!xpvme!cftu!beesftt!uiptf!
offet/!Jo!beejujpo!up!qspwjejoh!b!xjef!sbohf!pg!ipvtjoh!dipjdft-!ju!xbt!ftubcmjtife!uibu!ofx!djsdvmbujpo!ufdiojrvft!
xpvme!cf!qbsu!pg!uif!ofx!dpnnvojuz!jodmvejoh!mjhiu!sbjm!usbotju/!Uiftf!uzqft!pg!tpmvujpot!xfsf!joufhsbufe!gspn!uif!
pvutfu!up!efnpotusbuf!uibu!uijt!efwfmpqnfou!xbt!beesfttjoh!boe!jnqspwjoh!vqpo!fyjtujoh!jttvft!boe!opu!tjnqmz!
beejoh!ipvtft/
Bt!qbsu!pg!uif!nbtufs!qmboojoh!qspdftt-!uif!{pojoh!xbt!dibohfe!up!QD!)Qmboofe!Dpnnvojuz*!xjui!b!cspbe!foujumfnfou!
bdsptt!uif!5-261.bdsf!tjuf!gps!31-111!vojut!boe!:!njmmjpo!trvbsf!gffu!pg!opo.sftjefoujbm!tqbdf/!Uif!nbtufs!qmbo!boe!
ofx!{pojoh!xfsf!qsfqbsfe!up!cf!dmfbs!fopvhi!bcpvu!uif!joufou!pg!xibu!jt!boe!jt!opu!bmmpxfe!tp!uibu!bmm!bqqspwbmt!bsf!
efwfmpqfs!up!sftqpoe!up!dibohjoh!nbslfu!offet!xjuipvu!offejoh!up!sfwjtf!uif!qmbo!ps!tuboebset/!
xpslt!xjui!uif!joejwjevbm!efwfmpqfst!eftjho!ufbn!up!qmbo!fbdi!cmpdl!jo!uif!qspkfdu!boe!up!ejtusjcvuf!uif!cvjmejoh!
uzqft!up!ejggfsfou!cmpdlt!jotufbe!pg!uif!uzqjdbm!qsbdujdf!pg!dpodfousbujoh!uifn!po!uif!tjuf!uibu!fbdi!efwfmpqfs!dpouspmt/
fevdbujpo0dpnnvojuz!fohbhfnfou!cz!uif!efwfmpqfs!fbdi!ujnf!gbs!cfgpsf!uif!bqqmjdbujpo!jt!tvcnjuufe!up!uif!Djuz/!
bsf!opu!pwfsmz!efubjmfe!cfdbvtf!pg!gpvs!lfz!bdujpot!cz!uif!efwfmpqfs;!b!efnpotusbufe!dpnnjunfou!up!tpmwjoh!ipvtjoh-!
djsdvmbujpo!boe!fowjsponfoubm!jttvft!uispvhijoopwbujwf!efwfmpqnfou!qbuufsot!boe!ufdiojrvft-!opu!cvtjoftt!bt!
vtvbm<!bo!joufhsbm!eftjho!ufbn!uibu!gvodujpot!jo!b!spmf!tjnjmbs!up!uif!upxo!bsdijufdut!spmf!jo!puifs!mbshf!efwfmpqnfout<!
b!efnpotusbufe!dpnnjunfou!up!ijhi!rvbmjuz!eftjho<!boe!pohpjoh!dpnnvojuz!fohbhfnfou!gps!fbdi!qspkfdu/!Uijt!uzqf!
pg!dpnnjunfou!cz!uif!efwfmpqfs!fyqmbjot!uif!djuzt!ijhi!dpngpsu!mfwfm!xjui!ipx!uif!qspkfdu!jt!jnqmfnfoufe!fwfo!
uipvhi!uif!qmbo!boe!tuboebset!bsf!mftt!efubjmfe!uibo!nptu!mbshf!qspkfdut/
63
Chapter 2: Code Analysis and Best Practices
Xibu!epft!uif!dpef!bmmpx@
Uif!{pojoh!bmmpxt!vq!up!31-111!vojut!boe!:!njmmjpo!trvbsf!gffu!pg!fnqmpznfou-!sfubjm!boe!tfswjdf/!Uif!{pojoh!boe!
hvjefmjoft!bmmpx!b!qbmfuuf!pg!cvjmejoh!uzqft!uibu!dpoujovft!up!hspx!bt!uif!qspkfdu!dpoujovft;!tnbmm!up!mbshf!ipvtft-!
evqmfyft-!gpvsqmfyft-!upxoipvtft!bssbohfe!jo!hspvqjoht!pg!4!up!:!xjui!uif!uzqjdbm!hspvqjoh!bu!5!up!7!vojut-!nfxt-!
4.tupsz!bqbsunfout!boe!5.tupsz!vojut!ofbs!uif!mjhiu!sbjm!tubujpo/!Uif!dpef!sfqmbdfe!uif!qsfwjpvt!mboe!vtf!sfrvjsfnfout!
boe!fyjtujoh!sfwjfx!qspdfevsft/
xbt!usbotgpsnfe!joup!b!nbtufs!qmbo!gps!uif!foujsf!tjuf!jo!3113!xjui!dpotusvdujpo!tubsujoh!jo!3115/!Uif!nbtufs!qmbo!
ifjhiu-!boe!mpu!dpwfsbhf!xjui!xijdi!up!nblf!uif!tuboebset/
Ifjhiu;!Uif!dpef!bmmpxt!uif!cvjmejoh!uzqft!sfmfwbou!up!uijt!bobmztjt!vq!up!5!tupsjft/!
Mpu!dpwfsbhf;!Uif!dpef!epft!opu!sfhvmbuf!mpu!dpwfsbhf-!sfmzjoh!jotufbe!po!cvjmejoh!tfucbdlt!boe!sfrvjsfe!pqfo!
tqbdf/
Efotjuz;!Uif!dpef!epft!opu!sfhvmbuf!uif!efotjuz!pg!joejwjevbm!cvjmejoht!cvu!sfhvmbuft!uif!pwfsbmm!ovncfs!pg!vojut!
bhsffe!up!xjuijo!uif!5-261.bdsf!tjuf/
Cvjmejoh!uzqft;!Uif!dpef!epft!opu!sfhvmbuf!cvjmejoh!uzqft-!cvu!bt!nfoujpofe!bcpwf-!uif!qbmfuuf!pg!cvjmejoh!uzqft!
cfjoh!efwfmpqfe!jt!vtfe!bt!b!sfgfsfodf!qpjou!gps!ofx!qspkfdut/
Qbsljoh;!Pgg.tusffu!qbsljoh!jt!sfrvjsfe!bu!pof!tqbdf!qfs!voju-!cvu!uif!nbslfu!jt!tujmm!mbshfmz!tvcvscbo!boe!jt!
btljoh!gps!npsf!qbsljoh!boe!jt!cfjoh!cvjmu!bu!uxp!tqbdft!qfs!voju/
Joufhsbm!sfmjfg!gspn!tuboebset
Uif!efwfmpqnfou!jt!jnqmfnfoufe!uispvhib!eftjho!ufbn!uibu!xpslt!gps!uif!nbtufs!efwfmpqfs-!Ebzcsfbl!
Dpnnvojujft/!Uif!eftjho!ufbn!sfwjfxt!bmm!qspqptfe!qmbot!boe!pomz!qsftfout!uif!qspqptfe!qspkfdu!up!uif!Djuz!xifo!
ju!nffut!uif!sfrvjsfnfout/!Bt!qbsu!pg!uibu!dpmmbcpsbujpo-!Ebzcsfblt!eftjho!ufbn!xpslt!xjui!fbdi!efwfmpqfs!up!bekvtu!
uifjs!qmbot!boe0ps!qspqptf!b!tpmvujpo!uibu!jt!xjuijo!uif!joufou!pg!uif!nbtufs!qmbo!boe!{pojoh!xjuipvu!uif!offe!gps!
Cvjmu!sftvmut
Uijt!efwfmpqnfou!jt!gbs!gspn!cvjmu.pvu-!ibwjoh!tubsufe!dpotusvdujpo!jo!3115!boe!bqqspyjnbufmz!36!qfsdfou!dpnqmfuf!
)6-311!pg!31-111!vojut*/!Uif!cvjmu!sftvmut!sbohf!gspn!b!wbsjfuz!pg!efubdife!ipvtft-!evqmfyft-!upxoipvtft-!boe!nfxt!
vojut!up!tnbmm.!boe!nfejvn.tj{f!nvmujgbnjmz!cvjmejoht-!boe!Nbjo!Tusffu!cvjmejoht!uibu!jodmvef!ipvtjoh/
Jut!jnqpsubou!up!opuf!uibu!fwfo!uipvhi!uijt!qspkfdu!qspwjeft!cz.sjhiu!bqqspwbm!boe!op!dpnnvojuz!fohbhfnfou!
jt!sfrvjsfe-!uijt!nbtufs!efwfmpqfs!voefstuboet!uif!offe!up!fohbhf!uif!dpnnvojuz!po!fbdi!qspqptfe!qspkfdu!up!
nbjoubjo!dpnnvojdbujpo!boe!b!qptjujwf!sfmbujpotijq/!
Dbnfspo!Kbdltpo
64
Chapter 2: Code Analysis and Best Practices
Lfoumboet-!Hbjuifstcvsh-!Ne/NYE!\[pof-!Njyfe!Vtf!
Efwfmpqnfou-!Ejwjtjpo!2:-!Tfd/!35.271E
Dpef!Qsfqbsfs;!Evboz!Qmbufs.\[zcfsl
Dpoubdu!bu!Djuz;!Usvez!Tdixbs{-!Qmboojoh!Ejwjtjpo!Dijfg-!Djuz!pg!
Hbjuifstcvsh-!Nbszmboe
Cbdlhspvoe!boe!uif!sfbtpo!uif!dpef!xbt!qsfqbsfe!
Uijt!dpef!xbt!ofdfttbsz!up!cvjme!bo!foujsfmz!ofx!efwfmpqnfou!
po!b!463.bdsf!tjuf!gpsnfsmz!pddvqjfe!cz!b!gbsn!boe!b!gfx!ipvtft/!
Uif!hpbm!pg!uif!efwfmpqfs!gspn!uif!pvutfu!pg!uijt!qspkfdu!jo!2:98!
ibt!cffo!up!efwfmpq!xbmlbcmf!vscbo!ofjhicpsippet-!jodmvejoh!b!
tnbmm!epxoupxo/!Uijt!efwfmpqnfou!qbuufso!sfnbjot!wfsz!ejggfsfou!
gspn!uif!tqsbxmjoh!tvcvsct!tvsspvoejoh!uif!qspkfdu/!Uif!dpef!
jnqmfnfout!b!nbtufs!qmbo!boe!wjtjpo!gps!uif!tjuf!uibu!xfsf!qsfqbsfe!
jo!b!qvcmjd!eftjho!dibssfuuf/!Uif!dpef!xbt!bepqufe!jo!2:99!uispvhiuif!
NYE!)Njyfe!Vtf!Efwfmpqnfou*!{pof!boe!sfqmbdft!uif!fyjtujoh!{pojoh!bt!
fbdi!bsfb!ps!mpu!jt!efwfmpqfe/
Uif!qsfwjpvt!{pojoh!eje!opu!bmmpx!uif!qspqptfe!efwfmpqnfou/!Jo!beejujpo-!
opu!qspnpuf!ops!xfsf!bcmf!up!jnqmfnfou!uif!xbmlbcmf!fowjsponfou!qspqptfe!cz!uif!
efwfmpqfs/!Uif!bepqufe!mbohvbhf!jo!uif!NYE!{pof!tubuft!///
!Jo!beejujpo-!uif!dpef!tubuft!bt!pof!pg!jut!
qvsqptft!///
Ipx!xbt!uif!dpef!bepqufe@
Uif!dpef!xbt!bepqufe!bt!b!nboebupsz!{pojoh!ejtusjdu!uibu!jt!bqqmjfe!bt!fbdi!tjuf!xjuijo!uif!463!bdsft!jt!efwfmpqfe/
Xibu!epft!uif!dpef!bmmpx@!
Uif!dpef!vtft!pof!{pof!cvu!bsujdvmbuft!uif!joufoefe!qiztjdbm!dibsbdufs!uispvhib!qbmfuuf!pg!fjhiu!cvjmejoh!uzqft;!
dbssjbhf!ipvtft-!tnbmm!up!mbshf!ipvtft-!evqmfyft-!upxoipvtft-!hbsbhf!upxoipvtft-!mjwf.xpsl!cvjmejoht-!bqbsunfout!
boe!Nbjo!Tusffu!cvjmejoht/!Jo!beejujpo-!uif!dpef!bmmpxt!fbdi!mpu!gps!tjohmf.gbnjmz!ipvtf!)buubdife!ps!efubdife*!up!
bmtp!dpoubjo!bo!vscbo!dpuubhf-!b!tnbmmfs-!tfdpoebsz!voju/!Uif!vscbo!dpuubhf!dbo!cf!vq!up!2-311!trvbsf!gffu/!Uif!dpef!
sfqmbdft!fyjtujoh!mboe!vtf!sfrvjsfnfout!boe!fyjtujoh!sfwjfx!qspdfevsft/
ofjhicpsippe!uispvhi!bo!fyufotjwf!bobmztjt!pg!ijtupsjd!qbuufsot!jo!uif!bsfb/!Uijt!jogpsnbujpo!xbt!usbotgpsnfe!joup!
b!nbtufs!qmbo!gps!uif!463.bdsf!tjuf!uispvhi!b!nvmuj.ebz!eftjho!dibssfuuf!jo!2:99!xjui!dpotusvdujpo!tubsujoh!jo!2::2/!
cvjmejoh!uzqft-!tfucbdlt-!cvjmejoh!ifjhiu-!boe!mpu!dpwfsbhf/!
Ifjhiu;!Uif!dpef!bmmpxt!uif!cvjmejoh!uzqft!sfmfwbou!up!uijt!bobmztjt!vq!up!5!tupsjft/!Joufsftujohmz-!uifsf!jt!op!
ifjhiu!mjnju!gps!tusvduvsft!ps!qpsujpot!pg!tusvduvsft!xjui!b!gppuqsjou!pg!mftt!uibo!326!trvbsf!gffu/!
Mpu!dpwfsbhf;!Uif!dpef!epft!opu!sfhvmbuf!mpu!dpwfsbhf-!sfmzjoh!jotufbe!po!cvjmejoh!tfucbdlt!boe!sfrvjsfe!pqfo!tqbdf/
65
Chapter 2: Code Analysis and Best Practices
Efotjuz;!Uif!dpef!epft!opu!sfhvmbuf!uif!efotjuz!pg!joejwjevbm!cvjmejoht!cvu!sfhvmbuft!uif!pwfsbmm!ovncfs!pg!vojut!
Cvjmejoh!uzqft;!
bqbsunfou!cvjmejoht!boe!Nbjo!Tusffu!cvjmejoht/
Gspoubhf;!Uif!dpef!epft!opu!tqfdjgz!gspoubhf!uzqft!cvu!sfrvjsft-!bt!nptu!GCDt!ep-!uibu!b!njojnvn!bnpvou!pg!
uif!cvjmejoht!gbdbef!cf!qmbdfe!bmpoh!uif!gspou!tfucbdl/!Uijt!jt!joufoefe!up!tibqf!uif!qvcmjd!sfbmn!boe!jt!uzqjdbmmz!
epof!jo!puifs!GCDt!uispvhi!gspoubhf!uzqft/
Qbsljoh;!
dpoufyu!tvsspvoejoh!uif!efwfmpqnfou/
Joufhsbm!sfmjfg!gspn!tuboebset!
Uif!dpef!epft!opu!qspwjef!pqujpot!gps!benjojtusbujwf!sfevdujpot!jo!uif!tuboebset/!Ipxfwfs-!uif!qspkfdu!xbt!
ftubcmjtife!xjui!b!upxo!bsdijufdu!sfqsftfoujoh!uif!efwfmpqfs!boe!uif!dpnnvojuz/!Uif!upxo!bsdijufdu!sfwjfxt!bmm!
boe!wjtjpo!bsf!dmfbs!bcpvu!uif!qiztjdbm!fyqfdubujpot!gps!uif!tjuf-!uif!upxo!bsdijufdu!dbo!xpsl!xjui!efwfmpqfst!up!bekvtu!
Cvjmu!sftvmut!
Uijt!efwfmpqnfou!jt!ofbsmz!cvjmu.pvu-!ibwjoh!cffo!voefs!dpotusvdujpo!tjodf!2::2/!Uif!cvjmu!sftvmut!sbohf!gspn!
dbssjbhf!ipvtft-!efubdife!ipvtft-!evqmfyft!boe!spxipvtft!up!tnbmm.!boe!nfejvn.tj{f!nvmujgbnjmz!cvjmejoht!boe!
Nbjo!Tusffu!cvjmejoht!uibu!jodmvef!b!wbsjfuz!pg!ipvtjoh!dipjdft/
66
Chapter 2: Code Analysis and Best Practices
Djodjoobuj-!PijpDibqufs!2814!Gpsn.Cbtfe!Dpef
Dpef!Qsfqbsfs;!Pqujdpt!Eftjho-!Jod/
Dpoubdu!bu!Djuz;!Bmfy!Qfqqfst-!BJDQ-!Tvqfswjtjoh!Djuz!Qmboofs-!Efqbsunfou!
pg!Djuz!Qmboojoh
Cbdlhspvoe!boe!uif!sfbtpo!uif!dpef!xbt!qsfqbsfe
Uijt!dpef!jt!b!gpsn.cbtfe!tfu!pg!ojof!{poft!boe!tuboebset!gps!53!
ofjhicpsippe!dfoufst!boe!uif!bekbdfou!ofjhicpsippet/!Tjy!pg!uif!
{poft!bsf!sfmfwbou!up!uif!gpdvt!pg!uijt!bobmztjt/!Uif!bsfbt!up!cf!
bt!dvssfoumz!xbmlbcmf!ps!bt!bsfbt!uibu!uifz!eftjsfe!up!cf!xbmlbcmf/!
Uijt!xbt!qbsu!pg!b!mbshfs!fggpsu!up!bqqmz!b!gpsn.cbtfe!bqqspbdi!
/!Uif!
up!Djodjoobujt!Dpnqsfifotjwf!Qmbo-!
ofjhicpsippet!sbohf!gspn!mpx.joufotjuz!tjohmf.gbnjmz!ofjhicpsippet!
xjui!uisjwjoh!ofjhicpsippe!Nbjo!Tusffut!up!ijhifs!joufotjuz!
ofjhicpsippet!xjui!boe!xjuipvu!ofjhicpsippe!Nbjo!Tusffut/!
Ipx!xbt!uif!dpef!bepqufe@!
Podf!bqqmjfe-!uif!dpef!jt!nboebupsz!boe!sfqmbdft!uif!fyjtujoh!{pojoh!xjui!
gpsn.cbtfe!{poft/!Uifo-!uif!tuboebset!bqqmz!up!ofx!cvjmejoht!boe!beejujpot/!Uif!
eftjho!dibssfuuf!qspdftt/!Podf!uif!dpnnvojujft!dpvme!tff!xiz!fbdi!{pof!xbt!dsfbufe-!uifz!dpvme!uifo!
jefoujgz!xijdi!{pof)t*!bsf!up!cf!bqqmjfe!up!uifjs!ofjhicpsippe/!Uijt!qspdftt!xbt!ftubcmjtife!xjui!b!qjmpu!hspvq!pg!
gpvs!ofjhicpsippet!uibu!uftufe!uijt!qspdftt-!qbwjoh!uif!xbz!gps!gvuvsf!ofjhicpsippet!up!ep!uif!tbnf!xifo!sfbez/!
ofjhicpsippet/
Xibu!epft!uif!dpef!bmmpx@!
Uif!dpef!bmmpxt!b!sbohf!pg!cvjmejoh!uzqft-!jodmvejoh!dbssjbhf!ipvtft-!evqmfyft-!tjyqmfyft-!nvmujqmfy!cvjmejoht-!
mjwf.xpsl!cvjmejoht-!dpvsuzbse!cvjmejoht-!boe!Nbjo!Tusffu!cvjmejoht!xjui!ipvtjoh/!Uif!cvjmejoht!sbohf!gspn!3!up!5!
tupsjft!efqfoejoh!po!uif!{pof/!Uif!dpef!sfqmbdft!fyjtujoh!mboe!vtf!sfrvjsfnfout!boe!tpnf!qspdfevsft-!xijmf!sfmzjoh!
po!nptu!fyjtujoh!sfwjfx!qspdfevsft/
Ifjhiu;!
tupsjft/!Uif!U6NT!boe!U6/MT!{poft!bmmpx!vq!up!5!tupsjft/
Mpu!dpwfsbhf;!Uif!U4!{poft!bsf!mjnjufe!up!46!qfsdfou-!xijmf!uif!puifs!{poft!bsf!mjnjufe!cz!uif!tfucbdlt!boe!pqfo!
tqbdf!sfrvjsfnfout/
Efotjuz;!Uif!dpef!epft!opu!nfoujpo!ps!vtf!efotjuz!bt!b!sfhvmbujpo/!Uijt!jt!qpttjcmf!cfdbvtf!pg!uif!fyufotjwf!
fbdi!pg!uif!ejggfsfou!ofjhicpsippet/!Xjui!uijt!voefstuboejoh!bcpvu!uif!bduvbm!qfsgpsnbodf-!tj{f!boe!tdbmf!pg!
fbdi!cvjmejoh!uzqf-!uif!offe!up!sfhvmbuf!cz!efotjuz!op!mpohfs!fyjtufe/
67
Chapter 2: Code Analysis and Best Practices
Cvjmejoh!uzqft;!Ojof!bmmpxfe!cvjmejoh!uzqft-!jodmvejoh!dbssjbhf!ipvtf-!efubdife!ipvtf-!evqmfy-!tjyqmfy-!
dpuubhf!dpvsu-!spxipvtf-!mjwf.xpsl-!nvmujqmfy!)vq!up!31!vojut*!boe!Nbjo!Tusffu!cvjmejoh-!qspwjef!uif!pqujpot!
gps!efwfmpqnfou!bdsptt!uiftf!ofjhicpsippet/!Uijt!xjef!qbmfuuf!pg!uzqft!jt!ofdfttbsz!up!beesftt!uif!joufoefe!
qiztjdbm!dibsbdufs!pg!uif!53!ofjhicpsippet-!bt!nboz!pg!uif!eftjsfe!uzqft!bmsfbez!fyjtu!cvu!xfsf!opu!
bdlopxmfehfe!cz!uif!fyjtujoh!{pojoh/!
Gspoubhf;!
mpu/!Fbdi!gspoubhf!uzqf!dpoofdut!uif!qvcmjd!sfbmn!up!joejwjevbm!efwfmpqnfou!pg!cvjmejoht!xijmf!jnqspwjoh!uif!
qvcmjd!sfbmn/
Qbsljoh;!Uif!bqqspbdi!up!qbsljoh!bdlopxmfehft!uif!fyjtujoh!boe!joufoefe!ofjhicpsippe!nbjo!tusffut!xjui!uif!
sbohf!pg!tfswjdft-!sfubjm!boe!sftubvsbout!xjuijo!tipsu!xbmljoh!ejtubodf!pg!nptu!exfmmjoht!jo!uiftf!ofjhicpsippet/!
Uif!U4!{poft!sfrvjsf!bu!mfbtu!pof!tqbdf!qfs!voju/!Uif!U5!{poft!sfrvjsf!gspn!1/6!up!2!tqbdf!qfs!voju!boe!uif!U6!
{poft!sfrvjsf!pof!tqbdf!qfs!2-611!trvbsf!gffu/
Joufhsbm!sfmjfg!gspn!tuboebset!
Uif!dpef!eftdsjcft!b!tfu!pg!tjuvbujpot!xifsf!b!wbsjbujpo!gspn!uif!tuboebset!nbz!cf!hsboufe!benjojtusbujwfmz/!Uif!
bmmpxbcmf!tjuvbujpot!gps!hsboujoh!b!wbsjbujpo!jodmvef!sfevdujpot!jo!tfucbdlt-!sfevdjoh!uif!bnpvou!pg!gbdbef!bmpoh!b!
cvjme.up!mjof-!sfevdjoh!mpu!ejnfotjpot-!boe!sfevdjoh!pgg.tusffu!qbsljoh!sfrvjsfnfout/!Fbdi!ofjhicpsippe!ibt!fyjtufe!gps!
pwfs!211!zfbst-!xijdi!qsftfout!nboz!tjuvbujpot!boe!vojrvf!gbdupst!jo!fyjtujoh!dpoejujpot!)tjuf!gfbuvsft-!usfft-!fud/*/!Uijt!
Cvjmu!sftvmut
Uif!cvjmu!sftvmut!bsf!qsjnbsjmz!jo!uif!vqqfs!foe!pg!uif!joufotjuz!sbohf!xjui!mpx.!up!npefsbuf.joufotjuz!cvjmejoht!
fyqfdufe!jo!uif!ofyu!hspvq!pg!efwfmpqnfou!bqqmjdbujpot/
68
Chapter 2: Code Analysis and Best Practices
Nftb-!Bsj{/Dfousbm!Nbjo!Bsfb!Dpef
Dibqufst!67!uispvhi!75
Dpef!Qsfqbsfs;!Pqujdpt!Eftjho-!Jod/
Dpoubdu!bu!Djuz;
Usbotgpsnbujpo-!Djuz!pg!Nftb-!B\[
Cbdlhspvoe!boe!uif!sfbtpo!uif!dpef!
xbt!qsfqbsfe!
Uijt!dpef!jt!b!tfu!pg!gpsn.cbtfe!{poft!gps!uif!
dfousbm!bsfb!pg!Nftb-!jodmvejoh!uif!epxoupxo/!
Uif!dpef!xbt!qsfqbsfe!up!sfbmj{f!cfuufs!xbmlbcmf!
vscbo!efwfmpqnfou!xijmf!jnqspwjoh!uif!sfwjfx!boe!
qspdfttjoh!ujnf!gps!efwfmpqnfou!bqqmjdbujpot/
Ipx!xbt!uif!dpef!bepqufe@!
Uif!dpef!xbt!bepqufe!bt!bo!pqujpobm!gpsn.cbtfe!dpef!jo!
3123/!Uif!pqujpobm!btqfdu!xbt!jo!sftqpotf!up!uif!uifo.qspqptfe!
Qspqptjujpo!318-!xijdi!xbt!mbufs!bepqufe!boe!sfrvjsft!djujft!
up!sfjncvstf!qspqfsuz!pxofst!gps!sfbm!mptt!jo!qspqfsuz!wbmvf!
dmbjnt!boujdjqbufe!xjui!b!mbshf.tdbmf!djuz.jojujbufe!sf{pojoh-!Nftb!efdjefe!up!
qspwjef!uif!gpsn.cbtfe!dpef!bt!bo!pqujpo!up!uif!fyjtujoh!{pojoh/!Bt!b!sftvmu-!jg!bo!
bqqmjdbou0pxofs!xbout!up!vtf!uijt!dpef-!uijt!dpef!sfrvjsft!uibu!uifz!dipptf!up!pqu!joup!uif!
gpsn.cbtfe!dpef!bt!qbsu!pg!uif!bqqmjdbujpo!qspdftt/!Uif!qspdftt!jt!tjnqmf!boe!rvjdl-!cvu!uif!pxofs!
nvtu!pqu!joup!uif!gpsn.cbtfe!dpef!ps!tubz!xjui!uif!fyjtujoh!{pojoh/
Podf!uif!bqqmjdbou!pqut!joup!uif!gpsn.cbtfe!dpef-!uif!dpef!jt!nboebupsz!boe!sfqmbdft!uif!fyjtujoh!{pojoh/!Uifo-!
eftjho!dibssfuuf!qspdftt!uibu!uftufe!uif!fnfshjoh!tuboebset!bhbjotu!uif!dpnnvojuzt!fyqfdubujpot!cfgpsf!nbljoh!
Xibu!epft!uif!dpef!bmmpx@
Uif!dpef!jodmveft!tjy!{poft!sbohjoh!gspn!mpx.joufotjuz!tjohmf.gbnjmz!ofjhicpsippet!)U4*!vq!up!joufotf!epxoupxo!
Nbjo!Tusffu!fowjsponfout!)U6!boe!U7*/!Uif!mpx.!up!npefsbuf.joufotjuz!ofjhicpsippet!bsf!uif!gpdvt!pg!uijt!bobmztjt!
)U4O-!U5O-!U5OG-!boe!U5NT*/
fyufotjwf!bobmztjt!pg!ijtupsjd!qbuufsot!jo!uif!sfhjpo/!Uijt!jogpsnbujpo!xbt!usbotgpsnfe!joup!qpttjcmf!pvudpnft!boe!
dpssftqpoejoh!tuboebset!uispvhi!b!nvmuj.ebz!eftjho!dibssfuuf!jo!3121/!Uiptf!sftvmut!xfsf!joufhsbufe!joup!uif!Djuzt!
nbtufs!qmbo!gps!uif!bsfb!boe!uifo!joup!gpsn.cbtfe!{poft/
Ifjhiu;!
vq!up!uxp!tupsjft-!uif!U5O!boe!U5G!{poft!bmmpx!vq!up!4!tupsjft-!boe!uif!U5NT!{pof!bmmpxt!vq!up!5!tupsjft!xifo!
jodmvejoh!dfsubjo!bggpsebcjmjuz0tfojps!dpnqpofout/
Mpu!dpwfsbhf;!Uif!dpef!epft!opu!sfhvmbuf!mpu!dpwfsbhf-!sfmzjoh!jotufbe!po!cvjmejoh!tfucbdlt!boe!sfrvjsfe!pqfo!tqbdf/
Efotjuz;!Uif!efotjuz!pg!joejwjevbm!cvjmejoht!jt!efufsnjofe!cz!uif!cvjmejoh!uzqft!bmmpxfe!jo!fbdi!usbotfdu/
69
Chapter 2: Code Analysis and Best Practices
Cvjmejoh!uzqft;!B!upubm!pg!ojof!cvjmejoh!uzqft!bsf!bmmpxfe!jo!uif!{poft!jodmvejoh!dbssjbhf!ipvtf-!tjohmf.voju!
ipvtf-!cvohbmpx!dpvsu-!evqmfy-!upxoipvtf-!nbotjpo!bqbsunfou-!bqbsunfou!ipvtf-!dpvsuzbse!cvjmejoh-!Nbjo!
Tusffu!cvjmejoh!boe!Nje.sjtf!cvjmejoh;!7!uzqft!jo!U4O-!:!uzqft!jo!U5O-!:!uzqft!jo!U5OG-!boe!3!uzqft!jo!U5NT/!
Uif!dpef!jodmveft!qmbo!ejbhsbnt!boe!eftdsjqujpot!tipxjoh!uif!tuboebset!gps!fbdi!bmmpxfe!cvjmejoh!uzqf!jo!
fbdi!{pof/
Gspoubhf;!
boe!gfodf-!tuppq-!gpsfdpvsu-!eppszbse-!tipqgspou-!ufssbdf-!boe!hbmmfsz-!boe!bsdbef!efqfoejoh!po!uif!mpdbujpo/
Qbsljoh;!Uif!bqqspbdi!up!qbsljoh!jt!qsphsfttjwf!boe!cbtfe!po!uif!qspyjnjuz!up!xbmlbcmf!tfswjdft!boe!uif!mjhiu!sbjm!
usbotju!bmpoh!uif!Nbjo!Tusffu!dpssjeps-!xijdi!tqbot!nptu!pg!uif!dpef!bsfb/!Efwfmpqfst!ibwf!sftqpoefe!up!uif!sfevdfe!
qbsljoh!sfrvjsfnfout-!cvu!mfoefs!qbsljoh!sfrvjsfnfout!ibwf!sftvmufe!bnpvout!jo!fydftt!pg!uif!bmmpxfe!njojnvnt/!
Ipxfwfs-!sfdfou!qspkfdut!ibwf!fggfdujwfmz!xpslfe!xjui!mfoefst!up!gvoe!qspkfdut!xjui!vscbo!qbsljoh!sbujpt/
Joufhsbm!sfmjfg!gspn!tuboebset
qspdfevsft!boe!bo!jogpsnbm!qspdftt!evsjoh!{pojoh!dmfbsbodf!sfwjfx/
Cvjmu!sftvmut
Uif!nbkpsjuz!pg!uif!cvjmu!sftvmut!xfsf!efwfmpqfe!xjui!uif!nje.sjtf!cvjmejoh!uzqf!boe!b!tnbmm!ovncfs!xfsf!cvjmu!xjui!
uif!tjohmf.voju!ipvtf/!Up!ebuf-!uif!wbtu!nbkpsjuz!pg!vojut!bsf!bmm!gps!sfou/!Bmuipvhi!uif!Djuz!cfmjfwft!uifsf!jt!nvdi!
efnboe!gps!pxofstijq!vojut-!uif!gps.tbmf!foe!pg!uif!tqfdusvn!ibt!opu!cffo!sfbmj{fe!cfdbvtf!pg!efwfmpqfst!dpodfsot!
bcpvu!sfdfou!ijtupsz!pg!vogpvoefe!mjujhbujpo!bhbjotu!dpoepnjojvn!qspkfdut/
Dibmmfohft
Mbxtvjut!bhbjotu!dpoepnjojvn!pxofstijq/
Uif!fyjtujoh!cbtf!{pojoh!dbo!pddvs!ofyu!epps!up!b!qbsdfm!uibu!pqut!joup!uif!gpsn.cbtfe!dpef-!bggfdujoh!uif!
gpsn.cbtfe!dpeft!qsfejdubcjmjuz!pg!xibu!dbo!cf!fyqfdufe!po!boz!cmpdl/
Mbdl!pg!joufhsbufe!sfmjfg!gspn!tuboebset!gps!eftjho!fydfmmfodf/!
70
Chapter 2: Code Analysis and Best Practices
Qfojotvmb!Ofjhicpsippe-!Jpxb!
Djuz-!JpxbQfojotvmb!Dpef
Dpef!Qsfqbsfs;!Gfssfmm!Nbeefo!Bttpdjbuft!
Dpoubdu!bu!Djuz;!Boof!Svttfsu-!BJDQ!Tfojps!
Qmboofs-!Djuz!pg!Jpxb!Djuz
Cbdlhspvoe!boe!uif!sfbtpo!uif!
dpef!xbt!qsfqbsfe
Uijt!dpef!jt!gps!bo!foujsfmz!ofx!efwfmpqnfou!po!
b!81.bdsf!tjuf!xjuijo!Jpxb!Djuz/!Uif!ofjhicpsippe!
jt!uif!sftvmu!pg!uif!djuz!qvsdibtjoh!uif!tjuf!jo!2::6!
up!qspufdu!jut!xbufs!tvqqmz!xijmf!qspwjejoh!bggpsebcmf!
ipvtjoh!boe!efnpotusbuf!fydfmmfodf!jo!ofjhicpsippe!
eftjho!uispvhiuijt!qspnjofou!tjuf/!Uif!djuz!dpnnjttjpofe!
b!qvcmjd!qbsujdjqbujpo!dibssfuuf!mfe!cz!Epwfs!Lpim!Qbsuofst!up!
efufsnjof!b!dpnnvojuz!wjtjpo!gps!uif!tjuf!uibu!sftvmufe!jo!b!nbtufs!
qmbo!boe!eftjho!hvjefmjoft/!Uif!djuz!uifo!ijsfe!b!efwfmpqnfou!ufbn!up!xsjuf!
b!gpsn.cbtfe!dpef!gps!uif!qspkfdu!boe!npwf!gpsxbse!xjui!jut!jnqmfnfoubujpo/
Ipx!xbt!uif!dpef!bepqufe@!
Uif!dpef!jt!nboebupsz!boe!xbt!bepqufe!jo!3112!uispvhi!uif!Qmboofe!Voju!Efwfmpqnfou!qspdftt/!Uif!tjuf!xbt!
sf{pofe!up!PQEI.6/!
Xibu!epft!uif!dpef!bmmpx@
cvjmejoh!uzqft!sbohjoh!gspn!tnbmm.up.mbshf!ipvtft-!evqmfyft-!vq!up!tnbmm!boe!mbshf!bqbsunfou!cvjmejoht!boe!mjwf.xpsl0
Nbjo!Tusffu!cvjmejoht/!BEVt!bsf!bmmpxfe!cz.sjhiu!cvu!sfrvjsf!uibu!uif!pxofs!pg!uif!qsjnbsz!ipvtf!pddvqz!pof!pg!uif!vojut/
Ifjhiu;!
tupsjft!boe!46.gffu!gps!uif!gpvs!uzqft!pg!ipvtft-!up!4!tupsjft!boe!46.gffu!gps!spxipvtf!cvjmejoht-!up!4!tupsjft!boe!
59.gffu!gps!tnbmm!bqbsunfou!cvjmejoht-!up!5!tupsjft!boe!51.gffu!gps!mjwf.xpsl0Nbjo!Tusffu!cvjmejoht-!boe!5!tupsjft!
boe!59.gffu!gps!nvmuj.voju!cvjmejoht/!Uif!nvmuj.voju!cvjmejoh!uzqf!jt!gvsuifs!mjnjufe!up!311.gffu!jo!mfohui/!Uijt!
bmpoh!xjui!b!nbyjnvn!ifjhiu!tuboebse!jt!bo!fggfdujwf!ufdiojrvf!up!sfevdf!uif!wjtvbm!tj{f!boe!tdbmf!pg!b!cvjmejoh!
jo!uijt!uzqf!pg!ofjhicpsippe/
Mpu!dpwfsbhf;!Uif!dpef!epft!opu!sfhvmbuf!mpu!dpwfsbhf-!sfmzjoh!po!cvjmejoh!tfucbdlt!boe!sfrvjsfe!pqfo!tqbdf/
Efotjuz;!Uif!dpef!epft!opu!sfhvmbuf!uif!efotjuz!pg!joejwjevbm!cvjmejoht/
Cvjmejoh!uzqft;!B!upubm!pg!ufo!cvjmejoh!uzqft!bsf!bmmpxfe!sbohjoh!gspn!ftubuf!ipvtf-!qfojotvmb!ipvtf-!cvohbmpx-!
cvjmejoh*-!tnbmm!bqbsunfou-!boe!nvmuj.voju!cvjmejoh/!Uif!dpef!jodmveft!qmbo!ejbhsbnt!boe!eftdsjqujpot!tipxjoh!
uif!tuboebset!gps!fbdi!bmmpxfe!cvjmejoh!uzqf/
Gspoubhf;!Uif!dpef!sfrvjsft!uibu!b!njojnvn!bnpvou!pg!uif!gbdbef!cf!qmbdfe!bu!uif!njojnvn!tfucbdl!mjof!boe!
sfrvjsft!qpsdift!jo!dfsubjo!mpdbujpot/
Qbsljoh;!Uif!bqqspbdi!up!sftjefoujbm!qbsljoh!jt!opu!bhhsfttjwf!boe!dpvout!po.tusffu!qbsljoh!bt!wjtjups!qbsljoh/!Uif!
opo.sftjefoujbm!sfrvjsfnfout!bsf!sfevdfe!up!bqqmz!pomz!bcpwf!2-611!trvbsf!gffu!up!fodpvsbhf!tnbmm!cvtjofttft/
71
Chapter 2: Code Analysis and Best Practices
Joufhsbm!sfmjfg!gspn!tuboebset!
Cvjmu!sftvmut
Uif!ofjhicpsippe!jt!cvjmu.pvu!xjui!bmm!pg!uif!bmmpxfe!uzqft!boe!ibt!buusbdufe!tpnf!pg!uif!fyqfdufe!ofjhicpsippe!
tfswjdft!boe!sfubjm-!nbljoh!uijt!b!dpnqmfuf!xbmlbcmf!fowjsponfou/
72
Chapter 3: Case Studies
CHAPTER 3:
Case Studies
73
CHAPTER 3:
Chapter 3: Case Studies
Case Studies
DIBQUFS!TVNNBSZ
Uif!joufou!pg!uijt!dibqufs!jt!up!ijhimjhiu!cvjmu!fybnqmft!uibu!xfsf!efwfmpqfe!voefs!uif!dpef!uzqft!bobmz{fe!jo!uif!
qsfwjpvt!dibqufs/!Uif!nbkpsjuz!bsf!gspn!uif!tfmfdufe!dpef!fybnqmft!eftdsjcfe!jo!Dibqufs!3/!Gjoejoh!fybnqmft!uibu!
bsf!bggpsebcmf!gps!uifjs!sfhjpo-!bsf!vtfe!bt!b!qfsnbofou!sftjefodf-!boe!uibu!bsf!cvjmu!voefs!b!dpef!uibu!nffut!uif!
fjhiu!dsjufsjb!jo!Dibqufs!2!qspwfe!dibmmfohjoh-!bt!nboz!pg!uif!rvbmjgzjoh!dpeft!xfsf!bepqufe!gbjsmz!sfdfoumz/
Joopwbujwf!qspkfdut!bsf!gsfrvfoumz!efwfmpqfe!bt!qmboofe!voju!efwfmpqnfout!ps!qjmpu!qspkfdut!bt!b!sfmbujwfmz!
jofyqfotjwf!xbz!up!uftu!qpufoujbm!jefbt!gps!b!dpnqsfifotjwf!tfu!pg!bnfoenfout!ps!ofx!dpef/
Uxp!fybnqmft!bsf!ijhimjhiufe!gps!uifjs!vodpowfoujpobm!bqqspbdi!ps!tjuvbujpo/!Cpjdfwjmmf!Dpuubhft!xbt!cvjmu!jo!
bt!b!efwfmpqfs!up!ifmq!mpxfs!jodpnf!joejwjevbmt!cvjme!BEVt!po!uifjs!qspqfsuz/!
sfrvjsf!b!dibohf!up!uif!tuboebset-!bt!xbt!uif!dbtf!xjui!Nfsjejbo!Dpvsu/!
jodmvef!qspyjnjuz!up!obuvsf!ps!puifs!mbshf!pqfo!tqbdf-!qspyjnjuz!up!sfubjm-!tfswjdft-!gppe!vtft!boe!usbotju-!boe0ps!
uif!pqqpsuvojuz!gps!dpnnvojuz!joufsbdujpo-!bt!jt!uif!dbtf!gps!uiftf!tfmfdufe!fybnqmft/
74
Chapter 3: Case Studies
BDDFTTPSZ!
EXFMMJOH!VOJU!
)BEV*!DBTF!
TUVEJFT
Hbsbhf!Dpowfstjpo!BEV
Portland, Ore.
Dpef!uzqf!fybnqmf;!Bddfttpsz!Exfmmjoh!Vojut
Dpoubdu;!Lpm!Qfufstpo-!Pxofs0Cvjmefs
Dmjfou;!Lpm!Qfufstpo!)ipnfpxofs*
Eftjhofs;!Ebt!Dibqjo!
Efwfmpqfs;!Lpm!Qfufstpo
Cvjmefs;!Besjbo!Ivubqfb!
Tj{f!boe!tdbmf
Pof!BEV!buubdife!up!b!qsjnbsz!sftjefodf!po!b!61.gppu!y!211.gppu!mpu!jo!b!tjohmf.gbnjmz!sftjefoujbm!{pof/!
Voju!tj{f!sbohf
Qsjnbsz!Voju;!:11!trvbsf!gffu
BEV;!911!trvbsf!gffu
Efotjuz
29!exfmmjoh!vojut!qfs!bdsf
Qspkfdu!ujnfmjof!
Uif!pxofs!xpslfe!dmptfmz!xjui!b!eftjhofs!xip!ibt!fyufotjwf!dpotusvdujpo!fyqfsjfodf/!Uif!pxofs!eje!uif!qfsnjuujoh!
ijntfmg-!tfswfe!bt!uif!hfofsbm!dpousbdups!gps!uijt!qspkfdu-!boe!eje!bcpvu!41!qfsdfou!pg!uif!bduvbm!dpotusvdujpo!bt!xfmm/
Qspkfdu!dptut!
!%2-111
Dpotusvdujpo!Dptut;!%211-111!)%86-111!pvu!pg!qpdlfu-!%36-111!txfbu!frvjuz*
Tbmf!Qsjdf;
)upubmjoh!%286-111*-!uif!qspqfsuz!jt!xpsui!bqqspyjnbufmz!%711-111/
75
Chapter 3: Case Studies
Qspkfdu!eftdsjqujpo
Uif!pxofs!cvjmu!uijt!BEV!po!b!6-111.trvbsf!gppu!mpu!)61!
gffu!y!211!gffu*!mpdbufe!ofbs!ijt!qsjnbsz!sftjefodf!cz!
dpowfsujoh!uif!buubdife!hbsbhf!po!uif!tqmju.mfwfm!2:84!
ipvtf!joup!bo!BEV/!Ju!jt!bo!911.trvbsf!gppu-!uxp.cfesppn!
voju!xjui!pof!cfesppn!uibu!jt!gvmmz!bddfttjcmf!boe!b!
jt!uif!vqqfs!mfwfm!pg!uif!tbnf!tusvduvsf!boe!dpoubjot!:11!
trvbsf!gffu-!xjui!uisff!cfesppnt!boe!pof!cbuisppn/!Cpui!bsf!
mpoh.!ufsn!sftjefoujbm!sfoubm!vojut/!Pof!pgg.tusffu!qbsljoh!tqpu!
xbt!sfrvjsfe!gps!uif!qsjnbsz!voju/!Uif!tqpu!jt!mpdbufe!jo!uif!gspou!
zbse!tfucbdl-!xijdi!sfrvjsfe!b!wbsjbodf/!
\[pojoh!boe!ofjhicpsippe!eftdsjqujpo
Uif!qspqfsuz!jt!mpdbufe!jo!b!ijhimz!eftjsbcmf!ofjhicpsippe!dbmmfe!uif!Bmcfsub!
Bsut!Ejtusjdu!jo!joofs!opsuifbtu!Qpsumboe-!ibt!b!Xbmltdpsf!sboljoh!pg!95-!boe!jt!{pofe!
S6-!xijdi!jt!uif!tuboebse-!uzqjdbm!sftjefoujbm!mpu!tj{f!boe!{pojoh!uzqf!jo!Qpsumboe/!Uif!qspqfsuz!jt!xjuijo!xbmljoh!
ejtubodf!pg!xifsf!uif!pxofs!mjwft-!tp!ju!xbt!dpowfojfou!up!efwfmpq!uif!qspqfsuz!bt!xfmm!bt!nbobhf!ju/!Uif!tjuf!jt!xjuijo!
pof.rvbsufs!pg!b!njmf!pg!b!dpnnfsdjbm!dpssjeps/
Tvddfttft!
Cvjmejoh!b!ojdf.mppljoh!voju!gps!%211-111/!
B!hppe!sfuvso!po!jowftunfou!uispvhi!uif!sfoubm/!Fbdi!voju!sfout!gps!%2-961!qfs!npoui/!Dpmmfdujwfmz-!uifz!qspevdf!
%2-111!npsf!qfs!npoui!uibo!uif!41.zfbs!QJUJ!qbznfout/
gps!uibu!voju/!
Eftqjuf!vtjoh!bmm!pg!uif!cftu!qsbdujdft!gps!njujhbujoh!opjtf!cfuxffo!
uif!uxp!vojut-!tufq!opjtf!xbt!opu!fmjnjobufe/!Jo!ijoetjhiu-!
pof!tpmvujpo!xpvme!ibwf!cffo!up!dbsqfu!uif!vqtubjst!voju!
76
Chapter 3: Case Studies
Uif!Gbsnipvtf-!
Buubdife!BEV
Portland, Ore.
Dpef!uzqf!fybnqmf;!Bddfttpsz!
Exfmmjoh!Vojut
Dpoubdu;!Mvdbt!Hsbz-!Qspqfm!Tuvejp
Eftjhofst;!Qspqfm!Tuvejp
Qipupt;!Qspqfm!Tuvejp!Bsdijufduvsf
Tj{f!boe!tdbmf
61.gppu!xjef!qfs!211.gppu!effq!mpu-!uxp!exfmmjoh!vojut!upubm
Voju!tj{f!sbohf
BEV;!911!trvbsf!gffu!pwfs!uxp!mfwfmt
Qsjnbsz!voju;!bqqspyjnbufmz!2-611!trvbsf!gffu
Efotjuz
29!exfmmjoh!vojut!qfs!bdsf
Qspkfdu!ujnfmjof!
211(!.!1#
Eftjho;!4!npouit
Qfsnjuujoh;!4!npouit
Dpotusvdujpo;!7!npouit!
Dpnqmfufe;!3128
61(!.!1#
Qspkfdu!dptut!
Bsdijufduvsf;!%26-111
Fohjoffsjoh;!%3-611
Qfsnjuujoh!Gfft;!%8-611
Dpotusvdujpo!Dptut;!%311-111
Tbmf!Qsjdf;!opu!bqqmjdbcmf
Qspkfdu!eftdsjqujpo
Uijt!ofx!dpotusvdujpo-!uxp.cfesppn!bddfttpsz!exfmmjoh!voju!jt!mpdbufe!jo!tpvuifbtu!Qpsumboe!Xppetupdl!
Ofjhicpsippe/!Uif!BEV!jt!buubdife!up!bo!fyjtujoh!usbejujpobm!gbsnipvtf!wjb!b!dpwfsfe!csff{fxbz/!Uif!eftjho!
Qbttjwf!tpmbs!eftjho!qsjodjqmft!bsf!jodpsqpsbufe!up!pcubjo!nbyjnvn!xjoufs!ifbu!hbjo!boe!tvnnfs!dppmjoh/!B!effq!
hbjo!jo!uif!tvnnfs!npouit/!Pqfsbcmf!xjoepxt!bmmpx!gps!dsptt!wfoujmbujpo/
77
Chapter 3: Case Studies
qspevdut!tfmfdufe!uispvhipvu/!Uif!pqfo!Mjwjoh0Ejojoh0
Ljudifo!hsfbu!sppn!gbdft!xftu-!xjui!b!xjoepx!xbmm!boe!
gvmm.hmbtt!Gsfodi!eppst!pwfsmppljoh!uif!qbujp!boe!hbsefo/!Uif!
tmbc.po.hsbef!dpotusvdujpo!pggfst!cbssjfs.gsff!BEB!bddfttjcjmjuz!
uispvhipvu!uif!voju/!
Dpotjefsjoh!uif!sbqjemz!sjtjoh!ipvtjoh!dptut!jo!Psfhpo-!uijt!qspkfdu!
mftt!uibo!%461-111-!fwfo!jo!gbsuifs!pvu-!ps!mftt!eftjsbcmf!ofjhicpsippet/!
Jo!uijt!dbtf-!uif!pxofst!hpu!up!cvjme!b!ofx!voju!dmptf!up!ipvtf!uifjs!npuifs-!
xip!ibt!b!ejtbcjmjuz-!gps!b!mpu!mftt!uibo!cvzjoh!b!ofx!ipnf/!
\[pojoh!boe!ofjhicpsippe!eftdsjqujpo
Uif!qspkfdu!jt!mpdbufe!jo!bo!pmefs-!ftubcmjtife!djuz!ofjhicpsippe!xjui!b!dpnnfsdjbm!dpssjeps!ofbscz!boe!
Njttjoh!Njeemf!Ipvtjoh!uispvhipvu/!Uif!qspkfdu!xbt!efwfmpqfe!voefs!uif!dvssfou!dpef!xijdi!xbjwft!uif!tztufn!
efwfmpqnfou!gfft-!tbwjoh!bcpvu!%24-111/!Qbsljoh!jt!opu!sfrvjsfe!gps!fjuifs!uif!qsjnbsz!sftjefodf!ps!uif!BEV!evf!up!
uif!qspyjnjuz!up!qvcmjd!usbotqpsubujpo/!
Tvddfttft!
Vqtubjst!pggfst!b!cpovt.sppn!ps!b!qpufoujbm!cfesppn!gps!b!gvuvsf!mjwf.jo!dbsfublfs/
Cvjmu!xjui!tvtubjobcmf!cvjmejoh!nbufsjbmt/
Pqfo!mjwjoh!bsfb!uibu!jt!tqbdjpvt!gps!b!tnbmm!exfmmjoh/
Tuspoh!dpoofdujpo!up!uif!joufsjps!boe!fyufsjps/
Sftusjdujwf0vodmfbs!tfucbdl!sfrvjsfnfout!nbef!uif!tjuf!mpdbujpo!dibmmfohjoh/!Uif!
dpef!joejdbuft!b!51.gppu!tfucbdl!gspn!uif!gspou!cvu!epft!opu!dmbsjgz!ipx!up!
beesftt!dpsofs!mput/!Gps!uijt!qbsujdvmbs!tjuf-!uif!pomz!xbz!up!mpdbuf!
uif!tusvduvsf!jo!b!xbz!uibu!xbt!dpef!dpnqmjbou!xbt!up!buubdi!uif!
BEV!up!uif!nbjo!ipvtf!xjui!b!csff{fxbz/
Jo!dfsubjo!dpoejujpot-!uif!dpef!sfrvjsft!eftjho!tuboebset!
uibu!bsf!rvjuf!usbejujpobm-!xijdi!jt!wfsz!mjnjujoh!up!
gps!b!tusvduvsf!uibu!jt!cfijoe!b!qsjnbsz!sftjefodf/
Dptu!pg!dfebs!jt!sbqjemz!jodsfbtjoh!evf!up!
fbtz!bddfttjcjmjuz!bmm!uif!xbz!gspn!uif!tjefxbml!
boe0ps!esjwfxbz!up!uif!BEV!voju-!fwfo!jg!uif!voju!
jutfmg!jt!gvmmz!bddfttjcmf/
78
Chapter 3: Case Studies
Evwbm-!Efubdife!BEV
Austin, Texas
Dpef!uzqf!fybnqmf;!Bddfttpsz!
Exfmmjoh!Vojut
Dpoubdu;!Ojdpmf!Kptmjo-!BJB-!
MFFE!BQ-!Fyfdvujwf!Ejsfdups-!
Bvtujo!Dpnnvojuz!Eftjho!boe!
Efwfmpqnfou!Dfoufs!
Eftjhofs;!BDEED
Joufsjpst!Eftjhofs;!Boofuuf!Qbuufstpo
Dpotusvdufe;!\[!Xpslt!Eftjho!Cvjme
Tj{f!boe!tdbmf
1/35.bdsf!tjuf-!uxp!exfmmjoh!vojut!upubm
Voju!tj{f!sbohf
BEV;!uxp.cfesppn-!3/6!cbui-!uxp!tupsjft-!95:!trvbsf!gffu/!Uif!voju!tj{f!sbohf!gps!uif!Bmmfz!Gmbu!Jojujbujwf!jo!
hfofsbm!jt!511!up!2-211!trvbsf!gffu/!
Efotjuz
9/6!exfmmjoh!vojut!qfs!bdsf
Qspkfdu!ujnfmjof!
Eftjho!cfhbo!jo!Kvmz!3125!
Dpotusvdujpo!cfhbo!jo!Tfqufncfs!3126!
Dpnqmfufe!Nbz!3127
Qspkfdu!dptut!
Bsdijufduvsf;!%3-111!)Bmmfz!Gmbu!Jojujbujwf!pggfst!sfevdfe!gfft!uispvhi!hsbout!gps!bo!bggpsebcmf!ipvtjoh!
dpnnjunfou!cz!uif!pxofs*
Fohjoffsjoh;!%5-111!)jodmveft!cpui!tusvduvsbm!boe!djwjm!fohjoffsjoh*
Qfsnjuujoh!Gfft;!%5-211!)pomz!qbje!xbufs!ubq!gff-!bmm!puifs!qfsnju!gfft!bsf!xbjwfe!uispvhi!TNBSU!Ipvtjoh*
Dpotusvdujpo!Dptut;!%274-111
Tbmf!Qsjdf;!opu!bqqmjdbcmf!
Uif!Evwbm!qspkfdu!xbt!efwfmpqfe!uispvhiuif!Bmmfz!Gmbu!Jojujbujwf-!xijdi!cfhbo!jogpsnbmmz!jo!3114!xjui!uif!jefb!uibu!
bt!b!gpsn!pg!djwjd!fowjsponfoubmjtn/!Uibu!jefb!fyqboefe!jo!3116-!xifo!b!qbsuofstijq!gpsnfe!cfuxffo!uif!VU!
Dfoufs!gps!Tvtubjobcmf!Efwfmpqnfou-!uif!Hvbebmvqf!Ofjhicpsippe!Efwfmpqnfou!Dpsqpsbujpo-!boe!uif!Bvtujo!
79
Chapter 3: Case Studies
qbsuofstijq!up!qvstvf!uif!Hsffo!Bmmfz!
Efnpotusbujpo!Qspkfdu-!xijdi!fowjtjpot!
bggpsebcmf!ipvtjoh-!bmmfzt!boe!tnbmm!
tusffut!bt!fdpmphjdbm!jogsbtusvduvsf/!
Uif!dpmmbcpsbujpo!dpoujovft!up!hspx!
up!ubdlmf!npsf!cbssjfst!up!bggpsebcmf!
Bmmfz!Gmbut!bsf!ejtujodu!gspn!puifs!
BEVt!cfdbvtf!uifz!bdijfwf!bu!mfbtu!b!
4.tubs!Bvtujo!Fofshz!Hsffo!Cvjmejoh!
sbujoh!boe!qbsujdjqbuf!jo!uif!Djuz!pg!
Bvtujot!T/N/B/S/U/!Ipvtjoh!qsphsbn!
dpotusvdufe/!Qfs!uif!qsphsbn-!ufobout!bsf!
mjnjufe!up!ipvtfipmet!xjui!jodpnf!bu!ps!cfmpx!
91!qfsdfou!NGJ!)Nfejbo!Gbnjmz!Jodpnf-*!boe!
sfou!nbz!opu!cf!npsf!uibo!41!qfsdfou!pg!b!ufobout!
ipvtfipme!npouimz!jodpnf/!Uif!BDEED!gvodujpot!
bt!b!efwfmpqfs-!pggfsjoh!tfswjdft!up!uif!ipnfpxofs!xip!
jt!cvjmejoh!uif!BEV!gspn!eftjho!uispvhi!dpotusvdujpo-!qmvt!
beejujpobm!fevdbujpobm!nbufsjbmt!boe!fyqfsujtf/
Qspkfdu!eftdsjqujpo
Uijt!Bmmfz!Gmbu!jt!pddvqjfe!cz!b!tjohmf!gbuifs!xip!jt!sfmbufe!up!uif!qspqfsuz!pxofs!boe!xiptf!fyufoefe!gbnjmz!mjwft!jo!
uif!ofjhicpsippe/!Uijt!uxp.cfesppn!BEV!oftumft!ofbumz!joup!b!tjuf!uibu!jt!dpotusbjofe!cz!tfucbdlt!boe!bo!fyjtujoh!
qsjwbdz!boe!gvodujpobmjuz!xjuijo!uif!tnbmm!gppuqsjou/!Hfofspvt!xjoepxt!jo!uif!epvcmf.ifjhiu!mjwjoh!bsfbt!bmmpx!
pddvqjfe!bt!mpoh.ufsn!sfoubmt/
\[pojoh!boe!ofjhicpsippe!eftdsjqujpo
Uif!qspkfdu!jt!mpdbufe!jo!uif!Izef!Qbsl!ofjhicpsippe-!xijdi!jt!mpdbufe!kvtu!opsui!pg!uif!Vojwfstjuz!pg!Ufybt!
dbnqvt/!Ju!jt!nptumz!dpnqsjtfe!pg!tjohmf.gbnjmz!ipnft-!boe!b!tfdujpo!pg!uif!ofjhicpsippe!ibt!cffo!eftjhobufe!bt!
sfrvjsfnfout!uibu!njhiu!nblf!ju!ibsefs!up!efwfmpq!b!wbsjfuz!pg!ipvtjoh!pqujpot/!!
Tvddfttft!
boe!uifjs!sfou!jt!op!npsf!uibo!39!qfsdfou!pg!uifjs!jodpnf/!Mjlf!nboz!tjohmf!qbsfout-!jg!ju!xfsf!opu!gps!uif!bggpsebcmf!
sfoubm!bnpvou-!if!xpvme!opu!puifsxjtf!cf!bcmf!up!mjwf!ofbs!ijt!gbnjmz!boe!uif!tpdjbm!ofuxpslt!if!sfmjft!po/!
4.tubs!Bvtujo!Fofshz!Hsffo!Cvjmejoh!sbujoh
Cvjmu!b!tpdjbmmz-!fdpopnjdbmmz-!boe!fowjsponfoubmmz!tvtubjobcmf!efwfmpqnfou!npefm!uibu!qsftfswft!uif!ejwfstjuz!
pg!pvs!ofjhicpsippet-!qspwjeft!ofx!fdpopnjd!pqqpsuvojuz-!boe!gptufst!tpdjbm!frvjuz!jo!sbqjemz!dibohjoh!
ofjhicpsippet/
80
Chapter 3: Case Studies
TNBMM!MPU!PSEJOBODFT!BOE!EFOTJUZ!
BEKVTUNFOUT!DBTF!TUVEJFT
HBTQBS!Upxoipnft
Los Angeles, Calif.
Dpef!uzqf!fybnqmf;!Tnbmm!Mpu!Psejobodf
Dpoubdu;Bmbo!Tdbmft-!BJB-!Qsjodjqbm-!LUHZ!Bsdijufdut
Bsdijufdu0Eftjhofs0Mboe!Qmboofs;!LUHZ!Hspvq-!Jod/
Efwfmpqfs0Cvjmefs;!Qmbofu!Ipnf!Mjwjoh
Joufsjps!Eftjhofs;!Nbejtpo!Npefso!Ipnf
Qipuphsbqifs;!Diboh!Lzvo!Ljn
Tj{f!boe!tdbmf
1/45.bdsf!tjuf!gps!foujsf!qspkfdu<!2-611.trvbsf!gppu!mpu!qfs!
ipnf-!21!exfmmjoh!vojut!upubm
Voju!tj{f!sbohf
2-9:4!trvbsf!gffu<!4.cfesppn!vojut!tjef.cz.tjef
Efotjuz
3:/5!exfmmjoh!vojut!qfs!bdsf
Qspkfdu!ujnfmjof!
Qspkfdu!Eftjho!Tubsufe!fbsmz!3123
Dpnqmfujpo!3125
Qspkfdu!dptut!
!opu!bwbjmbcmf
Dpotusvdujpo!Dptut;!opu!bwbjmbcmf
Tbmf!Qsjdf;!Tubsujoh!gspn!uif!nje!%811-111t
Qspkfdu!eftdsjqujpo
Uif!ubshfu!dmjfou!hspvq!xbt!zpvoh!qspgfttjpobmt!boe!fnquz!oftufst/!Uif!4.tupsz!mjwjoh!xjui!uisff!cfesppnt!boe!
eftjho!dpssftqpoet!up!uif!voefsmzjoh!{pojoh-!xjui!21!tjef.cz.tjef!upxoipnft!dpotusvdufe!tjy!jodift!bqbsu!gspn!fbdi!
puifs-!boe!xjui!op!tibsfe!xbmmt!cfuxffo!ipnft/!Vqqfs.mfwfm!mjwjoh!tqbdft!boe!sppg!efdlt!ublf!bewboubhf!pg!txffqjoh!
wjfxt!pg!uif!epxoupxo!Mpt!Bohfmft!tlzmjof/!Uif!esjwfxbz!jt!eftjhofe!bt!b!qfeftusjbo!tusffu!xjui!foibodfe!qbwjoh!
boe!mboetdbqf-!bdujwbufe!cz!cpui!hbsbhf!boe!fousz!eppst/!Dbst!bsf!bmmpxfe-!cvu!ju!jt!eftjhofe!up!gffm!npsf!qfeftusjbo!
gsjfoemz/!Nptu!pg!uif!ipvtft!ibwf!tnbmm-!qsjwbuf!sfbs!zbset/
81
Chapter 3: Case Studies
\[pojoh!boe!ofjhicpsippe!eftdsjqujpo
bmmpxbodft!jo!uif!djuzt!Tnbmm!Mpu!Psejobodf/!Uif!bjn!xbt!
up!eftjho!dpoufnqpsbsz-!vscbo!dpoufyu-!efubdife!ipvtjoh!
xjuijo!bo!ftubcmjtife!ijtupsjd-!fdmfdujd!ofjhicpsippe!po!b!
dibmmfohjoh!ijmmtjef!mpu/!Xjui!uif!xjef!wbsjfuz!pg!tipqqjoh!boe!
foufsubjonfou!pgg!Tvotfu!Cpvmfwbse!kvtu!pof!cmpdl!bxbz-!sftjefout!
dbo!fbtjmz!xbml!up!sftubvsbout!boe!mpdbm!tipqt!bt!xfmm!bt!fokpz!uif!
bekbdfou!Fmztjbo!Qbsl-!jefbm!gps!eph!pxofst!boe!bdujwf!mjgftuzmft/
Tvddfttft!
Tpme!pvu!jo!pof!npoui!pg!pqfojoh/
Gff.tjnqmf!pxofstijq!buusbdufe!b!mbshfs!cvzfs!qppm!uibo!dpoept!xpvme!boe!sfevdfe!uif!dpotusvdujpo!mjbcjmjuz/
Uif!gff.tjnqmf!pxofstijq!bmtp!fmjnjobufe!uif!offe!gps!IPB!gfft/
Uif!{pojoh!bobmztjt!xbt!cfzpoe!dibmmfohjoh!po!uijt!pof!boe!jt!wbtumz!jnqpsubou!up!hfu!sjhiu<!cfuxffo!uif!
voefsmzjoh!SE2/6!{pojoh!boe!ifjhiu!ejtusjdu-!dpotjefsbujpo!xbt!sfrvjsfe!up!pwfsmbz!uif!tnbmm!mpu!psejobodf!boe!
ijmmtjef!psejobodf/!
Hbjojoh!djuz!bqqspwbm!tubsut!xjui!sfwjfx!boe!b!npujpo!pg!bqqspwbm0efojbm!cz!mpdbm!Ofjhicpsippe!Dpvodjm!)OD*/!
Bu!uif!ujnf-!tnbmm!mpu!ipvtjoh!xbt!sfmbujwfmz!ofx!boe!vogbnjmjbs!up!uiptf!sfwjfxjoh!ju!boe!nbef!tpnf!ofjhicpst!
vofbtz!bcpvu!b!dibohf!up!uifjs!ofjhicpsippe/!Tfwfsbm!nffujoht!xfsf!sfrvjsfe!up!hbjo!OD!tvqqpsu!qsjps!up!
hfuujoh!uif!gpsnbm!djuz!bqqspwbmt/!
Ijmmtjef!eftjho!boe!dpotusvdujpo!qptfe!b!dibmmfohf!xifo!cvjmejoh!uiftf!tnbmm!mpu!ipnft-!tp!dbsfgvm!
buufoujpo!xbt!sfrvjsfe!up!njojnj{f!uif!jnqbdu!pg!sfubjojoh!xbmmt!po!uif!tvsspvoejoh!ofjhicpsippe/!
hsbeft!pg!uif!tjuf-!sfubjojoh!xbmmt!xfsf!eftjhofe!joup!uif!
cvjmejoht!gpvoebujpo/!
Ufdiojdbm!dppsejobujpo!xbt!sfrvjsfe!
gps!vujmjujft-!tupsnxbufs!dpouspm!boe!
jnqmfnfoubujpo!pg!uif!fyqbotjpo!kpjou!
dpwfs!uibu!jt!jotubmmfe!bu!uif!bjs!tqbdf!
cfuxffo!ipnft/!
82
Chapter 3: Case Studies
Ebojfmtpo!Hspwf
Kirkland, Wash.
Dpef!uzqf!fybnqmf;!Efotjuz!Jodfoujwft!
gps!Tnbmmfs!Ipnft
Dpoubdut;!Sptt!Dibqjo-!Sptt!Dibqjo!
Bsdijufdut<!Kjn!Tpvmft-!Tpvmft!Dpnqboz<!
Mjoeb!Qsvjuu-!Dpuubhf!Dpnqboz
Bsdijufdu;!Sptt!Dibqjo!Bsdijufdut!!
)Sptt!Dibqjo!GBJB-!Lbsfo!EfMvdbt*
Efwfmpqfs;!Uif!Dpuubhf!Dpnqboz!!
)Kjn!Tpvmft-!Mjoeb!Qsvjuu*
Djwjm!Fohjoffs!'!Mboetdbqf!Bsdijufdu;!Usjbe!Bttpdjbuft
Tj{f!boe!tdbmf
3/19.bdsf!tjuf-!27!exfmmjoh!vojut!upubm
Voju!tj{f!sbohf
Tjohmf.gbnjmz-!nbslfu.sbuf!ipnft!sbohjoh!jo!tj{f!gspn!811!up!2-611!trvbsf!gffu
Efotjuz
cvjmebcmf!efotjuz!jt!dmptfs!up!21/8!exfmmjoh!vojut!qfs!bdsf/
Qspkfdu!ujnfmjof!
Eftjho;!Jojujbufe!jo!3114
Dpotusvdujpo;!3115!uispvhi3116
Tbmft;!Mbtu!ipnft!tpme!jo!3117!
Qspkfdu!dptut!
!%223-111!qfs!ipnf!
Dpotusvdujpo!Dptut!)mbcps-!nbufsjbmt-!tvcdpousbdupst-!tvqfswjtjpo*;!%265!qfs!trvbsf!gffu!
Mboe;!%3:-111!qfs!ipnf
Tbmft!Qsjdft;!opu!bwbjmbcmf
Qspkfdu!eftdsjqujpo
Ebojfmtpo!Hspwf!jt!b!dpnnvojuz!pg!tjyuffo!efubdife!ipnft!sbohjoh!gspn!811!up!2-611!trvbsf!gffu/!Ju!jt!b!
efnpotusbujpo!qspkfdu!pg!bo!joopwbujwf!dpef!qsphsbn!uibu!bdijfwfe!nbslfu!bddfqubodf!pg!tnbmmfs-!dpnnvojuz.
qmbo!jt!uibu!uif!ipvtft!bsf!dmvtufsfe!bspvoe!b!mboetdbqfe!dpnnpo!dpvsuzbse/!Qbsljoh!jt!joufoujpobmmz!mpdbufe!bxbz!
gspn!uif!ipvtft!tp!uibu!qfpqmf!xbml!uispvhi!uif!dpnnpot!po!uif!xbz!up!uif!gspou!epps-!fodpvsbhjoh!ofjhicpst!
jodmvef!qsjwbuf!zbset!boe!dpwfsfe!qpsdift/!Xjuijo!uif!ipvtf-!uif!npsf!bdujwf!tqbdft!mppl!poup!uif!dpnnpot!boe!uif!
83
Chapter 3: Case Studies
tp!uibu!fbdi!ipvtf!ibt!bo!pqfo!tjef!up!jut!pxo!zbse!boe!b!
dmptfe!tjef!up!jut!ofjhicps<!jo!uijt!xbz!uif!ipvtft!dbo!oftumf!
dmptfmz!uphfuifs!xijmf!fotvsjoh!qsjwbdz!cfuxffo!uifn/!
\[pojoh!boe!ofjhicpsippe!eftdsjqujpo
Ebojfmtpo!Hspwf!xbt!efwfmpqfe!jo!sftqpotf!up!b!djuz!SGQ!gps!
joopwbujwf!tjohmf.gbnjmz!ipnf!efwfmpqnfout-!xijdi!qspwjefe!
jodsfbtfe!efotjuz!gps!ipnft!voefs!2-611!trvbsf!gffu-!tjuf!
sftvmu!pg!uijt!qspkfdu!boe!puifst-!Ljslmboet!{pojoh!dpef!xbt!vqebufe!up!
jodmvef!efotjuz!bekvtunfout!gps!tnbmmfs!ipnf!uzqft/!Uif!dpef!bmmpxt!vq!up!b!
211!qfsdfou!jodsfbtf!jo!uif!ovncfs!pg!ipnft!efqfoejoh!po!tj{f!)2-611!trvbsf!gffu!
Uif!qspkfdu!jt!mpdbufe!po!b!qsfwjpvtmz!wbdbou!tjuf!xjuijo!b!ST.8311!tjohmf.gbnjmz!{pofe!ofjhicpsippe!jo!Ljslmboe-!
XB/!Uif!ofjhicpsippe!xbt!efwfmpqfe!jo!2:61t!bt!tjohmf.gbnjmz!sftjefoujbm!po!mbshf!mput-!bt!uifsf!xbt!op!qvcmjd!tfxfs!
jo!uif!bsfb/!Bu!tpnf!qpjou!tfxfst!xfsf!fyufoefe!boe!tnbmmfs!)8-311!trvbsf!gppu*!mput!xfsf!efwfmpqfe!tpnf!bekbdfou/!
nboebuf/!Uijt!mpu!xbt!pof!pg!uif!sfnobout/
Uif!3/19.bdsf!tjuf!jt!jo!b!tjohmf.gbnjmz!ofjhicpsippe!xjuijo!6!njmft!pg!nbkps!fnqmpznfou!dfoufst/!Uif!tjuf!qmbo!
fodpvsbhft!b!xbmlbcmf!ofjhicpsippe-!opu!pomz!gps!uif!sftjefout!pg!Ebojfmtpo!Hspwf-!cvu!bmtp!gps!qfpqmf!mjwjoh!jo!uif!
tvsspvoejoh!bsfb/!
Tvddfttft!
Uif!qspkfdu!tvddffefe!jo!fodpvsbhjoh!uif!djuz!up!bepqu!b!npsf!joopwbujwf!dpef
Uif!ipnft!tpme!xfmm!boe!hbjofe!obujpobm!buufoujpo!gps!uif!qpdlfu!ofjhicpsippe!dpodfqu!boe!gps!ijhifs.rvbmjuz-!
xfmm.eftjhofe!ipnft/
Uif!efwfmpqnfou!xbt!cvjmu!voefs!uif!ijhiftu!4.Tubs!tuboebse!pg!uif!Cvjmu!Hsffo!qsphsbn!pg!uif!Nbtufs!Cvjmefst!
Bttpdjbujpo!jo!qbsuofstijq!xjui!Ljoh!boe!Topipnjti!dpvoujft/
Uif!qspkfdu!efnpotusbufe!uif!nbslfu!efnboe!gps!tnbmmfs!ipvtjoh!dipjdft!jo!b!dpnnvojuz.psjfoufe!tfuujoh!boe!
Uif!tjuf!jt!{pofe!gps!8-311!trvbsf!gffu!mput-!xijdi!xpvme!uzqjdbmmz!sftvmu!jo!ufo!4-111.trvbsf!gppu-!tjohmf.gbnjmz!
efubdife!ipvtft/!Uif!efnpotusbujpo!dpef!bmmpxfe!tjyuffo!ipnft!fbdi!mftt!uibo!2-611!trvbsf!gffu-!bdijfwjoh!b!
efotjuz!pg!8/8!exfmmjoh!vojut!qfs!bdsf!jotufbe!pg!uif!qsfwjpvt!nbyjnvn!pg!5/9!exfmmjoh!vojut!qfs!bdsf/
84
Chapter 3: Case Studies
sfmbujwf!up!BNJ!boe!fwfo!ijhifs!bu!upebzt!dvssfou!tbmft!qsjdft/!Ipnft!xfsf!qvsdibtfe!cz!joejwjevbm!cvzfst!xip!
wbmvfe!uif!ipvtjoh!rvbmjuz-!efubjm-!eftjho!boe!dpnnvojuz!bnfojujft!pwfs!b!mpx!qsjdf!qpjou/!Uif!dpnnvojuz!ibt!b!
Fvspqfbo!tdbmf!boe!rvbmjuz!uibu!bqqfbmfe!up!uif!tpqijtujdbufe!cvzfst/
Beejujpobmmz-!uif!foujsf!tjuf!xbt!xjuijo!bo!foebohfsfe!tbmnpo!tusfbn!xbufstife/!Jo!sftqpotf-!uif!mbzpvu!xpslfe!
bspvoe!hspwft!pg!usfft-!boe!tupsnxbufs!xbt!ejsfdufe!joup!ejtqfstfe!sbjo!hbsefot!uispvhipvu!uif!tjuf-!xjui!
B!qfsdfjwfe!nbslfu!dibmmfohfpggfsjoh!ipnft!xjuipvu!buubdife!hbsbhfteje!opu!qspwf!up!cf!b!mjnjujoh!tbmft!
jttvf/!Jo!gbdu-!cvzfst!qsfgfssfe!uif!hbsefo!tfuujoh!xjui!b!xbml!uispvhiuif!dpnnpot!up!uifjs!ipnft/
85
Chapter 3: Case Studies
DPUUBHF!DPVSU!
DBTF!TUVEJFT
Dpopwfs!Dpnnpot
Redmond, Wash.
Dpef!uzqf!fybnqmf;!Efnpotusbujpo!Dpef!uibu!
bmmpxfe!b!qpdlfu!ofjhicpsippe0dpuubhf!ipvtjoh!
bqqspbdi
Dpoubdut;!Sptt!Dibqjo-!Sptt!Dibqjo!Bsdijufdut<!Kjn!
Tpvmft-!Tpvmft!Dpnqboz<!Mjoeb!Qsvjuu-!Dpuubhf!Dpnqboz
Bsdijufdu;!Sptt!Dibqjo!Bsdijufdut!)Sptt!Dibqjo!GBJB-!Lbsfo!EfMvdbt*
Efwfmpqfs;!Uif!Dpuubhf!Dpnqboz!)Kjn!Tpvmft-!Mjoeb!Qsvjuu*
Djwjm!Fohjoffs!'!Mboetdbqf!Bsdijufdu;!Usjbe!Bttpdjbuft
Hfpufdi!Fohjoffs-!Xfumboet!Dpotvmubou;!Ufssb!Bttpdjbuft
Bscpsjtu;!Gbwfsp!Hsffogpsftu
Tj{f!boe!tdbmf
:/6.bdsf!tjuf!jodmvejoh!5/7!bdsft!tuffq!tmpqf!boe!xfumboet-!35!exfmmjoh!vojut!upubm!
Voju!tj{f!sbohf
Uxp.cfesppn-!2-111!trvbsf!gffu<!4!.!5!cfesppn-!2-811!up!3-811!trvbsf!gffu
Efotjuz
6!exfmmjoh!vojut!qfs!bdsf
pomz!bddpnnpebufe!7!.!8!tjohmf.gbnjmz!sftjefodft/!Voefs!sfrvjsfe!tupsnxbufs!sfrvjsfnfout-!uibu!xpvme!ibwf!nbef!
Qspkfdu!ujnfmjof!
Gjstu!Qibtf;!23!tjohmf.gbnjmz!nbslfu.sbuf!dpuubhft!mjnjufe!up!2-111!trvbsf!gffu/!Dpotusvdufe!cfuxffo!3114!.!3116
Tfdpoe!Qibtf;!23!tjohmf.gbnjmz-!nbslfu.sbuf!ipnft!gspn!2-811!up!3-811!trvbsf!gffu-!qmvt!pof!bggpsebcmf!gps.tbmf!
Tbmft;!Uif!mbtu!tbmf!xbt!jo!fbsmz!3119
qibtf/!Uif!tjuf!jnqspwfnfout!boe!vujmjujft!gps!cpui!qibtft!xfsf!jotubmmfe!bmm!bu!pof!ujnf/!Hfofsbmmz-!ju!uppl!b!zfbs!
gspn!gvmm!qmbo!tvcnjuubm!up!cvjmejoh!qfsnjut!boe!uifo!bcpvu!23!npouit!up!cvjme/!Ipxfwfs-!uif!tfdpoe!qibtf!xbt!iju!
xjui!b!wfsz!xfu!xjoufs!uibu!tupqqfe!dpotusvdujpo!gps!5!npouit/!Tjodf!uifsf!xbt!op!ofjhicpsippe!pqqptjujpo!boe!
dpnqmfuf!qmbot!xfsf!tvcnjuufe-!uif!ujnfmjof!xbt!bwfsbhf/
86
Chapter 3: Case Studies
Qspkfdu!dptut!
!%215-111!qfs!voju
Dpotusvdujpo!Dptut!)mbcps-!nbufsjbmt-!tvcdpousbdupst-!tvqfswjtjpo*;!%288!qfs!trvbsf!gffu!
Mboe;!%35-111!qfs!voju!
!Tbmft!Qsjdft;!%445-611!up!%536-111!gps!uxp.cfesppn0uxp.cbui-!2-111.trvbsf!gppu!Dpuubhf<!dpnqmfufe!boe!tpme!jo!
3115!boe!%83:-:11!up!%99:-:11!gps!4!.!5!cfesppn04.cbui!2-811.!up!3-811.trvbsf!gppu!ipnf/
Qspkfdu!eftdsjqujpo
Uif!qspkfdu!jt!b!qpdlfu!ofjhicpsippe!uibu!dpotjtut!pg!uxp!dpoofdufe!dmvtufst!pg!tjohmf.gbnjmz!dpuubhft!boe!ipvtft!
cvjmu!pwfs!uxp!qibtft/!Pof!dmvtufs!jodmveft!uxfmwf!2-111!trvbsf!gffu!dpuubhft!hbuifsfe!bspvoe!b!tibsfe!dpvsuzbse/!
bggpsebcmf!ipnf*!bssbohfe!bmpoh!b!hbsefo!xbmlxbz/!Fbdi!ipnf!ibt!jut!pxo!qsjwbuf!zbse/!Uif!:/6.bdsf!tjuf!jodmveft!
5/7!bdsft!pg!qsftfswfe!obujwf!qspufdujpo!bsfbt!dpoubjojoh!b!tuffq!xppemboe!sbwjof/!Uif!tjuf!boe!fbdi!ipnf!xfsf!
eftjhofe!up!cbmbodf!bo!jowjujoh!tfotf!pg!dpnnvojuz!xjui!uif!offe!gps!qsjwbdz/!Uif!sftjefout!xbml!gspn!uif!hbsbhf!
epps!up!uif!gspou!epps-!qbttjoh!uispvhi!b!tibsfe!dpvsuzbse-!qsjwbuf!hbsefo!hbuf-!boe!sppn.tj{fe!gspou!qpsdi-!
jodsfbtjoh!uif!dibodf!joufsbdujpot!bnpoh!ofjhicpst!uibu!bsf!uif!tffet!gps!dpnnvojuz/!Pof!pg!uif!gfbuvsft!pg!uif!
up!csjoh!b!wfijdmf!up!fbdi!ipvtf!bt!xfmm!bt!uif!bcjmjuz!up!mpdbuf!wfijdmft!pgg!bmmfz!mjlf!tusffut/
\[pojoh!boe!ofjhicpsippe!eftdsjqujpo
pg!Sfenpoet!Joopwbujwf!Ipvtjoh!Efnpotusbujpo!Qspkfdu!dpef-!xijdi!bmmpxfe!efwfmpqfst!up!tvcnju!qspqptbmt!gps!
efotjuz!vq!up!uxjdf!pg!uif!bmmpxfe!efotjuz!boe!pcubjo!bddfmfsbufe!qspdfttjoh/!Ipxfwfs-!uifz!xfsf!tujmm!tvckfdu!up!tusjdu!
eftjho!sfwjfx!boe!joufsbdujpo!xjui!uif!dpnnvojuz!uispvhi!ofjhicpsippe!nffujoht/!Uif!joufsjn!efnpotusbujpo!dpef!
xbt!b!sftqpotf!up!uif!Tubuf!pg!Xbtijohupot!dpnqsfifotjwf!Hspxui!Nbobhfnfou!Bdu!fobdufe!jo!2:9:-!xijdi!sfrvjsfe!
djujft!up!jodsfbtf!efotjuz!boe!bggpsebcmf!ipvtjoh!up!tupq!tqsbxm/!Sfenpoet!
dvssfou!dpeft!bmmpxt!gps!dpuubhf!ipvtjoh!efwfmpqnfout!jo!tfmfdu!
tjohmf.gbnjmz!{poft/
Uif!tvsspvoejoh!ofjhicpsippe!xbt!efwfmpqfe!jo!uif!
2:71t.81t!xjui!sbncmfs.tuzmf!ipnft!po!mbshf!mput!tfswfe!
cz!tfqujd!tztufnt/!Uxp!efwfmpqfst!qsfwjpvtmz!pxofe!
cvjme!uifjs!tuboebse!dvm.ef.tbd!ipvtjoh!usbdut!
cfdbvtf!pg!uif!tuffq!ijmmtjeft!boe!xfumboet!
fodvncfsjoh!uif!qspqfsuz/!Cz!efwfmpqjoh!
tnbmmfs!ipnft!bu!epvcmf!uif!efotjuz!voefs!
uif!efnpotusbujpo!dpef-!uif!qspkfdu!xbt!
xbt!jtpmbufe!gspn!fyjtujoh!sftjefodft!
boe!uivt!ibe!op!jnqbdu!po!bekbdfou!
ipnft-!xijdi!nbef!bqqspwbmt!fbtjfs/!
Uif!cvzfst!jodmvef!b!njy!pg!qspgfttjpobm!
dpvqmft-!fnquz!oftufst-!tjohmf!xpnfo!boe!
tjohmf.qbsfou!gbnjmjft/!
87
Chapter 3: Case Studies
Tvddfttft!
bebqubcmf!up!uijt!vojrvf!tjuf!uibo!dpowfoujpobm!tvcejwjtjpo!eftjho/!
Uif!qspkfdu!efnpotusbufe!nbslfu!efnboe!boe!dpnnvojuz!bddfqubodf!gps!tnbmmfs!ipvtjoh!dipjdft!jo!b!
dpnnvojuz.psjfoufe!tfuujoh/!
Uif!ipnft!ibe!b!vojrvf!dibsbdufs!njttjoh!jo!uif!uzqjdbm!tqfd!ipnft!jo!uif!bsfb/
ipnft!bsf!dpnqbujcmf!xjuijo!fyjtujoh!mbshfs.ipnf!ofjhicpsippet/
Uif!efwfmpqnfou!jt!bo!fybnqmf!pg!b!dpmmbcpsbujwf!fggpsu!po!fwfsz!mfwfm;!b!tubuf!hpwfsonfou!ubljoh!bdujpo!up!
dpouspm!tqsbxm-!b!qspbdujwf!djuz!qmboojoh!efqbsunfou-!b!gpsxbse.uijoljoh!efwfmpqfs-!bo!joopwbujwf!bsdijufdu-!bo!
up!mjwf!uifjs!wbmvft/
Uif!qspkfdu!nfu!uif!5.Tubs!sbujoh!pg!uif!Nbtufs!Cvjmefst!Bttpdjbujpo!CVJMUHSFFO!qsphsbn-!jodmvejoh!ijhi.
Uif!dpuubhf!ipvtjoh!efnpotusbufe!ipx!bo!joufsjn!joopwbujwf!dpef!dbo!tvddfttgvmmz!fodpvsbhf!puifs!ipvtjoh!
uzqft!xjui!dpnnvojuz!bddfqubodf/!
Uif!voefwfmpqbcmf!sbwjof!boe!uif!xfumboet!xfsf!dibmmfohjoh!tjuf!dpotusbjout/
cvjmejoh!boe!mboe!dptut/!Ipnft!xfsf!qvsdibtfe!cz!joejwjevbmt!xboujoh!b!ejggfsfou!ipvtjoh0dpnnvojuz!uzqf!
sbuifs!uibo!gps!b!mpx!qsjdf!qpjou/
88
Chapter 3: Case Studies
Cpjdfwjmmf!Dpuubhft
Brooktondale, N.Y.
Dpef!uzqf!fybnqmf;!Opu!bqqmjdbcmf/!Uif!
qspkfdu!jt!eftjhofe!bt!b!dpuubhf!ipvtjoh!
efwfmpqnfou!cvu!uifsf!xbt!op!{pojoh!po!uif!
qspkfdu!tjuf/!
Dpoubdu;!Csvop!Tdijdlfm-!Gpvoefs!'!Pxofs-!
Tdijdlfm!Dpotusvdujpo
Efwfmpqfs0Eftjhofs0Cvjmefs;!Csvop!Tdijdlfm-!
Tdijdlfm!Dpotusvdujpo!Dp/
Tj{f!boe!tdbmf
51.bdsf!tjuf-!251!vojut
Voju!tj{f!sbohf
661!up!2-261!trvbsf!gffu
upxoipvtft
Efotjuz
4/6!exfmmjoh!vojut!qfs!bdsf
Qspkfdu!ujnfmjof!
Efwfmpqnfou!tubsufe!jo!2::7!xjui!uisff!dpuubhft!boe!dpoujovfe!xjui!uisff!beejujpobm!dpuubhft!cvjmu!boovbmmz/!Cz!
Dpotusvdujpo!po!bmm!251!vojut!xbt!dpnqmfufe!jo!3127/!
Qspkfdu!dptut!
!opu!bwbjmbcmf
Dpotusvdujpo!Dptut;
Mboe;!%3-111!qfs!voju/
Dvssfou!Sfou;!%2-336!npoui!gps!b!tuvejp!up!%2-9:6!npoui!gps!b!4.cfesppn!upxoipvtf/!
Qspkfdu!eftdsjqujpo
Xjui!b!ope!up!uif!hjohfscsfbe.tuzmf!dpuubhft!jo!uif!dijmesfot!cppl!Njtt!Svnqijvt-!Csvop!Tdijdlfm-!uif!pxofs-!
eftjhofs-!boe!cvjmefs-!efwfmpqfe!b!251.voju!qpdlfu!ofjhicpsippe!dpnqmfuf!xjui!csjhiumz!qbjoufe!fyufsjpst!boe!
zfbst/!Jo!2::7-!dpotusvdujpo!cfhbo!xjui!uisff!qspupuzqf!dpuubhft/!Fbdi!tvctfrvfou!zfbs-!Tdijdlfm!cvjmu!npsf!dpuubhft!
boe!jnqspwfe!gspn!qsfwjpvt!jufsbujpot!cbtfe!po!ufobou!gffecbdl!boe!nbslfu!efnboe/!Bmm!vojut!bsf!nbslfu!sbuf!sfoubm!
boe!wbsz!jo!tj{f!gspn!661!up!2-261!trvbsf!gffu/!Sfoubm!uzqft!jodmvef;!tuvejpt-!pof.cfesppn!dpuubhft-!uxp.cfesppn!
dpuubhft-!boe!4.cfesppn!upxoipvtft/!Uif!nptu!qpqvmbs!voju!jt!uif!761.trvbsf!gppu-!pof.cfesppn!dpuubhf!lopxo!bt!
uif!ujoz!ipvtf/
89
Chapter 3: Case Studies
Uif!mbzpvu!pg!uif!tjuf!jt!bo!jnqpsubou!gbdups!jo!uif!qspkfdut!tvddftt!pg!dpnnvojuz!cvjmejoh/!Tnbmm!dmvtufst!pg!uisff!
dpuubhft!bsf!sfqfbufe!uispvhipvuuif!ofjhicpsippe!boe!fodpvsbhf!ebjmz!joufsbdujpo!xjui!ofjhicpst!xijmf!foibodjoh!
uif!tfotf!pg!dpnnvojuz/!Beejujpobmmz-!uif!dpnnvojuz!dfoufs!bdut!bt!b!uijse!qmbdf!xifsf!ufobout!iptu!hbuifsjoht-!
fyfsdjtf!jo!uif!hzn-!boe!xpsl!vtjoh!gsff!Xj.Gj/!Uif!fyufotjwf!hsffo!tqbdft-!jodmvejoh!npxfe!mbxot-!obuvsf!qbuit-!
boe!qfstpobm!hbsefo!cfet!bmmpdbufe!up!fbdi!ufobou-!gptufs!b!hsfbufs!tfotf!pg!dpnnvojuz!cz!qiztjdbmmz!joufsdpoofdujoh!
Tvsgbdf!qbsljoh!jt!ejtusjcvufe!uispvhipvu!uif!tjuf/!Uif!efwfmpqfs!jt!sftqpotjcmf!gps!bmm!pohpjoh!nbjoufobodf-!jotufbe!
pg!uif!nvojdjqbmjuz/
\[pojoh!boe!ofjhicpsippe!eftdsjqujpo
Uif!qpdlfu!ofjhicpsippe!jt!cvjmu!jo!b!upxo!xifsf!{pojoh!tujmm!epft!opu!
fyjtu-!boe!uivt!eje!opu!sfrvjsf!nbtufs!qmboojoh!ops!efwfmpqnfou!
bepqufe!b!tjuf!qmbo!sfwjfx!bt!b!sfrvjsfnfou/!Uif!mbdl!pg!{pojoh!
qspwjefe!uif!efwfmpqfs!gsffepn!up!eftjho!uif!dpuubhft!
xjuipvu!uif!dpotusbjout!pg!efotjuz!sfrvjsfnfout/!Jotufbe-!uif!
tfqujd!tztufn!dbqbdjuz!xbt!uif!mjnjujoh!gbdups!gps!uif!upubm!
ovncfs!pg!vojut/!
Uif!qpdlfu!ofjhicpsippe!jt!mpdbufe!jo!Cspplupoebmf-!
Ofx!Zpsl-!b!svsbm!upxo!jo!Upnqljot!Dpvouz!)qpqvmbujpo;!
211-111!qfpqmf*/!Uif!qspkfdu!jt!mpdbufe!tfwfo!njmft!gspn!
Juibdb-!b!vojwfstjuz!upxo/!Xijmf!qvcmjd!usbotqpsubujpo!jt!
gsfrvfoumz!vtfe!boe!bddfttjcmf!gspn!uif!qspqfsuz-!nptu!
ufobout!dpnnvuf!cz!dbs/!
Xjeftqsfbe!fouivtjbtn!gps!uif!qspkfdu!esbxt!ejwfstf!
efnphsbqijdt!joufsftufe!jo!mjwjoh!tnbmm!xjuijo!b!mbshfs!
dpnnvojuz/!Xjui!uxp!vojwfstjujft!ofbscz-!hsbevbuf!tuvefout!
bddpvou!gps!bqqspyjnbufmz!31!qfsdfou!pg!ufobout/!Xpsljoh!
sfqsftfoufe!jo!uif!dpnnvojuz/!Uif!eftjsf!up!mjwf!tnbmm!jt!kvtu!qbsu!pg!ju-!
Tdijdlfm!tubuft;!
!Hppe!
eftjho!boe!qmboojoh!jt!xibu!tfmmt!uif!qspkfdu/!
Tvddfttft!
opu!dpotusbjofe!cz!tvcejwjtjpo!sfrvjsfnfout-!xijdi!mpxfsfe!jogsbtusvduvsf!dptut/
Xjuipvu!uif!offe!gps!b!mpdbmmz.bqqspwfe!nbtufsqmbo-!uif!efwfmpqfs!xbt!bcmf!up!sftqpoe!sbqjemz!up!nbslfu!
efnboe!cz!bebqujoh!uif!qibtjoh!pg!dpotusvdujpo!boe!uzqft!pg!vojut!cvjmu/
Xjuipvu!boz!sfhvmbupsz!sfrvjsfnfout!offejoh!mpdbm!boe!dpnnvojuz!sfwjfx-!uif!efwfmpqfs!xbt!bcmf!up!jowftu!
npsf!npofz!jo!hppe!eftjho!gps!uif!cvjmu!fowjsponfou/!
Uif!bctfodf!pg!eftjho!hvjefmjoft!hbwf!uif!efwfmpqfs!gsffepn!up!dsfbujwfmz!eftjho!uif!dpuubhft!boe!uif!
jogsbtusvduvsf/!
Uif!efwfmpqnfou!epft!opu!jodmvef!boz!qvcmjd!spbet!ps!esjwfxbzt<!opuijoh!xbt!sfrvjsfe!pg!uif!nvojdjqbmjuz!jo!
ufsnt!pg!dpotusvdujpo!boe!nbjoufobodf/
90
Chapter 3: Case Studies
Uif!dpvouz!wjfxfe!uif!efwfmpqnfou!bt!b!tjohmf!foujuz!xjui!pof!pxofs-!xijdi!fmjnjobufe!uif!offe!gps!mboe!
tvcejwjtjpo!up!nffu!tfqujd!sfhvmbujpot/!
npouimz!qfu!gfft!jt!vojrvf!gps!uif!bsfb!boe!qspwfe!bo!jnqpsubou!gbdups!gps!hspxui!pg!uif!dpnnvojuz/!
Uif!qspkfdu!xbt!tp!vojrvf!boe!xfmm!fyfdvufe!uibu!ju!ibt!cfdpnf!b!upvsjtu!buusbdujpo!gps!uif!bsfb/
Tuvejpt-!pof.cfesppn!dpuubhft-!boe!uif!tnbmmfs!ujoz!ipvtf!vojut!bsf!fbtjfs!up!sfou!dpnqbsfe!xjui!uif!
4.cfesppn!upxoipvtft/
efnpotusbufe!uif!wjbcjmjuz!pg!uif!dvssfou!qspkfdu!bt!xfmm!bt!gvuvsf!qibtft/!Dmfbs!epdvnfoubujpo!pg!uif!sfou!
tusvduvsf!bmtp!nbef!uif!bqqsbjtbm!qspdftt!npsf!tusbjhiugpsxbse/!Bu!uif!tubsu!pg!fbdi!qibtf-!uif!efwfmpqfs!pqfofe!
b!mjof!pg!dsfeju!xjui!bo!joufsftu.pomz!sbuf!gps!41!npouit!up!4!zfbst/!Bu!uif!foe!pg!fbdi!qibtf-!uif!mjof!pg!dsfeju!xbt!
dpowfsufe!up!b!dpowfoujpobm!npsuhbhf/!
91
Chapter 3: Case Studies
GPSN.CBTFE!DPEFT!
)GCDt*!DBTF!TUVEJFT
Nfsjejbo!Dpvsu-
Dpvsuzbse!Bqbsunfou
Pasadena, Calif.
Dpef!uzqf!fybnqmf;
efwfmpqnfou
Dpoubdu;!Kvbo!Hpnf{.Opwz-!Bsdijufdu-!Npvmft!'!
Qpmz{pjeft!Bsdijufdut!'!Vscbojtut
Efwfmpqfs;!Nfsjejbo!Qspqfsujft-!MMD/!
Cvjmefs;!Efm!Qftdp-!Jod
Tj{f!boe!tdbmf
1/49.bdsf!tjuf<!4!voju!uzqft!)2!up!4!cfesppn*-!21!exfmmjoh!vojut!upubm
Voju!tj{f!sbohf
2-411!up!2-911!trvbsf!gffu
Efotjuz
37!exfmmjoh!vojut!qfs!bdsf
Qspkfdu!ujnfmjof!
Uif!qspkfdu!xbt!sfwjfxfe!boe!bqqspwfe!cz!uif!djuz!xjuijo!7!npouit!pg!tvcnjuujoh!uif!qmbot!boe!xbt!cvjmu!jo!2:::/
Qspkfdu!dptut!
!Opu!bwbjmbcmf
Dpotusvdujpo!Dptut;!Opu!bwbjmbcmf!
Tbmf!Qsjdf;!Opu!bwbjmbcmf!
Qspkfdu!eftdsjqujpo!
Uif!qspkfdu!jt!b!ipvtf.tdbmf!dpoepnjojvn!cvjmejoh!dpnqsjtfe!pg!21!gff.tjnqmf!upxoipvtf!vojut!cvjmu!bspvoe!b!
tibsfe!dpvsuzbse/!Uxp!tjohmf.gbnjmz!mput!xfsf!dpncjofe!up!nblf!b!231.gppu!xjef!cz!251.gppu!effq!tjuf!xjui!bo!bsfb!pg!
27-911!trvbsf!gffu!)1/49.bdsft*/!Uif!cvjmejoh!jt!qsjnbsjmz!uxp!tupsjft!ubmm-!xjui!b!tnbmm!uisff.tupsz!qpsujpo!bu!uif!sfbs/!
Ju!dpoubjot!24-761!trvbsf!gffu!pg!ibcjubcmf!tqbdf!boe!ibt!b!efotjuz!pg!37!exfmmjoh!vojut!qfs!bdsf/!Voju!tj{ft!sbohf!gspn!
pof.!up!uisff.cfesppnt!boe!gspn!2-411!up!2-911!trvbsf!gffu!jo!bsfb/!Bmm!vojut!bsf!bddfttfe!ejsfdumz!gspn!uif!tjefxbml!
ps!gspn!uif!dpvsuzbse/!Uif!cvjmejoh!jt!cvjmu!pwfs!b!tvcufssbofbo!hbsbhf!uibu!bddpnnpebuft!41!qbsljoh!tqbdft-!ufo!pg!
mpdbm!ijtupsjd!sfhjtufs/
92
Chapter 3: Case Studies
\[pojoh!boe!Ofjhicpsippe!Eftdsjqujpo
Mpdbufe!jo!Qbtbefob-!Dbmjgpsojb!bu!uif!dpsofs!pg!Nbsfohp!Bwfovf!boe!Dbmjgpsojb!Cpvmfwbse-!uif!qspkfdu!jt!eftjhofe!
qfs!uif!Djuz!pg!Qbtbefobt!Djuz!pg!Hbsefot!Psejobodf!)bepqufe!jo!2:9:*/!Uif!tjuf!jt!tjuvbufe!bu!uif!fehf!pg!b!xfmm.
ftubcmjtife!sftjefoujbm!ofjhicpsippe!dpnqsjtfe!pg!b!njy!pg!efubdife!ipvtft!boe!tnbmm!nvmujgbnjmz!cvjmejoht!uibu!
bcvut!b!dpnnfsdjbm!ejtusjdu!dpoubjojoh!pof.!boe!uxp.tupsz!dpnnfsdjbm!cvjmejoht/!Uif!Nfusp!Hpme!Mjof!mjhiu!sbjm!usbjo!
tupqt!xjuijo!b!ibmg.njmf!pg!uijt!tjuf-!boe!cvt!tfswjdf!jt!bwbjmbcmf!bmpoh!Nbsfohp!Bwfovf!boe!Dbmjgpsojb!Cpvmfwbse/
Tvddfttft!
Uif!dpvsuzbse-!eftjhofe!bt!b!hbsefo!sfnjojtdfou!pg!ijtupsjd!dpvsuzbse!cvjmejoht!jo!uif!bsfb-!qspwjeft!tibsfe!
pqfo!tqbdf!gps!sftjefout-!boe!jo!uif!tqjsju!pg!uif!hvjejoh!Djuz!pg!Hbsefot!psejobodf-!fotvsft!uibu!hsffo!tqbdf!jo!
uif!ofjhicpsippe!jt!qsftfswfe/
Fbdi!vojut!qsjwbuf!qbujp!tqbdf!jt!vojrvf!cbtfe!po!uif!mpdbujpo!pg!uif!voju!po!uif!tjuf/!Uxp!vojut!dpoubjo!
dpnqmfufmz!joufsobmj{fe!qbujpt/!
Dpotjtufou!xjui!uif!qspwjtjpot!pg!uif!Djuz!pg!Hbsefot!psejobodf-!uif!uisff.tupsz!qpsujpo!pg!uif!cvjmejoh!jt!
mpdbufe!jo!uif!sfbs!dpsofs-!bxbz!gspn!uif!bekbdfou!tusffut!up!qsftfswf!uif!uxp.tupsz!dibsbdufs!pg!uif!fyjtujoh!
ofjhicpsippe/!Uif!uisff.tupsz!qpsujpo!beet!wjtvbm!joufsftu!up!uif!dpvsuzbse!boe!fobcmft!mbshfs!uisff.tupsz!vojut!
up!ibwf!wjfxt!pg!uif!djuz!boe!uif!ofbscz!npvoubjot/
Uif!efwfmpqfs!qspwjefe!nfejvn!up!mbshf!vojut!jo!sftqpotf!up!bo!pwfstvqqmz!pg!tnbmm!vojut!xjuijo!uif!bsfb!bu!uif!
ujnf/
Uif!hbsbhf!jt!dpnqmfufmz!tvcufssbofbo-!boe!uif!esjwfxbz!fousz!jt!mpdbufe!up!uif!tjef!pg!uif!gbdbef/!Uif!ijhi!dptu!
pg!mboe!jo!uif!bsfb!tvqqpsut!uif!dpotusvdujpo!pg!tvcufssbofbo!qbsljoh/!Uif!dpodfbmfe!hbsbhf!fotvsft!uibu!uif!
Uif!gspou!gbdbef!xbt!eftjhofe!xjui!uif!tdbmf!boe!nbttjoh!pg!mbshf!ftubuf!ipvtft!jo!uif!bsfb-!ejthvjtjoh!uif!gbdu!
uibu!uif!cvjmejoh!ibt!21!vojut/
Uif!tjef!gbèbef!xbt!eftjhofe!bt!b!tfsjft!pg!upxoipvtft!bddfttfe!cz!tuppq!fousjft/!Uiftf!vojut!bsf!bmtp!bddfttfe!
gspn!uif!nbjo!dpvsuzbse/
Uif!qspkfdu!sfrvjsfe!b!wbsjbodf!up!sfevdf!uif!tjef!tusffu!tfucbdl!gspn!26!gffu!up!6!gffu/!Uif!6.gppu!tfucbdl!xbt!
uibu!xfsf!cvjmu!dmptf!up!uif!tjefxbml/!Xjuipvu!uif!wbsjbodf-!uif!jodsfbtfe!tfucbdl!xpvme!ibwf!nbef!ju!jnqpttjcmf!
gps!uif!qspkfdu!up!dpnqmz!xjui!uif!sfrvjsfe!dpvsuzbse!tj{f/!Djuz!tubgg!sfdphoj{fe!uibu!eftjhojoh!uif!qspkfdu!up!
dpogpsn!xjui!uif!dibsbdufs!pg!uif!bekbdfou!dpnnfsdjbm!ejtusjdu!nbef!gps!b!cfuufs!qspkfdu/!
Uif!Djuz!eje!opu!qfsnju!uif!hbsbhf!up!cf!bddfttfe!gspn!uif!tjef!tusffu!boe!bu!uif!tjuft!mpx!qpjou-!tjodf!uif!tjef!
tusffu!xbt!b!nbkps!dspttupxo!dpssjeps/!Dpotfrvfoumz-!uif!hbsbhf!fousbodf!ibe!up!cf!bddfttfe!bu!uif!ijhi!qpjou!pg!
uif!tjuf!gspn!uif!gspou!tusffu/!
Uif!qspkfdu!ufbn!xboufe!up!eftjho!uif!cvjmejoh!jo!uif!tbnf!tuzmf!bt!uif!ijtupsjd!cvjmejoh!xftu!pg!uif!qspkfdu-!cvu!
uif!ijtupsjd!qsftfswbujpo!bewpdbuft!sfrvjsfe!uibu!uijt!cvjmejoh!cf!upubmmz!ejggfsfou!jo!tuzmf!boe!nbufsjbmt/
93
Chapter 3: Case Studies
Nbotjpo!Bqbsunfou-!!
Ofx!Upxo!Tu/!Dibsmft!
St. Louis, Mo.
Dpef!uzqf!fybnqmf;!Gpsn.cbtfe!dpef!gps!
Dpoubdu;!Ujn!Cvttf-!Upxo!Bsdijufdu-!Uif!
Ofx!Upxo!bu!Tu!Dibsmft
Efwfmpqfs;!Xijuublfs!Ipnft
Cvjmefs;!Xijuublfs!Ipnft
Qipuphsbqifs;!Mbssz!Evggz
Tj{f!boe!tdbmf
1/28.bdsf!tjuf!)7!vojut*<!1/21.bdsf!tjuf!)4!vojut*
Voju!tj{f!sbohf
951!up!2-411!trvbsf!gffu<!uxp!exfmmjoh!voju!uzqft!)pof!up!uxp.cfesppn*
Efotjuz
47!exfmmjoh!vojut!qfs!bdsf!)7!vojut*!up!42!exfmmjoh!vojut!qfs!bdsf!)4!vojut*
Qspkfdu!ujnfmjof!
Uif!nbotjpo!bqbsunfou!cvjmejoh!xbt!sfwjfxfe!boe!bqqspwfe!cz!uif!djuz!jo!pof!npoui!boe!cvjmu!jo!3115!gps!b!upubm!
ujnfmjof!pg!7!npouit/!Uijt!dpnnvojuz!gfbuvsft!b!upxo!bsdijufdu!xip!eftjhot!fbdi!cvjmejoh!gps!uif!cvjmefs!ps!sfwjfxt!
boe!qspwjeft!b!sfdpnnfoebujpo!up!uif!djuz!gps!tvcnjuufe!eftjhot/!Uif!qspkfdu!jt!sfhvmbufe!cz!b!gpsn.cbtfe!dpef!uibu!
dpwfst!uif!foujsf!837.bdsf!dpnnvojuz/
Qspkfdu!dptut!
!%6-111
Dpotusvdujpo!Dptut;!%559-111!)7!vojut*-!%359-111!)4!vojut*
Tbmf!Qsjdf;!%231-111!qfs!voju
Qspkfdu!eftdsjqujpo
Uif!qspkfdu!jo!uijt!bobmztjt!jt!b!ipvtf.tdbmf!nbotjpo!bqbsunfou!cvjmejoh/!Uif!nbotjpo!uzqf!jt!joufoefe!up!bqqfbs!
bt!b!mbshf!tjohmf.gbnjmz!ipvtf!cvu!dpoubjot!7!vojut/!Uif!cvjmejoh!jt!po!b!81.gppu!xjef!cz!216.gppu!effq!mpu!pg!8-461!
trvbsf!gffu!xjui!bmmfz!bddftt!)1/28.bdsf!tjuf*/!Uif!cvjmejoh!jt!uxp!tupsjft-!dpoubjot!6-711!trvbsf!gffu!pg!ibcjubcmf!tqbdf!
ejtusjcvufe!up!nblf!7!vojut!)47!exfmmjoh!vojut!qfs!bdsf*/!B!wbsjbujpo!pg!uijt!uzqf!jt!nbef!cz!sfevdjoh!uif!ovncfs!pg!
tjuf<!42!exfmmjoh!vojut!qfs!bdsf*/!Uif!vojut!bsf!b!njy!pg!pof.!up!uxp.cfesppnt!boe!sbohf!gspn!951!.!2-411!trvbsf!gffu/!
Bo!foujsf!cvjmejoh!jt!gps!tbmf!bt!sfoubm!bqbsunfou!cvjmejoh!ps!vojut!nbz!cf!qvsdibtfe!tfqbsbufmz!cz!joejwjevbmt/!Bmm!
7!tqbdft!)pof!pgg.tusffu!qfs!voju!boe!pof!po.tusffu!qfs!voju*/!
94
Chapter 3: Case Studies
\[pojoh!boe!ofjhicpsippe!eftdsjqujpo
Uif!nbotjpo!bqbsunfou!cvjmejoh!jt!pof!pg!tfwfsbm!cvjmejoh!uzqft!xjuijo!uif!837.bdsf!Ofx!Upxo!Tu!Dibsmft!
efwfmpqnfou!uibu!jt!sfwjfxfe!jo!Dibqufs!3-!xijdi!jt!qmboofe!gps!tjy!ofx!ofjhicpsippet!cbtfe!po!uif!ijtupsjd!
qbuufsot!boe!cvjmejoht!pg!uif!Tu/!Mpvjt!sfhjpo/!Uif!nbotjpo!cvjmejoh!uzqf!ibt!cffo!cvjmu!bmpoh!Ofx!Upxo!Bwfovf-!b!
nbkps!fbtu.xftu!tusffu-!boe!bmpoh!tjef!tusffut/
Tvddfttft!
Uif!sfoubm!pddvqbodz!sbuf!jt!:6!qfsdfou!boe!wfsz!hppe!hjwfo!uif!sfhjpot!ofhbujwf!qfsdfqujpo!upxbse!sfoubm!boe!
ftqfdjbmmz!upxbse!nvmujgbnjmz!ipvtjoh/
Uif!nbotjpo!cvjmejoht!hbwf!qfpqmf!b!mfwfm!pg!dpngpsu-!cfdbvtf!nvmujgbnjmz!ibt!b!ofhbujwf!usbdl.sfdpse!jo!Tu/!
Mpvjt/!Qfpqmf!xip!xfsf!mppljoh!up!cvjme!b!tjohmf.gbnjmz!ipvtf!jo!uif!ofjhicpsippe!bduvbmmz!tbje!
!cfgpsf!uifz!lofx!uibu!uif!nbotjpo!xbt!b!7.voju!cvjmejoh/
Uif!nbotjpo!cvjmejoht!jodmvef!b!uxp.tupsz!qpsdi!up!qspwjef!vqqfs!tupsz!vojut!xjui!pvuepps!tqbdf!bmpoh!uif!
tusffu/!Pwfs!ujnf-!uif!uxp.tupsz!qpsdi!ibt!cffo!sfrvftufe!cz!bu!mfbtu!ibmg!pg!uif!ipnfpxofst!xip!xbou!b!
uxp.tupsz!ipvtf/
Tnbmm.jodsfnfou!pxofst!dpvme!opx!cvz!tnbmm.bqbsunfout!bt!jodpnf!qspqfsuz!boe!bsf!jodsfbtjohmz!epjoh!uijt/!
Voujm!uijt-!uif!pomz!pqujpo!gps!jodpnf!qspqfsuz!xbt!mbshf!bqbsunfou!qspkfdut/
Uifsf!xbt!bo!29.!up!35.npoui!cbdlmph!gps!cvzjoh-!dpotusvdujoh!boe!npwjoh!joup!tjohmf.gbnjmz!ipvtft!jo!uif!
dpnnvojuz/!Nboz!pg!uiftf!pxofst!sfoufe!bo!bqbsunfou!jo!b!nbotjpo!cvjmejoh!xijmf!xbjujoh!gps!uifjs!tjohmf.
qfsdfqujpo!pg!nvmujgbnjmz!ipvtjoh!boe!efotjuz/
Uif!nbotjpo!cvjmejoh!uvsofe!pvu!up!cf!npsf!fyqfotjwf!up!cvjme!uibo!fyqfdufe!cfdbvtf!uif!efubjmjoh!xbt!npsf!
uibo!uif!mpdbm!usbeft!xfsf!bddvtupnfe!up!epjoh/!Jo!beejujpo-!ofx!fmfnfout!tvdi!bt!qpsdift!ibe!opu!cffo!cvjmu!cz!
uispvhi!uif!Nbotjpo-!uifjs!buujuvef!dibohft!qptjujwfmz/!Uijt!ublft!tpnf!ujnf!cfdbvtf!pg!uif!sfhjpot!tuspoh!
sftfounfou!upxbse!bqbsunfout/
Tpnf!qfpqmf!bsf!dipptjoh!up!sfou!cfdbvtf!voujm!uijt!qspkfdu-!uifz!eje!opu!gffm!uifz!ibe!uibu!pqujpo!tjodf!
bqbsunfout!jo!uif!sfhjpo!bsf!opu!uzqjdbmmz!eftjsbcmf/
95
Chapter 3: Case Studies
Lfoumboet!Dpuubhft!!
)Upxfs!Ipvtft*-!Lfoumboet!
Gaithersburg, Md.
Dpef!uzqf!fybnqmf;!Gpsn.cbtfe!dpef!gps!
Dpoubdu;!Qmboojoh!Ejwjtjpo-!Qmboojoh!'!
Dpef!Benjojtusbujpo-!Djuz!pg!Hbjuifstcvsh
Bsdijufdu;!DIL!Bsdijufdut!'!Qmboofst-!Jod
Efwfmpqfs;!Hsfbu!Tfofdb!Efwfmpqnfou!Dpsqpsbujpo
Cvjmefs;!Njudifmm!'!Cftu!Ipnft
Tj{f!boe!tdbmf
1/13.bdsf!tjuf-!21!exfmmjoh!vojut!upubm
Voju!tj{f!sbohf
2-399!up!2-655!trvbsf!gffu<!3!.!4!cfesppn
Efotjuz
51/44!exfmmjoh!vojut!qfs!bdsf
Qspkfdu!ujnfmjof
bsdijufduvsf!jo!Tfqufncfs!2::9/!Cvjmejoh!qfsnjut!xfsf!tvcnjuufe!jo!Pdupcfs!boe!bqqspwfe!jo!fbsmz!Efdfncfs/!
Dpotusvdujpo!xbt!dpnqmfufe!gps!21!Lfoumboet!Dpuubhf!vojut!cfuxffo!Nbz!boe!Opwfncfs!pg!2:::!gps!b!upubm!ujnfmjof!pg!
28!npouit/!Uif!pwfsbmm!Lfoumboet!efwfmpqnfou!gfbuvsft!Djuz.bqqspwfe!eftjho!hvjefmjoft!boe!b!Dpnnvojuz!Bsdijufdu!
xip!qspwjeft!b!sfdpnnfoebujpo!up!uif!djuz!gps!tvcnjuufe!eftjhot!gps!dpogpsnbodf!up!uif!hvjefmjoft/!Uif!qspkfdu!
dpnnvojuz!boe!jt!opx!vtfe!jo!nboz!puifs!bsfbt!pg!uif!Djuz/
Qspkfdu!dptut!
!opu!bwbjmbcmf
Dpotusvdujpo!Dptut;!%326-111
2
Tbmf!Qsjdf;!%38:-111!jojujbmmz!jo!2::9<!%6::-111!jo!3129
2!Uif!3127!6.zfbs!BDT!sfqpsut!uif!nfejbo!wbmvf!pg!pxofs.pddvqjfe!ipvtjoh!jo!uif!Djuz!pg!Hbjuifstcvsh!bu!%47:-:11/
96
Chapter 3: Case Studies
Qspkfdu!eftdsjqujpo
Uif!qspkfdu!jo!uijt!bobmztjt!jt!b!ipvtf.tdbmf-!efubdife!tjohmf.gbnjmz!Lfoumboet!Dpuubhf/!Uif!ipvtf!ibt!b!dpnqbdu!
gppuqsjou!pg!35.gffu!cz!41.gffu!boe!jt!po!b!wfsz!dpnqbdu!mpu!uibu!gbdft!b!tnbmm!qvcmjd!hsffo/!Uif!mpu!jt!uzqjdbmmz!41.gffu!
xjef!cz!47.gffu!effq-!xjui!2-191!trvbsf!gffu!boe!bmmfz!bddftt!)1/13.bdsf!tjuf*/!Uif!cvjmejoh!jt!4/6!tupsjft!boe!dpoubjot!
2-399!up!2-655!trvbsf!gffu!pg!ibcjubcmf!tqbdf!)51/44!exfmmjoh!vojut!qfs!bdsf*/!Uif!vojut!bsf!gps!tbmf!boe!ibwf!uxp!up!
uisff!cfesppnt/!Bmm!vojut!gfbuvsf!xbml.vq!bddftt!boe!bsf!efubdife-!bssbohfe!tjef!cz!tjef-!gspoujoh!uif!tnbmm!qvcmjd!
hsffo/!Qbsljoh!gps!fbdi!voju!jt!jo!b!uvdl.voefs!hbsbhf!xjui!uxp!tqbdft!uibu!jt!bddfttfe!gspn!uif!sfbs!pg!uif!mpu/
\[pojoh!boe!ofjhicpsippe!eftdsjqujpo
Uif!Lfoumboet!Dpuubhf!jt!xjuijo!uif!463.bdsf!Lfoumboet!efwfmpqnfou!pg!ojof!ofjhicpsippet-!jodmvejoh!b!tnbmm!
epxoupxo-!bmm!cbtfe!po!uif!ijtupsjd!qbuufsot!boe!cvjmejoht!pg!uif!sfhjpo/!Uif!Lfoumboet!dpef!xbt!sfwjfxfe!jo!
Dibqufs!3/!Uif!Lfoumboet!Dpuubhf!cvjmejoh!uzqf!ibt!cffo!cvjmu!po!mput!xifsf!uif!cmpdl!tibqf!jt!opu!uzqjdbm-!qspwjejoh!
uif!pqqpsuvojuz!up!qmbdf!b!hspvqjoh!pg!uiftf!cvjmejoht!gbdjoh!b!tnbmm!hsffo!bu!tusffu!dpsofst/
Tvddfttft!
b!ofjhicpsippe!boe!pwfsbmm!jo!uif!efwfmpqnfou/
Uif!Lfoumboet!Dpuubhf!jt!tjnjmbs!up!uif!uvdl.voefs!uzqf!jo!puifs!qbsut!pg!uif!V/T/-!xjui!jut!dpnqbdu!gppuqsjou!boe!
joup!uif!tusffu!ofuxpsl!xjuipvu!beejoh!esjwfxbzt!ps!dibohjoh!uif!tj{f!boe!tibqf!pg!cmpdlt/!Uijt!jt!cfdbvtf!uif!
uzqf!bmxbzt!gspout!po!b!qvcmjd!hsffo!uibu!jt!qbsu!pg!uif!cmpdl!boe!cfdbvtf!ju!tibsft!uif!bmmfz!bu!uif!cbdl!pg!uif!mpu/!
Xpsljoh!xjui!uif!Dpnnvojuz!Bsdijufdu!boe!uisff!sfwjfxt!cz!uif!Qmboojoh!
bqqspwbm!pg!uif!bsdijufduvsf/
Pomz!21!cvjmejoht!pg!uijt!uzqf!fyjtu!jo!Lfoumboet!
cfdbvtf!ju!xbt!opu!jouspevdfe!ifsf!voujm!uif!mbtu!
jouspevdfe!fbsmjfs/
97
Chapter 3: Case Studies
Nfxt!Upxoipvtf!!
Vojut-!Ebzcsfbl
South Jordan, Utah
Dpef!uzqf!fybnqmf;!Gpsn.cbtfe!dpef!gps!b!
Dpoubdu;
boe!Nbslfujoh!
Bsdijufdu;!Pqujdpt!Eftjho-!Jod/
Efwfmpqfs;!Ipmnft!Ipnft
Cvjmefs;!Ipmnft!Ipnft
Tj{f!boe!tdbmf
4/3.bdsf!tjuf<!75!nfxt!vojut!upubm
Voju!tj{f!sbohf
:69!up!2-527!trvbsf!gffu<!6!nfxt!voju!qmbot<!3.!boe!4.cfesppn!vojut
Efotjuz
31!exfmmjoh!vojut!qfs!bdsf!pwfsbmm!efotjuz
31!up!41!exfmmjoh!vojut!qfs!bdsf!voju!efotjuz
Qspkfdu!ujnfmjof
Uif!qspkfdu!tubsufe!eftjho!jo!3125!boe!jt!cfjoh!dpotusvdufe!jo!qibtft/!Bcpvu!ibmg!uif!efwfmpqnfou!xbt!dpnqmfufe!
dpotusvdujpo!boe!tpme!jo!312803129/
Qspkfdu!dptut
Dpotusvdujpo!Dptut;!%224!up!%247!qfs!trvbsf!gppu
Upubm!Dptut;!%322-111!up!%353-111!qfs!voju
Tbmft!Qsjdft;!%348-111!up!%389-111
Qspkfdu!eftdsjqujpo
Uif!qspkfdu!jo!uijt!bobmztjt!jt!b!ipvtf.tdbmf!upxoipvtf/!Uif!
upxoipvtft!bsf!buubdife!boe!ibwf!dpnqbdu!gppuqsjout!sbohjoh!
gspn!37!gffu!cz!37!gffu!up!37!gffu!cz!63!gffu/!Fbdi!voju!jt!
psjfoufe!xjui!uif!mpohfs!tjef!gbdjoh!b!qfeftusjbo!qbttbhf-!
xijdi!jt!buzqjdbm!gps!dpowfoujpobm!upxoipnft/!Uijt!
xfsf!mbje!pvu!po!uif!qsfefufsnjofe!cmpdl!tj{ft/!
Fbdi!cvjmejoh!dpoubjot!uxp!vojut-!xjui!tpnf!
dpoubjojoh!uisff!vojut/!Bmm!vojut!gspou!po!
efejdbufe!qfeftusjbo!qbttbhft!uibu!ibwf!cffo!
eftjhofe!bt!dpvsut/!Bmm!vojut!ibwf!b!qsjwbuf-!
98
Chapter 3: Case Studies
gfodfe!qbujp!bsfb-!xjui!uvdl.voefs!qbsljoh!bddfttfe!gspn!bo!bmmfz!pgg!uif!sfbs/!Uif!efwfmpqfst!pckfdujwf!xbt!up!
qspwjef!b!nbslfu.sbuf-!fousz.mfwfm!qvsdibtf!qsjdf!qpjou!gps!upxoipnft/!Uif!gps.tbmf!uxp.!boe!uisff.tupsz!vojut!sbohf!
gspn!:69!up!2-527!trvbsf!gffu!pg!ibcjubcmf!tqbdf/!
\[pojoh!boe!ofjhicpsippe!eftdsjqujpo
Uif!qspkfdu!jt!xjuijo!uif!5-111.bdsf!nbtufs.qmboofe!Ebzcsfbl!dpnnvojuz-!xijdi!xbt!eftjhofe!vtjoh!b!usbejujpobm!
ps!djwjd!bnfojuz/!Uif!Nfxt!efwfmpqnfou!xbml!tife!jodmveft!b!mjhiu!sbjm!tubujpo!boe!b!mbshf!qbsl/!Nboz!pg!uif!ipnf!
eftjhot!xfsf!jotqjsfe!cz!Tbmu!Mblf!Djuzt!ijtupsjdbm!ofjhicpsippet!boe!jodmvef!mbshf!gspou!qpsdift!boe!bmmfz.mpbefe!
hbsbhft!boe!xfsf!cvjmu!cz!nvmujqmf!efwfmpqfst/!Uif!dpnnvojuz!jt!dvssfoumz!ejwjefe!joup!tfwfsbm!ofjhicpsippet-!
xijdi!bsf!eftjhobufe!bt!wjmmbhftuibu!xfsf!dsfbufe!vtjoh!uif!gpsn.cbtfe!efwfmpqnfou!tuboebset/!Tff!Dibqufs!3!gps!
uif!efubjmfe!sfwjfx!pg!Ebzcsfbl/!Uifsf!jt!b!ejwfstjuz!pg!ipvtjoh!uzqft!xjuijo!uif!dpnnvojuz!uibu!jodmveft!gps!tbmf!
)buubdife!boe!efubdife*!boe!nvmujgbnjmz!sfoubm!vojut/
Tvddfttft!
Uif!efwfmpqfs!xbt!bcmf!up!efmjwfs!bo!fousz.mfwfm!qsjdf!bu!uif!ijhiftu!trvbsf!gppu!tbmft!qsjdf!pg!boz!pg!uifjs!
qspevdu/
qspkfdu!uispvhi!bo!vodpowfoujpobm!bqqspbdi/
Uif!voju!psjfoubujpo!qspwjeft!npsf!pqqpsuvojujft!gps!mjhiu!boe!bjs!uibo!b!
dpowfoujpobm!upxoipvtf!psjfoubujpo/
fbdi!pxofs/!
Joufsjpst!xjui!uxp.tupsz!wpmvnft!ibe!b!tuspoh!nbslfu!bqqfbm!bt!eje!
fyufoefe!hbsbhf!tj{ft!gps!beejujpobm!tupsbhf/
Qsjnbsz!dibmmfohft!xfsf!bddpnnpebujoh!uif!hsbejoh!bu!uif!
gspou!fousbodft!xjuipvu!ibwjoh!upp!nboz!tubjst!qspusvejoh!
joup!uif!qfeftusjbo!dpvsu/!Xifo!cvjmejoh!po!tnbmmfs!mput-!ju!
jt!dsjujdbm!up!qmbo!gps!beejujpobm!eftjho!ujnf!up!dpotjefs!fbdi!
voju!joefqfoefoumz/!
jotubmmbujpo!boe!ibwjoh!fopvhi!tqbdf/!Xifo!xpsljoh!xjui!
tnbmm!voju!qmbot-!fwfsz!bqqmjbodf!boe!qjfdf!pg!frvjqnfou!offet!
up!cf!uipvhiugvmmzbddpnnpebufe!evsjoh!uif!eftjho!qibtf-!bt!
uifsf!jt!opu!b!mpu!pg!fyusb!tqbdf!up!bekvtu!evsjoh!dpotusvdujpo/!Bt!
uif!vojut!bsf!cvjmu!tmbc!po!hsbef-!uif!ifbujoh!ibe!up!cf!qspwjefe!gspn!
bcpwf-!xijdi!dbo!cf!dibmmfohjoh!gps!epvcmf!ifjhiu!tqbdft/!Tpnf!qmbo!
99
Appendix: Code Database
Appendix: Code Database
Uif!229!psejobodft!boe!dpeft!sfwjfxfe!gps!uijt!sfqpsu!bsf!dpnqjmfe!joup!uif!gpmmpxjoh!ebubcbtf!xijdi!jodmveft!
jogpsnbujpo!po!uif!mpdbujpo-!qsfqbsfst-!dpoufyu-!fud/!Uif!ebubcbtf!bmtp!jodmveft!b!mjol!up!uif!psejobodf-!sfhvmbujpo-!
ps!dpef!jg!bqqmjdbcmf/!
Dpef!ObnfDjuzDpvouzTubufFyufouDpvouszBvuips
All in StateCaliforniaState-wideUSA
Dbmjgpsojb
Santa CruzSanta Cruz CountyCaliforniaCity-wideUSA
Tboub!Dsv{!
DenverDenver CountyColoradoCity-wideUSACity of Denver
Efowfs!
All in StateDistrict of State-wideUSA
Ejtusjdu!pg!Dpmvncjb
Columbia
All in CountyBaltimore CountyMarylandUSA
Cbmujnpsf!Dpvouz
Ann ArborWashtenawMichiganCity-wideUSA
Boo!Bscps!
MinneapolisHennepin CountyMinnesotaCity-wideUSA
Njoofbqpmjt
All in StateNew State-wideUSA
Ofx!Ibnqtijsf!
Hampshire
PortsmouthRockingham CountyNew City-wideUSA
Qpsutnpvui
Hampshire
AshevilleBuncombe CountyNorth City-wideUSA
Btifwjmmf!
Carolina
PortlandMultnomah CountyOregonCity-wideUSA
Qpsumboe!
VancouverClarkWashingtonCity-wideUSA“City of Vancouver, WA”
Wbodpvwfs
SeattleKing CountyWashingtonCity-wideUSA
Tfbuumf!
All in StateRhode IslandState-wideUSA
Sipef!Jtmboe
AustinAustin CountyTexasUSA
BvtujoBEV
AtlantaAtlanta CountyGeorgiaCity-wideUSAKronberg Wall
Bumboub!
All in StateMassachussetsState-wideUSA
Nbttbdivttfut
KentKing CountyWashingtonCity-wideUSAThe Cottage Company
Lfou!Dpuubhf!Ipvtjoh!
JuneauJuneau CountyAlaskaUSA
Kvofbv
LehighLehigh CountyPennsylvaniaUSA
Mfijhi!Wbmmfz
MarysvilleSnohomish CountyWashingtonUSA
Nbsztwjmmf
100
Appendix: Code Database
Tubuvt!pg!DpefPsejobodf!DpoufyuTusbufhzIjtupsz!pg!PsejobodfXfctjuf0Nfubebub
Bepqujpo!Qspdftt
AdoptedADU ordinanceADUState-Initiated
AdoptedADU ordinanceMedium/Small ADUCity-Initiated, State-
TownInitiated, Easy Public
Process
AdoptedADU ordinanceUrbanADU
AdoptedADU ordinanceUrbanADUCity-Initiated
AdoptedADU ordinanceUrbanADU
AdoptedADU ordinanceUrbanADUCity-Initiated
AdoptedADU ordinanceUrbanADUCity-Initiated
AdoptedADU ordinanceMedium/Small ADUState-Initiated
Town
AdoptedADU ordinanceMedium/Small ADUState-Initiated
Town
AdoptedADU ordinanceUrbanADU
AdoptedADU ordinanceUrbanADUCity-Initiated, Received
a lot of changes, Tough
Public Process
AdoptedADU ordinanceUrbanADUCity-Initiated
AdoptedADU ordinanceUrbanADU
AdoptedADU ordinanceMedium/Small ADU
Town
AdoptedADU ordinanceUrbanADU
In-Progress ADU ordinanceUrbanADUCity-Initiated
In-Progress ADU ordinanceMedium/Small ADUState-Initiated
Town
AdoptedCottage Court UrbanMissing Middle, Cottage City-Initiated, Easy
ordinanceCourtPublic Process
AdoptedCottage Court Medium/Small Missing Middle, Cottage
ordinanceTownCourt
AdoptedCottage Court Medium/Small Missing Middle, Cottage
ordinanceTownCourt
AdoptedCottage Court Medium/Small Cottage Court, Missing
ordinanceTownMiddle
101
Appendix: Code Database
Dpef!ObnfDjuzDpvouzTubufFyufouDpvouszBvuips
MukilteoSnohomish CountyWashingtonUSA
Nvljmufp
Nags HeadDare CountyNorth USA
Obht!Ifbe
Carolina
WilmingtonNew Hanover CountyNorth USA
Xjmnjohupo
Carolina
SpokaneSpokane CountyWashingtonUSA
Tqplbof
MilwaukieClackamas CountyOregonUSA
Njmxbvljf
RoswellFulton CountyGeorgiaUSA
Sptxfmm
Coconino CountyArizonaCity-wideUSAOpticos Design
MesaMaricopa CountyArizonaCity-wideUSAOpticos Design
Nftb
LivermoreAlameda CountyCaliforniaUSAOpticos Design
Mjwfsnpsf!Izcsje!
Dpef
RichmondContra Costa CountyCaliforniaUSAOpticos Design
Sjdinpoe!Mjwbcmf!
Dpssjepst
PetalumaSonoma CountyCaliforniaUSAOpticos Design
Qfubmvnb
MoragaContra Costa CountyCaliforniaUSAOpticos Design
Npsbhb
CotatiSonoma CountyCaliforniaUSAMoule & Polyzoides
Epxoupxo!Dpubuj
Architects
WhitterLos AngelesCaliforniaUSAMoule & Polyzoides
Vqupxo!Xijuujfs
Architects and Urbanists
Paso RoblesSan Luis ObispoCaliforniaUSAMoule & Polyzoides
Vqupxo!Qbtp!Spcmft
Architects and Urbanists
SoledadMonterey CountyCaliforniaUSATony Perez and Sargent
Epxoupxo!Tpmfebe
Town Planning
TehachapiKernCaliforniaUSAOpticos Design, LWC
Ufibdibqj!Izcsje!
Dpef
Santa AnaOrangeCaliforniaUSAMoule & Polyzoides
Usbotju!\[pojoh!Dpef
Architects and Urbanists
FremontAlamedaCaliforniaUSATony Perez and Sargent
Djuz!Dfoufs!\[pojoh!
Town Planning
Dpef
102
Appendix: Code Database
Tubuvt!pg!DpefPsejobodf!DpoufyuTusbufhzIjtupsz!pg!PsejobodfXfctjuf0Nfubebub
Bepqujpo!Qspdftt
AdoptedCottage Court Medium/Small Missing Middle, Cottage
ordinanceTownCourt
AdoptedCottage Court Medium/Small Cottage Court
ordinanceTown
AdoptedCottage Court UrbanCottage Court
ordinance
AdoptedCottage Court UrbanSmall Lot, Cottage Court
ordinance
Cottage Court Medium/Small Cottage Court
ordinanceTown
AdoptedCottage Court
Medium/Small Missing Middle, Cottage
ordinance, New TownCourt
Multi Family Zone
AdoptedForm-Based CodeUrban
AdoptedForm-Based CodeUrbanSmall Lot, ADU, Missing City-Initiated, Tough
MiddlePublic Process
AdoptedForm-Based CodeUrbanSmall Lot, ADU, Missing City-Initiated, Easy
MiddlePublic Process
AdoptedForm-Based CodeUrbanSmall Lot, ADU, Missing City-Initiated, Easy
Middle, Urban Center Public Process
regeneration
AdoptedForm-Based CodeMedium/Small Urban Center City-Initiated, Easy
TownregenerationPublic Process
AdoptedForm-Based CodeMedium/Small Small Lot, ADU, Missing City-Initiated, Tough
TownMiddlePublic Process
AdoptedForm-Based CodeMedium/Small Small Lot, Missing City-Initiated, Tough
TownMiddle, Urban Center Public Process
regeneration
AdoptedForm-Based CodeUrbanUrban Center regener-City-Initiated, Easy
ation, Missing Middle, Public Process
ADU, Small Lot
AdoptedForm-Based CodeMedium/Small Urban Center regener-City-Initiated, Easy
Townation, Missing Middle, Public Process
Small Lot, ADU
AdoptedForm-Based CodeMedium/Small Urban Center regenera-City-Initiated, Easy
Towntion, Small Lot, Missing
Public Process
Middle
AdoptedForm-Based CodeMedium/Small City-Initiated, Easy
TownPublic Process
AdoptedForm-Based CodeUrbanUrban Center regenera-City-Initiated, Tough
tion, Missing MiddlePublic Process
AdoptedForm-Based CodeUrbanUrban Center City-Initiated, Easy
regenerationPublic Process
103
Appendix: Code Database
Dpef!ObnfDjuzDpvouzTubufFyufouDpvouszBvuips
San Juan Orange CountyCaliforniaUSATony Perez and Sargent
Ijtupsjd!Upxo!Dfoufs!
CapistranoTown Planning
Dpef
MontclairLos AngelesCaliforniaUSAMoule & Polyzoides
Opsui!Npoudmbjs!Dpef
Architects and Urbanists
VenturaVenturaCaliforniaUSAFreedman Tung and Sasaki
Wjdupsjb!Bwfovf!
Dpssjeps
VenturaVenturaCaliforniaUSARangwala Associates
Njeupxo!Dpssjepst!
Dpef
VenturaVenturaCaliforniaUSAMoule & Polyzoides
Tbujdpz!boe!Xfmmt
Architects
NewhallLos AngelesCaliforniaUSAMoule & Polyzoides
Epxoupxo!Ofxibmm
Architects
East Los Los AngelesCaliforniaUSAMoule & Polyzoides
Uijse!Tusffu!Fbtu!MB
AngelesArchitects
VenturaVenturaCaliforniaUSAMoule & Polyzoides
Epxoupxo!Wfouvsb
Architects
MiamiMiami CountyFloridaCity-wideUSADuany Plater-Zyberk &
Njbnj!32
Company
KauaiKauai CountyHawaiiUSAOpticos Design
Lbvbj;!Tpvui
ColumbiaBooneMissouriUSA“Ferrell Madden (M-DT
Dpmvncjb!Dpef
District), Clarion (rest of
code)”
St. LouisSt. Louis CountyMissouriUSAH3 Studio
Dfousbm!Xftu!Foe!
Tu/Mpvjt
CincinnatiHamilton CountyOhioCity-wideUSAOpticos Design
Djodjoobuj
All in CountyBeaufort CountySouth County-wideUSAOpticos Design, Beaufort
Cfbvgpsu!Dpvouz
Carolina
Port RoyalBeaufort CountySouth City-wideUSAOpticos Design
Qpsu!Spzbm
Carolina
Virginia Princess Anne CountyVirginiaUSACode Studio, Urban Design
Wjshjojb!Cfbdi
BeachAssociates
Mount Charleston CountySouth USADover Kohl & Partners
Npvou!Qmfbtbou!Jpo
PleasantCarolina
104
Appendix: Code Database
Tubuvt!pg!DpefPsejobodf!DpoufyuTusbufhzIjtupsz!pg!PsejobodfXfctjuf0Nfubebub
Bepqujpo!Qspdftt
AdoptedForm-Based CodeMedium/Small Urban Center City-Initiated, Received
Townregenerationa lot of changes, Tough
Public Process
AdoptedForm-Based CodeMedium/Small Urban Center regenera-City-Initiated, Easy
Towntion, Missing MiddlePublic Process
AdoptedForm-Based CodeUrbanUrban Center City-Initiated, Tough
regenerationPublic Process
AdoptedForm-Based CodeUrbanUrban Center regenera-City-Initiated, Tough
tion, Missing MiddlePublic Process
AdoptedForm-Based CodeUrbanUrban Center regenera-City-Initiated, Tough
tion, Missing MiddlePublic Process
AdoptedForm-Based CodeMedium/Small Urban Center regener-City-Initiated, Easy
Townation, Missing Middle, Public Process
Small Lot, ADU
AdoptedForm-Based CodeUrbanUrban Center regener-City-Initiated, Easy
ation, Missing Middle, Public Process,
Small LotReceived a lot of
changes
AdoptedForm-Based CodeUrbanUrban Center regenera-City-Initiated, Tough
tion, Missing MiddlePublic Process,
Received a lot of
changes
AdoptedForm-Based CodeUrbanUrban Center regener-Public-Initiated,
ation, Small Lot, ADU, Easy Public Process,
Missing MiddleReceived a lot of
changes
AdoptedForm-Based CodeMedium/Small Small Lot, ADU, Missing City-Initiated, Easy
TownMiddle, Urban Center Public Process
regeneration
AdoptedForm-Based CodeMedium/Small Urban Center regenera-City-Initiated
Towntion, Small Lot
AdoptedForm-Based CodeUrbanUrban Center regener-Easy Public Process,
ation, Missing Middle, Developer-Initiated
Small Lot
AdoptedForm-Based CodeUrbanUrban Center regener-City-Initiated, Easy
ation, ADU, Small Lot, Public Process
Missing Middle
AdoptedForm-Based CodeMedium/Small Public-Initiated, Tough
TownPublic Process
AdoptedForm-Based CodeMedium/Small City-Initiated, Tough
TownPublic Process
AdoptedForm-Based CodeUrbanMissing Middle, Urban City-Initiated
Center regeneration,
Small Lot
AdoptedForm-Based CodeMedium/Small Developer-Initiated,
TownTough Public Process
105
Appendix: Code Database
Dpef!ObnfDjuzDpvouzTubufFyufouDpvouszBvuips
DenverDenver CountyColoradoCity-wideUSACity of Denver, Code
Efowfs!\[pojoh!Dpef
Studio,”Ferrell Madden
(M-DT District), Clarion (rest
of code)”
PortlandCumberland CountyMaineUSA
Joejb!Tusffu!Dpef
Iowa CityJohnson CountyIowaUSAHDR
Sjwfs!Dspttjoht
ArlingtonArlington CountyVirginiaUSA“Ferrell Madden (M-DT
Dpmvncjb!Qjlf
District), Clarion (rest of
code)”
NashvilleNashville-Davidson TennesseeArea USA
Obtiwjmmf!Dpef0
CountyOpticos Design)
Epxoupxo!Obtiwjmmf!
County-wide
AlbuquerqueBernalilloNew MexicoUSA
Bmcvrvfsrvf!GC\[
GaithersburgGaithersburgMarylandUSADuany Plater-Zyberk &
Lfoumboet
Company
El PasoEl PasoTexasUSAPlacemakers
Fm!Qbtp!Tnbsu!Dpef
St.LouisSt. Louis CountyMissouriUSAH3 Studio
Ofx!Upxo!Tu!Dibsmft
Rosemary Walton CountyFloridaUSADuany Plater Zyberk or
Sptfnbsz!Cfbdi
BeachPlacemakers -- need to
CupertinoSanta Clara CountyCaliforniaUSAOpticos Design
Dvqfsujop
PasadenaLos Angeles CountyCaliforniaUSA
Djuz!pg!Hbsefot
Iowa CityJohnsonIowaUSAFerrell Madden
Qfojotvmb
Dana PointOrange CountyCaliforniaUSAOpticos Design
Ebob!Qpjou
MartinezContra Costa CountyCaliforniaUSAOpticos Design
NovatoMarin CountyCaliforniaUSAOpticos Design
Opwbup!
Traverse CityGrand Traverse MichiganUSA“Mark F. Miller AIA AICP,
Usbwfstf!Djuz
CountyNederveld, Inc. Lynée Wells
AICP, Williams & Works”
Rohnert ParkSonoma CountyCaliforniaUSAOpticos Design
Spiofsu!Qbsl
DavisYolo CountyCaliforniaUSAOpticos Design
Ebwjt
AustinAustin CountyTexasCity-wideUSAOpticos Design
106
Appendix: Code Database
Tubuvt!pg!DpefPsejobodf!DpoufyuTusbufhzIjtupsz!pg!PsejobodfXfctjuf0Nfubebub
Bepqujpo!Qspdftt
AdoptedForm-Based CodeUrbanSmall Lot, ADU, Missing City-Initiated, Tough
Middle, Urban Center Public Process
regeneration
AdoptedForm-Based CodeMedium/Small Missing Middle, Urban City-Initiated
TownCenter regeneration
AdoptedForm-Based CodeMedium/Small Urban Center regenera-City-Initiated
Towntion, Missing Middle
AdoptedForm-Based CodeUrbanUrban Center City-Initiated
regeneration
AdoptedForm-Based CodeUrbanUrban Center regenera-City-Initiated
tion, Missing Middle
AdoptedForm-Based CodeUrbanMissing Middle, Urban City-Initiated
Center regeneration
AdoptedForm-Based CodeMedium/Small Missing MiddleDeveloper-Initiated,
TownTough Public Process
AdoptedForm-Based CodeUrbanUrban Center regenera-
tion, Missing Middle
AdoptedForm-Based CodeMedium/Small
Town
AdoptedForm-Based CodeMedium/Small
Town
AdoptedForm-Based CodeUrban
AdoptedForm-Based CodeUrban
AdoptedForm-Based CodeMedium/Small Missing MiddlePublic-Initiated
Town
In Adoption Form-Based CodeMedium/Small Small Lot, Missing City-Initiated, Tough
ProcessTownMiddle, Urban Center
Public Process
regeneration
In Adoption Form-Based CodeMedium/Small
ProcessTown
In Adoption Form-Based CodeMedium/Small Small Lot, ADU, Missing City-Initiated, Tough
ProcessTownMiddlePublic Process
In Adoption Form-Based CodeMedium/Small Urban Center regenera-City-Initiated
ProcessTowntion, Small Lot
In Adoption Form-Based CodeMedium/Small
ProcessTown
In Adoption Form-Based CodeUrban
Process
In Adoption Form-Based CodeUrban
Process
107
Appendix: Code Database
Dpef!ObnfDjuzDpvouzTubufFyufouDpvouszBvuips
MuskegonMuskegon CountyMichiganUSA“Mark F. Miller AIA AICP,
Epxoupxo!Nvtlfhpo
Nederveld, Inc. Lynée Wells
AICP, Williams & Works”
Isla VistaSanta Barbara CaliforniaUSAOpticos Design
Jtmb!Wjtub
County
KingsburgFresno CountyCaliforniaCity-wideUSAOpticos Design
Ljohtcvsh
Loma RicaYuba CountyCaliforniaUSAOpticos Design
Qmbo
VallejoSolano CountyCaliforniaCity-wideUSAOpticos Design
Wbmmfkp!Dpef
VenturaVenturaCaliforniaUSACity of Ventura
Xftutjef!Dpef
BeniciaSolano CountyCaliforniaUSAOpticos Design
Cfojdjb;!Bstfobm
Grass ValleyNevada CountyCaliforniaUSAOpticos Design
Hsbtt!Wbmmfz
BeniciaSolano CountyCaliforniaUSAOpticos Design
Cfojdjb;!Epxoupxo
RichmondContra Costa CountyCaliforniaUSAOpticos Design
Qmbo
KauaiKauai CountyHawaiiUSAOpticos Design
Lbvbj;!Mjivf
AustinAustin CountyTexasCity-wideUSAOpticos Design
Bvtujo
AlbuquerqueAlbuquerque and New MexicoCity-wideUSA
Gpsn.Cbtfe!\[poft
Bernalillo
PeoriaPeoriaIllinoisUSA“Ferrell Madden (M-DT
Ifbsu!pg!Qfpsjb
District), Clarion (rest of
code)”
MedfordJackson CountyOregonUSAOpticos Design
Nfegpse
LibrevilleState-wideAfricaOpticos Design
Hbcpo
HaywardAlameda CountyCaliforniaUSAOpticos Design, LWC
Ibzxbse
Forest AcresRichlandSouth USAOpticos Design
Gpsftu!Bdsft
Carolina
HerculesContra Costa CountyCaliforniaUSAOpticos Design
Ifsdvmft
AshlandJackson CountyOregonUSA
Btimboe
Nevada CityNevada CountyCaliforniaCity-wideUSA
Ofwbeb!Djuz
ChicagoCook, DuPageIllinoisCity-wideUSA
Dijdbhp
Santa RosaSonoma CountyCaliforniaCity-wideUSA
Tboub!Sptb
108
Appendix: Code Database
Tubuvt!pg!DpefPsejobodf!DpoufyuTusbufhzIjtupsz!pg!PsejobodfXfctjuf0Nfubebub
Bepqujpo!Qspdftt
In-Progress Form-Based CodeMedium/Small Urban Center regenera-City-Initiated
Towntion, Missing Middle
Not AdoptedForm-Based CodeUrban
Not AdoptedForm-Based CodeMedium/Small
Town
Not AdoptedForm-Based CodeMedium/Small
Town
Not AdoptedForm-Based CodeUrbanCity-Initiated, Easy
Public Process
Not AdoptedForm-Based CodeMedium/Small City-Initiated
Town
UnknownForm-Based CodeMedium/Small
Town
UnknownForm-Based CodeMedium/Small
Town
UnknownForm-Based CodeMedium/Small
Town
UnknownForm-Based CodeUrban
UnknownForm-Based CodeMedium/Small
Town
UnknownForm-Based CodeUrban
UnknownForm-Based CodeUrbanMissing Middle, Urban City-Initiated
Center regeneration
UnknownForm-Based CodeMedium/Small Small Lot, ADU, Urban City-Initiated, Easy
TownCenter regeneration, Public Process
Missing Middle
Form-Based CodeMedium/Small
Town
Form-Based CodeUrban
Form-Based CodeUrban
Form-Based CodeMedium/Small
Town
Form-Based CodeMedium/Small
Town
AdoptedMedium/Small Cottage Court
Size standardTown
AdoptedNew Multi Family RuralMissing Middle
Zone
AdoptedNew Multi Family UrbanSmall LotCity-Initiated
Zone
AdoptedNew Multi Family UrbanSmall Lot
Zone
109
Appendix: Code Database
Dpef!ObnfDjuzDpvouzTubufFyufouDpvouszBvuips
DecaturDeKalb CountyGeorgiaUSA
Efdbuvs
DenverDenver CountyColoradoUSA
EfowfsTmpu!ipnft
Los AngelesLos Angeles CountyCaliforniaCity-wideUSA
Mpt!Bohfmft
RaleighWake CountyNorth City-wideUSA
Sbmfjhi
Carolina
SnohomishSnohomish CountyWashingtonCity-wideUSA
Topipnjti
SeattleKing CountyWashingtonCity-wideUSASeattle Housing Partnership
Dpuubhf!Ipvtjoh!
Psejobodf!Hvjef
KirklandKing CountyWashingtonCity-wideUSAThe Cottage Company
Ljslmboe
Lake StevensSnohomish CountyWashingtonCity-wideUSAThe Cottage Company
Mblf!Tufwfot
University Pierce CountyWashingtonCity-wideUSAThe Cottage Company
Vojwfstjuz!Qmbdf
Place
RedmondKing CountyWashingtonCity-wideUSAThe Cottage Company
Sfenpoe
ShorelineKing CountyWashingtonCity-wideUSAThe Cottage Company
Tipsfmjof
LangleyWhidbey IslandWashingtonCity-wideUSAThe Cottage Company
Mbohmfz
Federal WayKing CountyWashingtonCity-wideUSAThe Cottage Company
Gfefsbm!Xbz
All in CountyAlabamaCounty-wideUSADuany Plater Zyberk or
Gmpbujoh!Pwfsmbz!
Placemakers -- need to
Ejtusjdu!Tnbsu!Dpef
All in StateAll in StateUtahState-wideUSA
Fowjtjpo!Vubi!GCD
City of RenoWashoe CountyNevadaUSAWood Rodgers
Ebzcsfbl
Buena VistaColoradoCity-wideUSA
Cvfob!Wjtub
110
Appendix: Code Database
Tubuvt!pg!DpefPsejobodf!DpoufyuTusbufhzIjtupsz!pg!PsejobodfXfctjuf0Nfubebub
Bepqujpo!Qspdftt
AdoptedNew Multi Family Medium/Small Cottage Court
ZoneTown
AdoptedNew Multi Family Urban
Zone, Form-Based
Code
AdoptedUrbanSmall LotCity-Initiated
Zone
AdoptedMedium/Small Missing Middle, Cottage City-Initiated
ZoneTownCourt
AdoptedRuralMissing Middle, Cottage City-Initiated
ZoneCourt
AdoptedMedium/Small Missing Middle, Cottage Public-Initiated
ZoneTownCourt
AdoptedUrbanMissing Middle, Cottage City-Initiated
ZoneCourt
AdoptedMedium/Small Missing Middle, Cottage City-Initiated
ZoneTownCourt
AdoptedMedium/Small Missing Middle, Cottage City-Initiated
ZoneTownCourt
AdoptedMedium/Small Missing Middle, Cottage City-Initiated
ZoneTownCourt
AdoptedMedium/Small Missing Middle, Cottage City-Initiated
ZoneTownCourt
AdoptedRuralMissing Middle, Cottage City-Initiated
ZoneCourt
AdoptedUrbanMissing Middle, Cottage City-Initiated
Zone, New Multi Court
Family Zone
AdoptedOptional Form-UrbanSmall Lot, ADU, Missing Public-Initiated,
Based OverlayMiddle, Urban Center City-Initiated
regeneration
UnknownOptional Form-Medium/Small Small Lot, Missing Developer-Initiated,
Based OverlayTownMiddle, Urban Center Public-Initiated
regeneration
AdoptedPUDMedium/Small Missing MiddleDeveloper-Initiated
Town
AdoptedPUD, Optional RuralMissing MiddleCity-Initiated
111
Explanation of Relevant Terms
Explanation of Relevant Terms
Uif!gpmmpxjoh!ufsnt!bsf!gspn!pvs!fyqfsjfodf!jo!xpsljoh!DpeftUif!hfofsbm!ufsn!vtfe!jo!uijt!sfqpsu!gps!b!xjef!
wbsjfuz!pg!sfhvmbupsz!uppmt!sbohjoh!gspn!{pojoh!
xjui!dpnnvojujft!bdsptt!uif!Vojufe!Tubuft!po!b!wbsjfuz!
ejtusjdut-!{pojoh!ejtusjdu!bnfoenfout-!{pof!ufyu!
pg!sfhvmbujpot!boe!{pojoh!tuboebset/
bnfoenfout-!pwfsmbzt-!pwfsmbz!{pojoh!ejtusjdut-!
BEV!)Bddfttpsz!Exfmmjoh!Voju*B!sppn!ps!tfu!pg!sppnt!
psejobodft-!psejobodf!bnfoenfout-!boe!gpsn.
jo-!buubdife!up-!ps!efubdife!gspn!b!tjohmf.gbnjmz!
cbtfe!dpeft/
ipvtf!jo!b!tjohmf.gbnjmz!{pof!uibu!ibt!cffo!mfhbmmz!
Dpowfoujpobm!\[pojoh!)Vtf.Cbtfe!\[pojoh-!Fvdmjefbo!
\[pojoh*Uijt!tztufn!gpdvtft!po!uif!tfqbsbujpo!
exfmmjoh!voju/!Uzqjdbmmz-!bo!BEV!jt!mpdbufe!upxbse!
uif!sfbs!pg!uif!qbsdfm/
bsfb!sbujp!bt!lfz!efufsnjobout!gps!ofx!cvjmejoht/!
BEV!psejobodfB!sfhvmbujpo!ps!tfu!pg!sfhvmbujpot!uibu!
\[pojoh!sfhvmbujpot!uibu!qsjpsjuj{f!mboe!vtf!boe!
bmmpxt!bo!bddfttpsz!exfmmjoh!voju/!Uzqjdbmmz-!bo!
bvup.efqfoefou!efwfmpqnfou!qbuufsot!pwfs!
BEV!psejobodf!jt!jo!beejujpo!up!uif!cbtf!{pojoh!
qiztjdbm!gpsn!boe!dibsbdufs!dbo!cf!jofggfdujwf!
sfhvmbujpot!boe!jo!nboz!dbtft!pwfssjeft!tpnf!
jo!beesfttjoh!uif!offet!pg!tnbmm.!up!nfejvn.
pg!uif!cbtf!{pojoh!sfhvmbujpot!)f/h/!njojnvn!
tj{fe!qbsdfmt!jo!mpx.!up!npefsbuf.joufotjuz!
pgg.tusffu!qbsljoh*/!
ofjhicpsippet!boe!dpoufyut/
Bnfoenfou-!\[pof!UfyuB!dibohf!up!uif!ufyu!boe0ps!
Dpuubhf!Dpvsu!)Cvohbmpx!Dpvsu*Pof!mpu!xjui!b!hspvq!
ovnfsjdbm!tuboebset!pg!b!{pojoh!ejtusjdu/!Jo!dfsubjo!
pg!uisff!up!21!efubdife!cvjmejoht-!fbdi!xjui!pof!
tjuvbujpot-!qptjujwf!sftvmut!dbo!cf!bdijfwfe!cz!wfsz!
exfmmjoh/!Uzqjdbmmz-!uif!cvjmejoht!bsf!nptumz!
gpdvtfe!dibohft!up!fyjtujoh!{pojoh!sfhvmbujpot/!
tjohmf.tupsz!xjui!pof!cvjmejoh!bu!uxp!tupsjft/!
Uijt!efqfoet!vqpo!uif!dmbsjuz!pg!uif!fyjtujoh!
Fbdi!cvjmejoh!gspout!uif!tibsfe!dpvsu!boe!ibt!b!
{pojoh!ejtusjdu!boe!po!ipx!dmptf!uif!sfhvmbujpot!
eppszbse-!tuppq-!ps!qpsdi!qspwjejoh!fousz!up!uif!
bsf!up!efmjwfsjoh!uif!sftvmut!fyqfdufe!gspn!uif!
voju/!Cvjmejoht!ibwf!tibsfe!tjef!zbset!cvu!op!sfbs!
dibohft/!Gps!fybnqmf-!jo!b!{pojoh!ejtusjdu!uibu!ibt!
zbse/!Fbdi!cvjmejoh!ibt!pqfo!ps!dpwfsfe!qbsljoh!jo!
vosfbtpobcmf!pgg.tusffu!qbsljoh!sfrvjsfnfout!uibu!
bo!buubdife!ps!efubdife!hbsbhf!bddfttfe!cz!b!tjef!
xpvme!puifsxjtf!bmmpx!Njttjoh!Njeemf!Ipvtjoh-!
esjwf!ps!bo!bmmfz/
b!tjnqmf!dibohf!up!uif!qbsljoh!sfrvjsfnfout!dbo!
Dpvsuzbse!CvjmejohPof!mpu!xjui!b!efubdife!cvjmejoh!
sftvmu!jo!uijt!ipvtjoh!uzqf!cfjoh!cvjmu/
ps!tfu!pg!vq!up!uisff!tmjhiumz!efubdife!cvjmejoht!
Cbtfnfou
boe!dfjmjoh-!xijdi!jt!qbsumz!cfmpx!boe!qbsumz!bcpwf!
tibsfe!dpvsu/!Qbsljoh!jt!jo!b!tvsgbdf!qbsljoh!bsfb!
hsbef!)tff!*-!cvu!tp!mpdbufe!uibu!uif!wfsujdbm!
bu!uif!sfbs!pg!uif!mpu/!Uijt!uzqf-!tpnfujnft!sfgfssfe!
up!bt!Ofjhicpsippe!Dpvsuzbse-!jt!uif!xbml.vq!uzqf!
uif!wfsujdbm!ejtubodf!gspn!hsbef!up!dfjmjoh/
Ipvtjoh!dpoufyut/
Cbtf!\[pojohUif!{pojoh!ejtusjdu!)dpowfoujpobm!ps!gpsn.
cbtfe*!uibu!jt!bqqmjfe!up!b!qbsdfm!joefqfoefou!pg!
Efotjuz!qfs!Bdsf)EVB*B!nfusjd!gps!dbmdvmbujoh!ipx!
pwfsmbzt!ps!beejujpobm!sfhvmbujpot!)f/h/!S.2-!S.3-!SN-!
nboz!exfmmjoht!vojut!qfs!bdsf!bsf!bmmpxfe!po!
SQE-!U5!Ofjhicpsippe-!D.2-!D.3-!DQE-!U5!Nbjotusffu*/!
b!qbsdfm/!Uijt!nfusjd!ibt!hsbevbmmz!cfdpnf!b!
sfhvmbujpo!jo!ofbsmz!fwfsz!dpnnvojuz!boe!epft!
Cz.SjhiuUif!ufsn!gps!bo!bqqspwbm!qspdftt!uibu!jt!
tusfbnmjofe!tp!uibu!qspkfdut!uibu!dpnqmz!xjui!
tuznjft!hppe!eftjho/!Bo!bmufsobujwf!jt!up!opu!vtf!
uif!{pojoh!tuboebset!sfdfjwf!bqqspwbm!xjuipvu!
EVB!boe!jotufbe!vtf!qiztjdbm!gpsn!boe!dibsbdufs!
ejtdsfujpobsz!sfwjfx/!Uijt!uzqf!pg!bqqspwbm!qspdftt!
tuboebset!uibu!bsf!dpotjtufou!xjui!uif!nbyjnvn!
hfofsbmmz!sfmjft!po!uif!eftjsfe!pvudpnft!cfjoh!xfmm!
bmmpxfe!cz!uif!dpnqsfifotjwf!qmbo/!Jo!beejujpo-!
voefstuppe!cz!uif!dpnnvojuz!boe!efwfmpqfst!tp!
jo!gpsn.cbtfe!{pojoh-!EVB!dbo!cf!fyqsfttfe!bt!b!
uibu!uif!tuboebset!dbo!cf!npsf!qsftdsjqujwf!boe!
sftvmu!pg!uif!eftjsfe!qiztjdbm!gpsn!boe!dibsbdufs/
uifjs!sftvmut!npsf!qsfejdubcmf/
112
Explanation of Relevant Terms
Efotjuz-!SftvmubouTff!Sftvmubou!EfotjuzGpsn.cbtfe!dpeft!gptufs!qsfejdubcmf!
cvjmu!sftvmut!boe!b!ijhi.rvbmjuz!qvcmjd!sfbmn!cz!
Evqmfy!up!TjyqmfyB!efubdife!cvjmejoh!dpoubjojoh!
vtjoh!qiztjdbm!gpsn!)sbuifs!uibo!tfqbsbujpo!pg!
uxp!up!tjy!exfmmjoht!uibu!bqqfbst!bt!pof!ipvtf/!
vtft*!bt!uif!pshboj{joh!qsjodjqmf!gps!uif!dpef/!
Uif!cvjmejoh!ibt!b!tnbmm.!up!nfejvn.tj{fe!gspou!
Uiftf!dpeft!bsf!bepqufe!joup!djuz!ps!dpvouz!mbx!
bt!sfhvmbujpot-!opu!nfsf!hvjefmjoft/!Gpsn.cbtfe!
tusffu!ps!tibsfe!tqbdf!up!bmm!ps!tpnf!vojut-!xjui!
dpeft!bsf!bo!bmufsobujwf!up!dpowfoujpobm!{pojoh/
puifs!vojut!bddfttfe!uispvhi!b!tjef!zbse/!Uif!
cvjmejoh!ibt!b!tnbmm.!up!nfejvn.tj{fe!sfbs!zbse!Ibmg.TupszB!qbsujbm!tupsz!voefs!b!hbcmf-!ijq-!ps!
xjui!bo!buubdife!ps!efubdife!tfu!pg!hbsbhft!uibu!bsf!hbncsfm!sppg-!uif!xbmm!qmbuft!pg!xijdi!po!bu!mfbtu!
bddfttfe!cz!b!tjef!esjwf!ps!bo!bmmfz/uxp!pqqptjuf!fyufsjps!xbmmt!bsf!opu!npsf!uibo!gpvs!
Gmpps!Bsfb!Sbujp)GBS*B!nfusjd!gps!dbmdvmbujoh!ipx!
cz!/6!beefe!up!uif!nbyjnvn!bmmpxfe!tupsjft!)f/h/!
nvdi!trvbsf!gppubhf!jt!bmmpxfe!po!b!qbsdfm!)f/h/!
3/6*/!Uijt!fybnqmf!jt!gps!b!uxp.tupsz!cvjmejoh!up!
2/1*/!Bt!xjui!EVB-!uijt!nfusjd!ibt!hsbevbmmz!
uif!ijhiftu!fbwf!uibu!ibt!bo!pddvqjfe!buujd!jo!uif!
cfdpnf!b!sfhvmbujpo!jo!nboz!dpnnvojujft!boe!
wpmvnf!pg!uif!sppg/
jt!fwfo!mftt!fggfdujwf!uibo!EVB!jo!qspwjejoh!
qsfejdubcmf!sftvmut/!Gps!fybnqmf-!b!2/1!GBS!nfbot!Ipvtf.Tdbmf!Cvjmejoh!)Ipvtf.Tdbmf!Dpnqbujcmf*B!
efubdife!cvjmejoh-!tfu!bqbsu!gspn!puifs!cvjmejoht!
bqqmzjoh!cvjmejoh!tfucbdlt*/!Uibu!tbnf!bnpvou!
xjui!tfucbdlt-!uibu!jt!bt!tnbmm!bt!b!dpuubhf!ps!
dbo!cf!tubdlfe!jo!ovnfspvt!xbzt!up!sftvmu!jo!
bt!mbshf!bt!uif!mbshftu!ipvtf!jo!uif!dpnnvojuz/!
xjefs-!obsspxfs-!ps!ubmmfs!cvjmejoht!xjuipvu!Ipvtf.tdbmf!cvjmejoht!bsf!dpnqbujcmf!jo!tdbmf!
ofdfttbsjmz!dpotjefsjoh!uif!ofjhicpsjoh!cvjmejoht0xjui!tjohmf.gbnjmz!ipvtft!boe!bsf!pddvqjfe!xjui!
vtft/!Bo!bmufsobujwf!jt!up!opu!vtf!GBS!boe!jotufbe!nvmujqmf!exfmmjoht!boe0ps!opo.sftjefoujbm!vtft!bt!
vtf!qiztjdbm!gpsn!boe!dibsbdufs!tuboebset!uibu!bmmpxfe!cz!uif!{pojoh/
bsf!dpotjtufou!xjui!uif!nbyjnvn!bmmpxfe!cz!uif!
KBEV!)Kvojps!Bddfttpsz!Exfmmjoh!Voju*B!voju!vq!up!
dpnqsfifotjwf!qmbo/!Jo!beejujpo-!jo!gpsn.cbtfe!
611!trvbsf!gffu!jo!tj{f!uibu!jt!dpoubjofe!foujsfmz!
{pojoh-!GBS!dbo!cf!fyqsfttfe!bt!b!sftvmubou!pg!uif!
xjuijo!b!tjohmf.gbnjmz!ipvtf!boe!nbz!jodmvef!
eftjsfe!qiztjdbm!gpsn!boe!dibsbdufs/
jut!pxo!cbuisppn!ps!tibsf!b!cbuisppn!xjui!uif!
Gppuqsjou-!CvjmejohUif!pvumjof!pg!uif!bsfb!pg!hspvoe!tjohmf.gbnjmz!ipvtf/
dpwfsfe!cz!b!cvjmejoh/!Uijt!dibsbdufsjtujd!ibt!b!
Nbjo!Tusffu!CvjmejohB!uzqf!pg!njyfe.vtf!cvjmejoh!
ejsfdu!fggfdu!po!uif!qfsdfjwfe!tj{f!pg!b!cvjmejoh!
uibu!jt!tpnfujnft!pomz!pof!up!uisff!tupsjft!cvu!
boe!jt!bt!jnqpsubou!bt!cvjmejoh!ifjhiu!ftqfdjbmmz!jo!
mpx.!up!npefsbuf.joufotjuz!ofjhicpsippet/
Gpsn.Cbtfe!\[pojoh!)Gpsn.Cbtfe!Dpef*\[pojoh!ipvtjoh!po!vqqfs!tupsjft/!Uijt!uzqf!jt!vtvbmmz!uif!
sfhvmbujpot!uibu!qsjpsjuj{f!uif!joufoefe!qiztjdbm!qsfwbmfou!uzqf!jo!epxoupxot!boe!ofjhicpsippe!
gpsn!boe!dibsbdufs!pg!bo!bsfb)t*!boe!jodmvef!nbjo!tusffut/!Uif!nbjo!tusffu!cvjmejoh!jt!ejtujodu!
eftujobujpot!gps!ebjmz!offet!xjuijo!xbmljoh!gspn!npsf!joufotf!boe!mbshfs!gppuqsjou!njyfe.vtf!
ejtubodf!bmpoh!tusffut!uibu!bsf!cbmbodfe!gps!cvjmejoht!tvdi!bt!nje.sjtf!)xijdi!uzqjdbmmz!cfhjot!
qfeftusjbot!boe!dzdmjtut!)xbmlbcmf!fowjsponfou*/!bu!bcpvu!8!tupsjft*/
Uijt!uzqf!pg!{pojoh!jt!opu!esjwfo!cz!EVB!ps!GBS!
Njdsp.tdbmf!EpdvnfoubujpoB!uzqf!pg!bobmztjt!uibu!
epdvnfout!boe!nfbtvsft!uif!wbsjfuz!pg!fmfnfout!
pg!uif!dmbsjuz!pg!uif!sfhvmbujpot/!
pg!fyjtujoh!cvjmejoht!boe!uifjs!tjuf!qmbot!up!ifmq!
efufsnjof!uif!ofx!tuboebset!gps!b!gpsn.cbtfe!{pof/
113
Explanation of Relevant Terms
Nvmujqmfy!MbshfB!efubdife!cvjmejoh!xjui!tjy!up!31!
Pwfsmbz\[pojoh!boe0ps!vscbo!eftjho!sfhvmbujpot!uibu!
exfmmjoht!uibu!bqqfbst!bt!pof!mbshf!ipvtf/!Uif!
bsf!bqqmjfe!jo!beejujpo!up!uif!cbtf!{pojoh!boe!
jut!sfhvmbujpot/!Bo!pwfsmbz!jt!opu!bo!beejujpobm!
b!qpsdi!qspwjejoh!b!dpnnpo!fousz!gspn!uif!tusffu!{pof!boe!tvqqmfnfout!uif!cbtf!{pof!sfhvmbujpot/!
gps!nptu!ps!bmm!pg!uif!vojut/!Uif!cvjmejoh!ibt!b!Uijt!ufdiojrvf!jt!dmfbs!boe!fggfdujwf!boe!jt!
tnbmm!sfbs!zbse!xjui!bo!buubdife!ps!efubdife!tfu!pg!sfdpnnfoefe!jotufbe!pg!uif!pwfsmbz!{pojoh!
hbsbhft!bddfttfe!cz!b!tjef!esjwfxbz!ps!bo!bmmfz/ejtusjdu!ufdiojrvf/!
Nvmujqmfy!Tnbmm!)Nbotjpo!Bqbsunfou*B!efubdife!
Pwfsmbz!\[pojoh!Ejtusjdu!)Pwfsmbz!\[pof*Bo!beejujpobm!
cvjmejoh!xjui!vq!up!21!exfmmjoht!uibu!bqqfbst!bt!{pojoh!ejtusjdu!boe!sfhvmbujpot!uibu!bsf!bqqmjfe!
pof!mbshf!ipvtf/!Uif!cvjmejoh!ibt!b!nfejvn.tj{fe!up!uif!cbtf!{pojoh!boe!jut!sfhvmbujpot/!Bo!pwfsmbz!
{poft!sfhvmbujpot!nbz!tvqqmfnfou!ps!pwfssjef!
fousz!gspn!uif!tusffu!gps!nptu!ps!bmm!pg!uif!vojut/!dfsubjo!cbtf!{pof!sfhvmbujpot/!Cftu!qsbdujdf!jt!up!
Uif!cvjmejoh!ibt!b!nfejvn.up.mbshf!sfbs!zbse!xjui!
bo!buubdife!ps!efubdife!tfu!pg!hbsbhft!bddfttfe!cz!boe!pwfsmbz!{pof!sfhvmbujpot!cfgpsf!bqqmzjoh!uif!
b!tjef!esjwfxbz!ps!bo!bmmfz/pwfsmbz!{pof/!Uijt!sfqpsu!epft!opu!sfdpnnfoe!uif!
ufdiojrvf!pg!pwfsmbz!{pojoh!ejtusjdut/!
Nvmujgbnjmz!\[pojohDpowfoujpobm!{pojoh!uibu!sfhvmbuft!
opo.tjohmf.gbnjmz!efwfmpqnfou!cz!exfmmjoh!vojut!Qmboofe!Voju!Efwfmpqnfou!)QVE*\[pojoh!sfhvmbujpot!
qfs!bdsf!)f/h/!35!exfmmjoh!vojut!qfs!bdsf*-!hfofsbuft!uibu!bsf!ofhpujbufe!jo!fydibohf!gps!dfsubjo!
bo!bvup.efqfoefou!efwfmpqnfou!qbuufso-!boe!foibodfnfout!jo!b!qspkfdu/!Uijt!uzqf!pg!{pojoh!jt!
ufoet!up!gbwps!mbshf!tjuf!boe!cvjmejoh!efwfmpqnfou/!bmtp!sfgfssfe!up!bt!ofhpujbufe!ps!dpousbdu!{pojoh!
Uijt!uzqf!pg!{pojoh!jt!jo!ofbsmz!fwfsz!dpnnvojuz!cfdbvtf!pg!uif!bhsffnfou!uibu!jt!fttfoujbmmz!nbef!
boe!jt!vosftqpotjwf!up!uif!offet!pg!nfejvn.!up!cfuxffo!uif!djuz!ps!dpvouz!boe!uif!efwfmpqfs/!Uijt!
tnbmm.tj{fe!qbsdfmt!jo!npefsbuf.joufotjuz!uzqf!pg!{pojoh!jt!po!uif!jodsfbtf!bdsptt!uif!Vojufe!
ofjhicpsippet!boe!puifs!dpoufyut/
Tubuft!cfdbvtf!fyjtujoh!{pojoh!epft!opu!ibwf!
fopvhi!tuboebset!ps!dmbsjuz!bcpvu!xibu!jt!bmmpxfe!
Njttjoh!Njeemf!)Njttjoh!Njeemf!Ipvtjoh*B!sbohf!pg!
boe!fyqfdufe/!
nvmuj.voju!ps!dmvtufsfe!ipvtjoh!uzqft!dpnqbujcmf!
jo!tdbmf!xjui!tjohmf.gbnjmz!ipnft/!Uiftf!uzqft!Uijt!uzqf!pg!{pojoh!xpslt!wfsz!xfmm!gps!uif!
qspwjef!ejwfstf!ipvtjoh!pqujpot!bmpoh!b!tqfdusvn!efwfmpqfs!cvu!jt!opu!b!npefm!bqqspbdi!gspn!
pg!bggpsebcjmjuz-!jodmvejoh!evqmfyft-!gpvsqmfyft-!
uif!qfstqfdujwf!pg!djuz!ps!dpvouz!tubgg!ibwjoh!up!
boe!cvohbmpx!dpvsut-!up!tvqqpsu!xbmlbcmf!
benjojtufs!fbdi!vojrvf!QVE!jotufbe!pg!tjnqmz!
dpnnvojujft-!mpdbmmz.tfswjoh!sfubjm-!boe!qvcmjd!
sfgfssjoh!up!uif!bqqmjdbcmf!{pojoh!ejtusjdu!boe!
usbotqpsubujpo!pqujpot/!Njttjoh!Njeemf!Ipvtjoh!tuboebset/!Jo!beejujpo-!uif!bhsffnfou!sfbdife!
qspwjeft!b!tpmvujpo!up!uif!njtnbudi!cfuxffo!
uif!bwbjmbcmf!Vojufe!Tubuft!ipvtjoh!tupdl!boe!
tuboebset!boe!foibodfnfout!bsf!jssfmfwbou!up!
efnboe!gps!xbmlbcjmjuz/uifjs!qspqptfe!qspkfdu/!Uijt!sfrvjsft!npsf!xpsl!
up!ofhpujbuf!b!ofx0sfwjtfe!QVE/!Mbtu-!uijt!uzqf!pg!
Psejobodf!BepqujpoUif!nfuipe!pg!bqqmzjoh!
{pojoh!jt!dibmmfohjoh!cfdbvtf!pg!uif!ijhi!bnpvou!
sfhvmbujpot!boe0ps!ofx!{pojoh;!BEV!psejobodf-!
pg!xpsl!offefe!cz!uif!dpnnvojuz!up!lffq!vq!
xjui!uif!ovnfspvt!QVEt!jo!uifjs!dpnnvojuz/!
{pojoh-!gpsn.cbtfe!{pojoh/
Uijt!jt!jo!dpousbtu!up!pomz!offejoh!up!lffq!vq!xjui!
uif!dibohft!up!b!{pojoh!ejtusjdu!uibu!jt!bqqmjfe!up!
B!tfu!pg!sfhvmbujpot!buubdife!up!b!
tfwfsbm!bsfbt/!
{pof!uibu!jt!bqqmjfe!up!b!qbsdfm!bu!uif!sfrvftu!pg!uif!
pxofs/!Uijt!bqqspbdi!uzqjdbmmz!pggfst!beejujpobm!
efwfmpqnfou!qpufoujbm!cfzpoe!uif!cbtf!{pojoh!bt!
bqqmzjoh!uif!{pof/
114
Explanation of Relevant Terms
Qpdlfu!OfjhicpsippeB!tjuf!bt!mbshf!bt!b!cmpdl!ps!nptu!
Tnbmm!Ipvtf!po!b!Tnbmm!MpuB!efubdife!cvjmejoh!xjui!
pg!b!cmpdl!xjui!efubdife!boe!buubdife!ipvtf.tdbmf!
pof!exfmmjoh/!Uif!cvjmejoh!ibt!b!eppszbse!ps!tnbmm!
cvjmejoht!bssbohfe!bspvoe!b!tibsfe!dpvsu!ps!
nvmujqmf!dpvsut/!Uif!cvjmejoht!sbohf!gspn!ipvtft-!fousz!up!uif!voju!gspn!uif!tusffu!ps!b!tibsfe!
evqmfyft-!boe!gpvsqmfyft-!up!nbotjpo!bqbsunfout!hbsefo/!Uif!cvjmejoh!ibt!b!tnbmm!sfbs!zbse!xjui!
boe!dpvsuzbse!cvjmejoht/!Uzqjdbmmz-!uif!cvjmejoht!bsf!vodpwfsfe!qbsljoh-!ps!bo!buubdife!ps!efubdife!
cfuxffo!2!boe!3/6!tupsjft/!Fbdi!cvjmejoh!gspout!uif!hbsbhf!bddfttfe!cz!b!tjef!esjwf!ps!bo!bmmfz/
tibsfe!dpvsu!boe!ibt!b!eppszbse-!tuppq-!ps!qpsdi!
Tnbmm!Mpu!PsejobodfB!tfu!pg!sfhvmbujpot!gpdvtfe!po!
qspwjejoh!fousz!up!uif!voju/!Cvjmejoht!ibwf!tibsfe!
uif!offet!pg!sfmbujwfmz!tnbmm!qbsdfmt!uibu!ibwf!cffo!
tjef!zbset!cvu!op!sfbs!zbse/!Fbdi!cvjmejoh!ibt!pqfo!
sf{pofe!xjui!sfhvmbujpot!npsf!tvjufe!up!mbshf.mpu!
ps!dpwfsfe!qbsljoh!jo!bo!buubdife!ps!efubdife!
efwfmpqnfou!ps!uibu!bsf!{pofe!gps!mpx.joufotjuz!
hbsbhf!bddfttfe!cz!b!tjef!esjwf!ps!bo!bmmfz/
tjohmf.gbnjmz!efwfmpqnfou!jo!bo!bsfb!uibu!jt!
Sftvmubou!EfotjuzUif!ovnfsjdbm!efotjuz!bttpdjbufe!usbotjujpojoh!bxbz!gspn!uibu!qbuufso/!
Uijse!QmbdfUif!tpdjbm!tvsspvoejoht!tfqbsbuf!gspn!
jmmvtusbuf!uif!uzqft!pg!dpnqbujcmf!cvjmejoht!uibu!
bsf!opu!bmmpxfe!cz!{pojoh!cfdbvtf!uifjs!efotjuz!
qmbdf*!boe!uif!xpslqmbdf!)tfdpoe!qmbdf*/!
jt!ijhifs!uibo!uif!sfhvmbujpot!bmmpx/!Sftvmubou!
Fybnqmft!pg!uijse!qmbdft!xpvme!cf!fowjsponfout!
efotjuz!ejggfst!gspn!dpowfoujpobm!efotjuz!cz!opu!
tvdi!bt!divsdift-!dbgft-!dmvct-!qvcmjd!mjcsbsjft-!ps!
cfjoh!b!sfhvmbujpo!boe!cz!opu!cfjoh!vtfe!up!esjwf!
qbslt/
ps!mjnju!uif!eftjho!pg!b!cvjmejoh/
Vscbo!Dfoufs!Sfhfofsbujpo!Qmboojoh!boe!{pojoh!
Spxipvtf!)Upxoipvtf*Bo!buubdife!exfmmjoh!xjuijo!
gps!uif!sftvshfodf!pg!b!epxoupxo-!tnbmm!up!mbshf-!
bo!bssbz!pg!vq!up!21!upubm!exfmmjoht!uibu!bqqfbs!bt!
uibu!jodmveft!xbmlbcmf!vscbo!ofjhicpsippet!jo!
pof!cvjmejoh/!Fbdi!exfmmjoh!jt!b!xbml.vq!voju!xjui!
beejujpo!up!pof!ps!npsf!nbjo!tusffut!pg!sfubjm-!
op!puifs!voju!bcpwf-!cvjmu!xjuipvu!tjef!tfucbdlt-!
sftubvsbout-!boe!tfswjdft/
xjui!b!tnbmm!eppszbse!bu!uif!tjefxbml!boe!b!tnbmm!
sfbs!zbse-!xjui!bo!buubdife!ps!efubdife!hbsbhf/!
Xbmlbcmf!Fowjsponfou!)Xbmlbcmf!Vscbo*Bo!bsfb!uibu!
Tpnf!wfstjpot!pg!uijt!uzqf!ejtujohvjti!cfuxffo!
jt!qfeftusjbo.psjfoufe!jo!obuvsf-!xifsf!cjdzdmjoh!
Upxoipvtf!)op!sfbs!zbse*!boe!Spxipvtf!)tnbmm!up!
boe!xbmljoh!bsf!wjbcmf!ebjmz!pqujpot!cfdbvtf!
nfejvn!sfbs!zbse*/
tfswjdft-!sfubjm-!ps!sftubvsbout!bsf!xjuijo!b!tipsu!
xbmljoh!ejtubodf!pg!nptu!sftjefodft/
Tjohmf.Gbnjmz!\[pojohDpowfoujpobm!{pojoh!uibu!
sfhvmbuft!tjohmf.gbnjmz!efwfmpqnfou!cz!exfmmjoh!
\[pojoh!Ejtusjdu!)\[pof*B!tfu!pg!efwfmpqnfou!boe!vtf!
vojut!qfs!bdsf!boe!njojnvn!mpu!tj{f-!hfofsbuft!
bo!bvup.efqfoefou!efwfmpqnfou!qbuufso-!boe!
D2-!D3-!U5!Ofjhicpsippe-!U5!Nbjotusffu*/
uzqjdbmmz!fydmveft!puifs!ipvtf.tdbmf!dpnqbujcmf!
uzqft!tvdi!bt!evqmfyft!boe!gpvsqmfyft/!Uijt!uzqf!pg!
{pojoh!jt!jo!ofbsmz!fwfsz!dpnnvojuz!boe!epft!opu!
beesftt!uif!offet!pg!Njttjoh!Njeemf!Ipvtjoh/
Tj{f-!CvjmejohUif!qiztjdbm!fyufout!pg!b!cvjmejoh-!
ipsj{poubmmz!boe!wfsujdbmmz/!Uijt!jnqpsubou!
dibsbdufsjtujd!uibu!ibt!npsf!up!ep!xjui!qiztjdbm!
dpnqbujcjmjuz!uibo!puifs!dibsbdufsjtujdt!jt!opu!
uzqjdbmmz!beesfttfe!jo!dpowfoujpobm!{pojoh/!
Dpowfoujpobm!{pojoh!uzqjdbmmz!nfbtvsft!ifjhiu!boe!
efotjuz!qfs!bdsf-!mfbwjoh!pvu!uif!tj{f!pg!b!cvjmejoh/!
Gpsn.cbtfe!{pojoh!nfbtvsft!uif!gppuqsjou!boe!
ifjhiu!pg!b!cvjmejoh-!nbljoh!ju!fbtz!up!voefstuboe!
jg!qiztjdbm!jodpnqbujcjmjujft!bsf!mjlfmz!tp!uifz!dbo!
cf!beesfttfe/
115
Smaller Homes and Accessory Dwelling
Smaller Homes and Accessory Dwelling Units (ADUs) Resource References
Sfqpsut!boe!Bsujdmft
Bddfttpsz!Exfmmjoh!Vojut!jo!Ofx!Ibnqtijsf-!B!hvjef!gps!Nvojdjqbmjujft-!Ofx!Ibnqtijsf!Ipvtjoh!Gjobodf!
Bvuipsjuz-!Cfokbnjo!E/!Gsptu-!Ftr/-!BJDQ
Uif!Efowfs!Qptu-!Kpo!Nvssbz-!Nbz!7!3129-!Sfusjfwfe!gspn;!
MMD-!3129
Cvjmejoh!bo!BEV-!Hvjefcppl!up!Bddfttpsz!Exfmmjoh!Vojut!jo!uif!Djuz!pg!Mpt!Bohfmft-!VDMB-!DjuzMbc-!
Cvjmejoh!bo!BEV!jo!M/B/-!Cvjmejoh!bo!BEV-!Kvof!39-3128-!Sfusjfwfe!gspn;!
Dpeft!gps!Dpvsuzbset-!Sptt!Dibqjo-!Sfusjfwfe!gspn;!
M/B!Tnbmm!Mpu!Ipnft;!Eftuspzjoh!Mpx.Sfou!Ipvtjoh-!Sftupsjoh!uif!Bnfsjdbo!Esfbn-!ps!Cpui@-!
LDFU-!Dibtf!Tdifjocbvn-!Gfcsvbsz!:-!3126-!Sfusjfwfe!gspn;!
Mpt!Bohfmft-!Dbmjgpsojb-!Tnbmm!Mpu!Psejobodf-!Sfusjfwfe!gspn;!
Qpdlfu!Ofjhicpsippet-!Dsfbujoh!Tnbmm.tdbmf!Dpnnvojuz!jo!b!Mbshf.tdbmf!Xpsme-!Sptt!Dibqjo-!Uif!Ubvoupo!
Qsftt-!3122
Xibu!jt!Dpuubhf!Ipvtjoh@!Sfusjfwfe!gspn;!
116
Units (ADUs) Resource References
Smaller Homes and Accessory Dwelling Units (ADUs) Resource References
Xfctjuft
Bddfttpsz!Exfmmjoht;!
Cpjdfwjmmf!Dpuubhft;!
Cvjmejoh!bo!BEV;!
Dp.ipvtjoh!tpmvujpot;!
Ebzcsfbl;!
IVE!Vtfs;!
LUHZ!Bsdijufduvsf!boe!Qmboojoh;!
Npvmf!boe!Qpmz{pfjeft-!Bsdijufdut!boe!Vscbojtut;!
Pqujdpt!Eftjho-!Jod/;!
Qpdlfu!Ofjhicpsippet;!
Sptt!Dibqjo!Bsdijufdut;!
Tpvmft!Dpnqboz;!
Uif!Dpuubhf!Dpnqboz;!
117
and .
obic/psh0mv212obic/psh0ipvtjohgpsbmm
Memo
DATE: February 25, 2020
TO: Ashland Planning Commission
FROM: Maria Harris, Planning Manager
RE: Draft ordinance amendments to open space standards
Summary
The Planning Commission is being asked to provide feedback to staff on the attached draft ordinance
amendments to the open space standards. Staff is looking at scheduling the item for a public hearing in
March or April.
Attached are three items: 1) a summary of the draft ordinance amendments, 2) the main package of draft
amendments to the open space standards with markup and 3) a clean copy of the main package of draft
amendments.
A first draft of the terminology corrections is complete. The document is over 80 pages in length and as
a result, is not included in this study session packet. The terminology corrections will be reviewed with
the subcommittee and revised as necessary prior to the public hearing.
Background
The Planning Commission discussed amendments to the open space standards at the January 22, 2019,
March 26, 2019 and August 27, 2019 and October 22, 2019 study session meetings.
Amendments from October 22, 2019 meeting
Staff revised the main package of
from the October 22, 2019 meeting and the changes are summarized below.
Play Areas deleted existing language in 18.4.2.030.H.4 requiring play areas for children in
projects of 20 units are greater.
Surfacing added potential option for Commission discussion in 18.4.2.030.H.2.e.
Credit for Proximity to a Park suggested language in 18.4.2.030.H.2.h gives a credit of up to 50
percent for common open space when development is located within one-quarter mile walking
distance of an existing public park. While the Planning Commission discussed deleting this
section at the last meeting, staff recommends retaining the new language. Written comments
were received commenting on the draft amendments that described this particular suggestion as
(email from Mark Knox, 8/27/2019)
Density Bonus for Major Recreational Facilities deleted existing language in 18.2.5.080.F.3.c
and 18.3.9.050.B.3.
Definition of Open Space revised general definition to include highlighted language in attached
markup copy of main package of draft ordinance amendments.
Page 2 of 2
Definition of Public Open Space or Park added new definition.
Definition of Unbuildable Area revised and cross referenced for consistency with definition of
northern lot line under solar access and setbacks.
Terminology Consistency
In addition to the draft amendments, the Planning Commission discussed the need to provide
consistency in AMC Title 18 Land Use (the land use ordinance) for the term open space.
Staff reviewed the land use ordinance and identified the terms open space, common, and
recreation. Open Space is used 133 times, common 88 times, park 19 times and recreation 62
times. As discussed at the October 22, 2019 Planning Commission study session, staff revised the
terms to match the draft definitions in the main package.
Open space is used most frequently in two ways - as a general term and in reference to common
open space. To a lesser extent, open space is used in the land use ordinance to refer to private open
space and is also used as the name of a zones in the North Mountain Neighborhood and Croman Mill
District.
DEPT. OF COMMUNITY DEVELOPMENT Tel: 541-488-5305
20 E. Main Street Fax: 541-552-2050
Ashland, Oregon 97520 TTY: 800-735-2900
www.ashland.or.us
1
Notes
combination of common and Developments of 10 ave at least 50% of space is defined as
an area for the use prior to submission
ot area required Maintenance of open space y of the
more must
or enjoyment of all
Proposed Amendment
e constructed
the required open space in common
y an
of the final plat or
common open space shall
as open space, and open
and landscaped
residents of the
Common open Common open
building permit
may be met by a
issuance of a
count for base density.
.
All areas set aside for association of owners.
development
property owner(s) or b
.
shall be responsibilit
open space
.
private open space
or
units
spac
8% of total l
h
space
OPEN SPACE STANDARDS
8% of total lot area dedicated common open space may be provisions for maintenance of
for use by
.
counted for based density
Existing Standard
All areas set aside for
.
There are adequate
common open space
the residents of the
recreation area
.
development
N/A
to
Proposed: 18.4.2.030.H.a.d
18.4.2.030.H.1.c
Proposed: 18.4.2.030.H.1.a
Proposed: 18.4.2.030.1.b
Existing: 18.3.9.050.B.2.aExisting: 18.3.9.040.A.3.e
Code Reference
.1
and 18.3.9.050.A.3.a.iv
3.a.v
18.4.2.030.H
18.3.9.050.3.a.ii
18.3.9.050.A.
Proposed:
Existing:
and and
pace Ownership and Maintenance of
(for multifamily and attached
family developments)
Open S
Description
Density Calculation
for
d
quire
Open Space
Area Re
-
Timing
single
2
Notes
secured with financial instrument. Private open space and no less than 400 buffer and perimeter locate areas areas on slopes less
satisfies the requirements of minimum of 20 feet
for active use such
landscaped before
as lawn and picnic
Proposed Amendment
final occupancy of
d
locate
Pedestrian paths
minimum area is
dwelling unit.outside of require
constructed and
both chapters 18.4.2 and
can count after
Common open space
square feet.
Dimensions
.
setbacks
Location
Delete standard.
5%
unless
Slope
than
met.
the
.
18.3.9
OPEN SPACE STANDARDS
Open space must be suitable surface for human use, does
Existing Standard
not include shrubs, bark
mulch and other ground
required for projects of
Play areas for children
.
reater than 20 units
.
human use
N/A
g
h
-
Proposed: 18.4.2.030.H.1.e
b
Proposed: 18.4.2.030.H.2
18.4.2.030.H.2 (surfacing)
Code Reference
Existing: 18.4.2.030.H.4
Existing: Existing:
(for multifamily and
(i.e., attached
(for multifamily and attached
developments)
Options (i.e. subdivision)
Performance Standards
family units) and
Common Open Space
family
Description
Site Design Review
-
developments)
attached single
Developments
family
Play Areas
Standards
--
singlesingle
3
Notes
existing standard or fences around open Exceptions for front common open space
Credit for Proximity ting
Proposed Amendment
such as wetlands,
can include areas
4 credit for up to 50
can get
1/4
floodplain, large
perimeter of the
use space limited to percent of open natural features
development is
that provide for
include natural
s
preservation of
distance of exi
yards and the located within
feet in height.
pment.
Natural Areas
Fences/Walls
mile walking
new option..
public park
trees, etc.
Surfacing
space if
to Park
.
develo
areas
OPEN SPACE STANDARDS
Existing Standard
Code Reference
Description
4
Notes
outdoor space must accessible by a door from the interior the dwelling unit served porches or yards for floor dwelling balconies must be at
least 48 square feet
.
Proposed Amendment
6
private open space
wording
areas for ingress
feet deep
LocationFloor Units
private
feet deep and at
units must be at
12 feet of
recycling/refuse
and egress and
Common Open
and not
at least 48
Walkways and disposal areas.
be counted for
decks, patios,
Storage Space
.
by the space
square feet.
be directly
edited for
Size and
- -
,
-
Access
ground
6
Upper
in sizeSpace
least
in
with
and
OPEN SPACE STANDARDS
areas are eligible for open
Decks, patios, and similar
Existing Standard
.
space
Existing: 18.2.5.080.F and
Code Reference
18.4.2.030.H.3
Proposed: same
18.3.9.050.B
Existing:
Private Open Space Standards
(for multifamily and attached
family developments)
Residential Density Bonus
Description
-
single
5
distance between buildings separate buildings, such as
2 and
3 zones. The existing
zones, as well as more
Amendment provides
setback is a potential
consistency between
barrier (i.e., variance
developments using
flexibility in building
-
the Rcottage housing.
Notes
application) to
placement in
-
R
Developments of 10 require five percent family developments of open space subject to Site Design Review 030.H. definition of unbuildable area.
consistency in both
Major Recreational
space, except below
require a minimum
Proposed Amendment
family developments
receive a density bonus for
of the total lot
of total lot area in
density
additional common open
Multifamily and attached
-
units or greater
Multifamily and Design Review
space after meeting the
common open
bonus deleted.subject to Site
attached single
To supplement revised
a required in 18.4.2.
standards in
meeting the
18.4.2.030.H
.
sections
Facility
8%
of
8%
required
-
single
are
OPEN SPACE STANDARDS
Existing Standard
N/AN/A
Proposed: 18.3.9.050.A.3.a
Code Reference
Existing: 18.3.9.050.B.2
and 18.3.9.050.A.3.a.i
Proposed: sameProposed: same
18.6.1.030
Open Space for Performance
for Performance
Density Bonus for Common
Definition of Buildable Area
Required Common Open
Description
Standards Options Options
DevelopmentsDevelopments
Space Area
Standards
6
Notes
things that can be in common General definition revised for consistency with unbuildable
Revised to include variety of
regulated from development
Removed reference to open
areas for the purpose of the
common, private and public
Proposed Amendment
unbuildable
used in several sections to
Added cross reference to
inadvertently deled in the
clarity and definitions of lains and
or
Added for reference for
describe areas that are solar access standards.
. Also
Added for reference f
language added for
private open space private open space
.
public open space.The definition was
open space added
slopes over 35%
such as floodp
2015 update
..
standardsstandards
.
areas.
space
OPEN SPACE STANDARDS
Existing Standard
Code Reference
18.6.1.03018.6.1.03018.6.1.03018.6.1.03018.6.1.03018.6.1.03018.6.1.030
Definition of Unbuildable Area
Floor
Definition of Common Area
Floor
Definition of Open Space
Description
-
Ground
-
Definition of Upper
of Yard
Definition of Park
Dwelling UnitDwelling Unit
Definition of
finition
De
ORDINANCE NO.______
AN ORDINANCE AMENDING CHAPTERS 18.2.5., 18.3.9, 18.4.2 AND 18.6
OF THE ASHLAND LAND USE ORDINANCE TO AMEND THE OPEN
SPACE STANDARDS
Annotated to show deletions and additions to the code sections being modified. Deletions are
bold lined throughbold underlined
and additions are . Unchanged text is grey.
SECTION 1.
Section 18.4.2.030.H \[Residential Development Open Space\] of the Ashland
Land Use Ordinance is hereby amended as follows:
18.4.2.030 Residential Development
H. Open Space. Residential developments that are subject to the provisions of this chapter
shall conform to all of the following standards.
1. Recreation AreaOpen Space. An area equal to at least eight percent of the lot area
shall be dedicated to open space for recreational use by the tenants of the
development.
a. Required Area. An area equal to at least eight percent of the total lot area shall
be required as open space. The required open space area may be met by
combining common and private open spaces meeting the requirements of this
section. See definition of open space in part 18-6.
b. Density Calculation. All areas set aside for open space shall be counted for
base density. The required open space is not subject to bonus point
calculations.
c. Maintenance. Maintenance of open space shall be responsibility of the
property owner(s) or by an association of owners (i.e., homeowners
association).
d. Timing.
i. Common Open Space. Common open space shall be constructed and
landscaped prior to submission of the final plat or issuance of a building
permit, whichever is later. The City may approve a final plat or building
permit prior to completion of required common open space improvements
if the applicant provides a bond by a surety authorized to do business in
the State of Oregon, irrevocable letter of credit from a surety or financial
institution acceptable to the City, cash, or other form of security acceptable
to the City.
ii Private Open Space. Private open space shall be constructed and
landscaped prior to final occupancy of the respective dwelling unit.
e. Performance Standards Option (PSO) Overlay.Common open space that is
1
provided to meet the requirements of this section shall also satisfy the open
space requirement of subsection 18.3.9.050.A.3 for developments exercising
the Performance Standards option in Chapter 18.3.9.
2. Surfacing. Areas covered by shrubs, bark mulch, and other ground covers that do
not provide suitable surface for human use may not be counted towards this
requirement.
3. Decks and Patios.Decks, patios, and similar areas are eligible for open space.
4. Play Areas. Play areas for children are required for projects of greater than 20
units that are designed to include families. Play areas are eligible for open space.
Commented \[MH1\]: Deleted based on Planning
Commission comments from 10/22/2019 meeting.
2. Common Open Space. Common open space shall meet the following standards.
See definition of common open space in part 18-6.
a. Required Area. A minimum of fifty percent of the required open space shall be
designated and set aside as common open space in all developments with a
base density of ten or more dwelling units.
b. Dimensional Standards. Common open space dimensions shall be a minimum
of 20 feet and a minimum area of 400 square feet.
i. Pedestrian Connections. Pedestrian walkways and multi-use paths shall
contribute toward meeting the required common open space when at least
one area meeting the minimum area required in subsection
18.4.2.030.H.2.b, above, is provided. Sidewalks in the public right-of-way
(i.e., public street) and pedestrian walkways providing access to individual
units may not be counted towards this requirement.
c. Location. Common open space shall not be located within a required buffer or
perimeter yard setback area.
d. Slope. Common open space designed for active use, such as lawn and picnic
areas, shall be located on slopes less than five percent, except for areas
regulated by the Building Code (e.g., walkways). Natural areasdesigned for
passive use, such as riparian corridors and wetlands, may be located on
slopes greater than five percent.
e. Surfacing. Areas covered by shrubs, mulch, and other ground covers that do
not provide suitable surface for human use may not be counted towards this
requirement.
OPTION to replace e. Surfacing (above)
e.Improvements. The common open space shall containone or more of the
following: outdoor recreation area or recreation facility, tree grove (e.g.,
existing mature trees), natural area with benches or seating area, or similar
outdoor amenities as appropriate for the intended residents. Common open
space shall be landscaped in accordance with section 18.4.4.030
Landscaping and Screening.
Commented \[MH2\]: New, possible substitute for e.
above
2
f. Fences and Walls. Fences, walls, hedges, and screen planting that are located
on the perimeter of common open space shall not exceed four feet in height,
except for fences in front yards and on the perimeter of the development shall
meet the fence height requirements of section 18.4.4.060. This requirement
shall not apply to fences located on properties adjoining but not located within
a proposed development. See section 18.4.4.060 Fencing and Walls for fence
permit and design standard requirements.
g. Credit for Proximity to a Park. A credit of up to 50 percent for common open
space may be granted when the development is located within one-quarter
mile walking distance of an existing public park.
Commented \[MH3\]: While Planning Commission
discussed deleting this section at 10/22/2019 meeting, staff
h. Natural Areas. Common open space may include areas that provide for the
recommends retaining the new language. Written
comments were received supporting this amendment,
preservation or enhancement of natural features such as wetlands, floodplain
describing it as
corridors, ponds, large trees, and rock outcroppings.
3. Private Open Space. Private open space shall meetthe following standards. See
definition of private open space in part 18-6.
a. Eligible Spaces. Decks, patios, porches, yards, and similar areas are eligible
for private open space.
i. Access. Private outdoor space shall be directly accessible by a door from
the interior of the individual dwelling unit served by the space.
ii.Walkways and Storage Space. The minimum area required for private open
space shall not include area for ingress and egress to a ground-floor
dwelling unit (e.g., walkwayto dwelling unit door) or storage space
(storage or bicycle rack). The ingress and egress area shall be measured
as 36 inches in width and the length of the pedestrian route.
b. Ground-Floor Dwelling Units. Decks, patios, porches, or yards shall be at least
six feet deep and measuring at least 48 square feet. Ground-floor private open
space shall not be located within 12 feet of recycling and refuse disposal
areas. See definition of ground-floor dwelling unit in part 18-6.
c. Upper-Floor Dwelling Units. Balconies shall be at least six feet deep and
measuring at least 48 square feet. See definition of upper-floor dwelling unit in
part 18-6.
SECTION 2.
Section 18.2.5.080 \[Standards for Residential Zones Residential Density
Calculation in R-2 and R-3 Zones\] of the Ashland Land Use Ordinance is hereby amended to
read as follows:
18.2.5.080 Residential Density Calculation in R-2 and R-3 Zones
A. DensityStandard. Except density gained through bonus points under section 18.2.5.080 or
chapter 18.3.9 Performance Standards Option, development density in the R-2 and R-3
zones shall not exceed the densities established by this section.
B. Density Calculation.
3
1. Except as specified in the minimum lot area dimensions below, the density in R-2 an R-3
zones shall be computed by dividing the total number of dwelling units by the acreage of
the project, including land dedicated to the public, and subject to the exceptions below.
2. Units less than 500 square feet of gross habitable area shall count as 0.75 units for the
purposes of density calculations.
3. Accessory residential units are not required to meet the density or minimum lot area
requirements of this section. See section 18.2.3.040 for accessory residential unit
standards.
C. Minimum Density.
1. The minimum density shall be 80 percent of the calculated base density.
2. Exceptions to minimum density standards. The following lots are totally or partially
exempt from minimum density standards.
a. Lots less than 10,000 sq. ft. in existence prior to the effective date of this ordinance.
b. Lots located within any Historic District designated within the Ashland Municipal
Code.
c. Lots with existing or proposed conditional uses may be exempt for that portion of the
property that is subject to the conditional use for calculations of the minimum base
density standard.
d. Where a lot is occupied by a single-family residence January 9, 2005 (Ord. 2914),
the single-family residence may be enlarged or reconstructed without being subject
to the minimum base density standard.
e. In the event that a fire or natural hazard destroys a single-family residence, such
residence may be replaced without being subject to the minimum base density
standard.
f. Where floodplains, streams, land drainages, wetlands, and/or steep slopes exist
upon the lot an exception to minimum density requirements may be obtained to
better meet the standards of chapter 18.3.10 Physical and Environmental
Constraints.
g. A lot that is nonconforming in minimum density may not move further out of
conformance with the minimum density standard. However, units may be added to
the lot which bring the lot closer to conformance without coming all the way into
conformance provided it is demonstrated that the minimum density will not be
precluded.
D. Base Densities and Minimum Lot Dimensions.
1. R-2 Zone.Base density for the R-2 zone shall meet the following standards:
a. Minimum lot area for one unit shall be 5,000 square feet, except as allowed in
section 18.2.3.040 for accessory residential units.
b. Minimum lot area for two units shall be 7,000 square feet.
c. Minimum lot area for three units shall be 9,000 square feet, except that the
4
residential density bonus in subsection 18.2.5.080.F, below, may be used to increase
density of lots greater than 8,000 square feet up to three units.
d. For more than three units, the base density shall be 13.5 dwelling units per acre. The
permitted base density shall be increased by the percentage gained through the
residential density bonus is subsection 18.2.5.080.F.
2. R-3 Zone.Base density for the R-3 zone shall meet the following standards:
a. Minimum lot area for one unit shall be 5,000 square feet, except as allowed in
section 18.2.3.040 for accessory residential units.
b. Minimum lot area for two units shall be 6,500 square feet.
c. Minimum lot area for three units shall be 8,000 square feet.
d. For more than three units, the base density shall be 20 dwelling units per acre. The
permitted base density shall be increased by the percentage gained through the
residential density bonus is subsection 18.2.5.080.F, below.
E. Exceptions. An accessory residential unit is not required to meet density or minimum lot
area requirements per section 18.2.3.040.
F. Residential Density Bonus.
1. Density Bonus Points Authorized. Except as allowed under chapter 18.3.9 Performance
Standards Option, the permitted base density shall be increased only pursuant to this
section.
2. Maximum Density Bonus Points. The total maximum bonus permitted shall be 60
percent.
3. Density Bonus Point Criteria. The following bonuses shall be awarded:
a. Conservation Housing. The maximum bonus for conservation housing is 15 percent.
One hundred percent of the homes or residential units approved for development,
after density bonus point calculations, shall meet the minimum requirements for
certification as an Earth Advantage home, as approved by the Conservation Division
-6.
b. Common OpenOutdoor Recreation Space. The maximum bonus for provision of
common openoutdoor recreation space above the minimum requirement
established by this ordinance is ten percent. A one percent bonus shall be
awarded for each one percent of the total project area in common open space
in excess of the base requirement. The purpose of the density bonus for common
openoutdoor recreational space is to permit areas, which could otherwise be
developed or sold as individual lots, that could otherwise to be developed as a
recreational amenity. It is not the purpose of this provision to permit density bonuses
for incidental open spaces that have no realistic use by project residents on a day-to-
day basis. One percent increased density bonus for each percent of the project
dedicated to outdoor recreation space beyond the minimum requirement of
this ordinance.
c. Major Recreational Facilities. The maximum bonus for provision of major
5
recreational facilities is ten percent. Density bonus points shall be awarded for
the provision of major recreational facilities, such as tennis courts, swimming
pools, playgrounds, or similar facilities. For each one percent of the total
project cost devoted to recreational facilities, a six percent density bonus shall
be awarded to a maximum of ten percent. Total project cost shall be defined as
the estimated sale price or value of each residential unit times the total number
of units in the project. Estimated value shall include the total market value for
the structure and land. A qualified architect or engineer using current costs of
recreational facilities shall estimate the cost of the recreational facility for City
review and approval.
Commented \[MH4\]: Deleted based on Planning
Commission comments from 10/22/2019 meeting.
dc. Affordable Housing. The maximum bonus for affordable housing is 35 percent.
Developments shall receive a density bonus of two units for each affordable housing
unit provided. Affordable housing bonus shall be for residential units that are
guaranteed affordable in accord with the standards of section 18.2.5.050.
SECTION 3.
Section 18.3.9.050 \[Performance Standards Option and PSO Overlay
Performance Standards for Residential Developments\] of the Ashland Land Use Ordinance is
hereby amended as follows:
18.3.9.050 Performance Standards for Residential Developments
A. Base Densities. The density of the development shall not exceed the density established
by this section. The density shall be computed by dividing the total number of dwelling units
by the acreage of the project, including land dedicated to the public. Fractional portions of
the final answer, after bonus point calculations, shall not apply towards the total density.
Accessory residential units are not required to meet the density requirements of this chapter
in accordance with section 18.2.3.040.
1. The base density, for purposes of determining density bonuses allowed under this
section, for developments other than cottage housing, is as provided in Table
18.3.9.050.
Table 18.3.9.050.A.1 Base Densities for Determining Allowable
Density Bonus with Performance Standards Option
Zone Allowable Density
(dwelling units per acre)
WR-2 0.30 du/acre
WR-2.5 0.24 du/acre
WR-50.12 du/acre
WR-10 0.06 du/acre
WR-20 0.03 du/acre
RR-1 0.60 du/acre
RR-.5 1.2 du/acre
R-1-10 2.40 du/acre
R-1-7.5 3.60 du/acre
R-1-5 4.50 du/acre
R-1-3.5 7.2 du/acre
R-2 13.5 du/acre
6
R-3 20 du/acre
2. Cottage Housing. The base density for cottage housing developments, for purposes of
determining density bonuses, allowed under this section is as provided in Table
18.3.9.050.A.2.
Table 18.3.9.050.A.2 Base Densities for Determining Allowable Density Bonus with Performance Standards
Option
Minimum
Maximum
number of Minimum lot size
Maximum number of Maximum
cottages per (accommodates
Zones Cottage cottages per Floor Area
cottage minimum number
Density cottage housing Ratio (FAR)
housing of cottages)
development
development
1 cottage
R-1-5,
dwelling unit per
NN-1-5 3 12 7,500 sq.ft.0.35
2,500 square
NM-R-5
feet of lot area
1 cottage
R-1-7.5 dwelling unit per
3 12 11,250 sq.ft. 0.35
NM-R-1-7.5 3,750 square
feet of lot area
3. Common Open Space Required. All developments with a base density of ten units
or greater shall be required to provide a minimum of five percent of the total lot
area in Open Space; that area is not subject to bonus point calculations, however,
density bonuses shall be awarded to open space in excess of the five percent
required by this subsection.
a. Required Area. All developments with a base density of ten units or greater
shall be required to provide a minimum of five percent of the total lot area in
common open space, except as required in 18.3.9.A.3.a.i, below.
i. Multifamily and Attached Single-Family Housing.Housing developments
subject to Site Design Review in accordance with subsection 18.5.2.020.B
shall provide a minimum of eight percent of total lot area in open space in
accordance with and meeting the standards in subsection 18.4.2.030.H
Open Space.
ii.Density Calculation. All areas set aside for common open space shall be
counted for base density. The required common open space is not subject
to bonus point calculations.
iii. Natural Areas. Common open space may include areas that provide for the
preservation or enhancement of natural features such as wetlands,
floodplain corridors, ponds, large trees, and rock outcroppings.
iv. Ownership and Maintenance. The common open space shall be designated
on the Outline and Final Plan submittals and set aside as common area for
the use of residents of the development. Maintenance of common open
space shall be responsibility of the property owner(s) or by an association
of owners (i.e., homeowners association).
7
v.Timing and Phasing. Common open space shall be constructed and
landscaped prior to submission of the final plat or issuance of a building
permit, whichever is later. The City may approve a final plat or building
permit prior to completion of required common open space improvements
if the applicant provides a bond by a surety authorized to do business in
the State of Oregon, irrevocable letter of credit from a surety or financial
institution acceptable to the City, cash, or other form of security acceptable
to the City. Phased developments shall meet the requirements of
subsection 18.3.9.040.A.4.
b. Dimensional Standards. Common open space shall have no dimension that is
less than 20 feet and a minimum area of 400 square feet, except as outlined
below.
i. Pedestrian Connections. Pedestrian walkways and multi-use paths shall
contribute toward meeting the required common open space area when at
least one area meeting the minimum area required in subsection
18.3.9.050.A.3.b, above, is met. Pedestrian walkways providing access to
individual units may not be counted towards this requirement.
ii.Natural Features. Natural features located in common open space and
meeting the Outline Plan approval criteria in 18.3.9.040.3 shall be counted
toward meeting common open space requirements.
B. Density Bonus Point Calculations. The permitted base density shall be increased by the
percentage gained through density bonus points. In no case shall the density exceed that
allowed under the Comprehensive Plan. The maximum density bonuspermitted shall be 60
percent (base density x 1.6), pursuant to the following criteria.
1. Conservation Housing. A maximum 15 percent bonus is allowed. One-hundred percent
of the homes or residential units approved for development, after bonus point
calculations, shall meet the minimum requirements for certification as an Earth
Earth Advantage program as adopted by resolution 2006-06.
2. Provision of Common Open Space. A maximum ten percent bonus is allowed, pursuant
to the following.
a. Purpose. Common open spaces may be provided in the form of natural areas,
wetlands, playgrounds, active or passive recreational areas, and similar areas in
common ownership. All areas set aside for common open space may be
counted for base density, unless otherwise excluded by subsection
18.3.9.050.A.2. However, for the purposes of awarding density bonus points, the
Planning Commission shall consider whether or not the common open space is a
significant amenity to project residents, and whether project residents will realistically
interact with the common open space on a day-to-day basis. The purpose of the
density bonus for common open space is to permit areas, which could otherwise be
developed or sold as individual lots, to be retained in their natural state or to be
developed as a recreational amenity. It is not the purpose of this provision to permit
density bonuses for incidental open spaces that have no realistic use by project
8
residents on a day-to-day basis. Open space provided in cottage housing
developments, meeting the standards of section 18.2.3.090 Cottage Housing, is
not eligible for density bonus points.
b. Standard. Developments with fewer than ten units that provide more than two
percent of the project area for common open space, or for developments of ten units
or greater that provide more than five percent common open space, a one percent
bonus shall be awarded for each one percent of the total project area in common
open spacein excess of the base requirement, except as specified below.
i. Cottage Housing. Common open space provided in cottage housing
developments, meeting the standards of section 18.2.3.090 Cottage
Housing, is not eligible for density bonus points.
ii.Multifamily and Attached Single-Family Housing.Housing developments
subject to Site Design Review in accordance with subsection 18.5.2.020.B
shall receive density bonus points under this section for common open
space area in excess of the required eight percent of total lot area in
accordance with the standards in subsection 18.4.2.030.H Open Space.
3. Provision of Major Recreational Facilities. A maximum ten percent bonus is
allowed, pursuant to the following.
a. Purpose. Points may be awarded for the provision of major recreational
facilities.
b. Standard. For each percent of total project cost devoted to recreational
facilities, a six percent density bonus may be awarded up to a maximum of ten
percent bonus. Total project cost shall be defined as the estimated sale price
or value of each residential unit times the total number of units in the project.
Estimated value shall include the total market value for the structure and land.
A qualified architect or engineer shall prepare the cost of the recreational
facility using current costs of recreational facilities.
c Major recreational facilities provided in cottage housing developments,
meeting the standards of section 18.2.3.090 Cottage Housing, are not eligible
for density bonus points.
Commented \[MH5\]: Deleted based on Planning
Commission comments from 10/22/2019 meeting.
43. Affordable Housing.A maximum bonus of 35 percent is allowed. Developments shall
receive a density bonus of two units for each affordable housing unit provided.
Affordable housing bonus shall be for residential units that are guaranteed affordable in
accordance with the standards of section 18.2.5.050 Affordable Housing Standards.
SECTION 4.
Section 18.6.1.030 \[Definitions Definitions\] of the Ashland Land Use Ordinance
is hereby amended to read as follows:
Buildable Area. That portion of an existing or proposed lot that can be built upon.
Common Area. Land jointly owned by an association of owners or permanently designated
9
for the use of all residents of a development to that includes shared site facilities and
amenities such as open space, landscaping, streets, driveways, parking, loading
areasor recreation, recycling and refuse disposal areas, and storage structures (e. g.,
may be managed by a homeowners' association).
Ground-Floor Dwelling Unit. A residential unit with the entrance, front or rear, that is
within five feet of the finished grade. The distance to finished grade is measured
vertically at a right angle from the doorsill to the finished grade.
Open Space. A common area designated on the final plans of the development,
permanently set aside for the common use of the residents of the development. Open
space area is landscaped and/or left with a natural vegetation cover, and does not
include thoroughfares, parking areas, or improvements other than recreational
facilities. Land or water with its surface predominately open to the sky or
Commented \[MH6\]: Revised based on Planning
Commission comments from 10/22/2019 meeting. New
predominantly undeveloped, that is designated or set aside to serve the purpose of
wording highlighted.
providing park and recreation activities, conserving natural resources, collecting and
treating storm water, or structuring urban development and form (or creating a
pattern of development). Open space does not include thoroughfares, parking areas or
improvements other than recreational facilities common areas such as streets,
driveways, parking, loading areas, recycling and refuse disposal areas, and storage
structures.
-
Common Open Space. An area for the use or enjoyment of all residents of a
development (e.g., multifamily dwelling units) or subdivision consisting mostly of
recreational facilities, community gardens or natural areas. Common open space
may include areas that provide for the preservation or enhancement of natural
features such as wetlands, floodplain corridors, ponds, large trees, and rock
outcroppings.
-
Private Open Space. An areaintended for private outdoor use by residents of an
individual dwelling unit. Private open space includes decks, patios, porches,
yards, and similar areas.
-
Public Open Space or Park. An area owned or managed by a public or private
agency and maintained for the use and enjoyment of the general public. Examples
of public open space include public parks and recreation facilities, trail easements
and systems, nature preserves, public plazas and other public outdoor meeting
areas.
Commented \[MH7\]: New definition based on Planning
Commission comments from 10/22/2019 meeting.
Park. See definition of Public Open Space.
Upper-Floor Dwelling Unit. A residential unit with the entrance, front or rear, that is more
than five feet above the finished grade.The distance from finished grade is measured
vertically at a right angle from finished grade to the doorsill.
10
Unbuildable Area. All areas outside of building envelopes and within open space. That
portion of an existing or proposed lot that building upon is restricted by regulations.
Unbuildable area includes but is not limited to required yards, easements, and Flood
Plain Corridor and Severe Constraints Lands as classified in section 18.3.10.060. For
the purposes of implementing chapter 18.4.8 Solar Access, unbuildable area does not
include a required yard area.
Commented \[MH8\]: Added for consistency with
access and setbacks.
Yard. An open space onoutdoor area of a lot which is unobstructed by a structure, except as
- Any lot line or lines less than 45
bƚƩƷŷĻƩƓ \[ƚƷ \[źƓĻ͵
allowed in section 18.2.4.050 Yard Requirements and General Exceptions, and
degrees southeast or southwest of a line drawn east-west
and intersecting the northernmost point of the lot. If the
measured from a lot line to the nearest point of a building. May also be an area defined by
northern lot line adjoins any unbuildable area (e.g., street,
required setbacks (e.g., between a building or structure and nearest property line).
alley, public right-of-way, parking lot, or common area)
other than a required yard area, the northern lot line is
-
Yard, Front. A yard between side lot lines and measured horizontally at right angles to
that portion of the northerly edge of the unbuildable area
the front lot line from the front lot line to the nearest point of the building.
which is due north from the actual northern edge of the
applicant's property. See Figure below.
-
Yard, Side. An open spaceyard between the front and rear yards measured
horizontally and at right angles from the side lot line to the nearest point of the building.
-
Yard, Rear. A yard between side lot lines and measured horizontally at right angles to
the rear yard line from the rear yard line to the nearest point of the building.
SECTION 5. Savings
. Notwithstanding this amendment/repeal, the City ordinances in existence
at thetime any criminal or civil enforcement actions were commenced, shall remain valid and in
full force and effect for purposes of all cases filed or commenced during the times said
ordinances(s) or portions thereof were operative. This section simply clarifies the existing
situation that nothing in this Ordinance affects the validity of prosecutions commenced and
continued under the laws in effect at the time the matters were originally filed.
SECTION 6. Severability
. The sections, subsections, paragraphs and clauses of this ordinance
are severable. The invalidity of one section, subsection, paragraph, or clause shall not affect the
validity of the remaining sections, subsections, paragraphs and clauses.
SECTION 7. Codification
. Provisions of this Ordinance shall be incorporated in the City Code
word, and the sections of this Ordinance may be renumbered, or re-lettered, provided however
that any Whereas clauses and boilerplate provisions (i.e. Sections 1-14) need not be codified and
the City Recorder is authorized to correct any cross-references and any typographical errors.
The foregoing ordinance was first read by title only in accordance with Article X,
Section 2(C) of the City Charter on the _____day of ______________, 2019,
and duly PASSED and ADOPTED this _____ day of ________________, 2019.
_______________________________
11
Melissa Huhtala, City Recorder
SIGNED and APPROVED this day of , 2019.
________________________
John Stromberg, Mayor
Reviewed as to form:
_______________________________
David H. Lohman, City Attorney
12
Clean Copy of Main Package of Draft Ordinance Amendments without
Additions and Deletions
SECTION 1.
Section 18.4.2.030.H \[Residential Development Open Space\] of the Ashland
Land Use Ordinance is hereby amended as follows:
18.4.2.030 Residential Development
H. Open Space.
Residential developments that are subject to the provisions of this chapter
shall conform to all of the following standards.
1. Open Space.
a. Required Area. An area equal to at least eight percent of the total lot area shall be
required as open space. The required open space area may be met by combining
common and private open spaces meeting the requirements of this section. See
definition of open space in part 18-6.
b. Density Calculation. All areas set aside for open space shall be counted for base
density. The required open space is not subject to bonus point calculations.
c. Maintenance. Maintenance of open space shall be responsibility of the property
owner(s) or by an association of owners (i.e., homeowners association).
d. Timing.
i. Common Open Space. Common open space shall be constructed and
landscaped prior to submission of the final plat or issuance of a building permit,
whichever is later. The City may approve a final plat or building permit prior to
completion of required common open space improvements if the applicant
provides a bond by a surety authorized to do business in the State of Oregon,
irrevocable letter of credit from a surety or financial institution acceptable to the
City, cash, or other form of security acceptable to the City.
ii Private Open Space. Private open space shall be constructed and landscaped
prior to final occupancy of the respective dwelling unit.
e. Performance Standards Option (PSO) Overlay. Common open space that is
provided to meet the requirements of this section shall also satisfy the open space
requirement of subsection 18.3.9.050.A.3 for developments exercising the
Performance Standards option in Chapter 18.3.9.
2. Common Open Space. Common open space shall meet the following standards. See
definition of common open space in part 18-6.
a. Required Area. A minimum of fifty percent of the required open space shall be
designated and set aside as common open space in all developments with a base
density of ten or more dwelling units.
b. Dimensional Standards. Common open space dimensions shall be a minimum of 20
1
feet and a minimum area of 400 square feet.
i. Pedestrian Connections. Pedestrian walkways and multi-use paths shall
contribute toward meeting the required common open space when at least one
area meeting the minimum area required in subsection 18.4.2.030.H.2.b, above,
is provided. Sidewalks in the public right-of-way (i.e., public street) and
pedestrian walkways providing access to individual units may not be counted
towards this requirement.
c. Location. Common open space shall not be located within a required buffer or
perimeter yard setback area.
d. Slope. Common open space designed for active use, such as lawn and picnic areas,
shall be located on slopes less than five percent, except for areas regulated by the
Building Code (e.g., walkways). Natural areas designed for passive use, such as
riparian corridors and wetlands, may be located on slopes greater than five percent.
e. Surfacing. Areas covered by shrubs, mulch, and other ground covers that do not
provide suitable surface for human use may not be counted towards this
requirement.
f. Fences and Walls. Fences, walls, hedges, and screen planting that are located on
the perimeter of common open space shall not exceed four feet in height, except for
fences in front yards and on the perimeter of the development shall meet the fence
height requirements of section 18.4.4.060. This requirement shall not apply to fences
located on properties adjoining but not located within a proposed development. See
section 18.4.4.060 Fencing and Walls for fence permit and design standard
requirements.
g. Credit for Proximity to a Park. A credit of up to 50 percent for common open space
may be granted when the development is located within one-quarter mile walking
distance of an existing public park.
h. Natural Areas. Common open space may include areas that provide for the
preservation or enhancement of natural features such as wetlands, floodplain
corridors, ponds, large trees, and rock outcroppings.
3. Private Open Space. Private open space shall meet the following standards. See
definition of private open space in part 18-6.
a. Eligible Spaces. Decks, patios, porches, yards, and similar areas are eligible for
private open space.
i. Access. Private outdoor space shall be directly accessible by a door from the
interior of the individual dwelling unit served by the space.
ii. Walkways and Storage Space. The minimum area required for private open
space shall not include area for ingress and egress to a ground-floor dwelling unit
(e.g., walkway to dwelling unit door) or storage space (storage or bicycle rack).
The ingress and egress area shall be measured as 36 inches in width and the
length of the pedestrian route.
b. Ground-Floor Dwelling Units. Decks, patios, porches, or yards shall be at least six
2
feet deep and measuring at least 48 square feet. Ground-floor private open space
shall not be located within 12 feet of recycling and refuse disposal areas. See
definition of ground-floor dwelling unit in part 18-6.
c. Upper-Floor Dwelling Units. Balconies shall be at least six feet deep and measuring
at least 48 square feet. See definition of upper-floor dwelling unit in part 18-6.
SECTION 2.
Section 18.2.5.080 \[Standards for Residential Zones Residential Density
Calculation in R-2 and R-3 Zones\] of the Ashland Land Use Ordinance is hereby amended to
read as follows:
18.2.5.080 Residential Density Calculation in R-2 and R-3 Zones
A. Density Standard.
Except density gained through bonus points under section 18.2.5.080 or
chapter 18.3.9 Performance Standards Option, development density in the R-2 and R-3
zones shall not exceed the densities established by this section.
B. Density Calculation.
1. Except as specified in the minimum lot area dimensions below, the density in R-2 an R-3
zones shall be computed by dividing the total number of dwelling units by the acreage of
the project, including land dedicated to the public, and subject to the exceptions below.
2. Units less than 500 square feet of gross habitable area shall count as 0.75 units for the
purposes of density calculations.
3. Accessory residential units are not required to meet the density or minimum lot area
requirements of this section. See section 18.2.3.040 for accessory residential unit
standards.
C.Minimum Density.
1. The minimum density shall be 80 percent of the calculated base density.
2. Exceptions to minimum density standards. The following lots are totally or partially
exempt from minimum density standards.
a. Lots less than 10,000 sq. ft. in existence prior to the effective date of this ordinance.
b. Lots located within any Historic District designated within the Ashland Municipal
Code.
c. Lots with existing or proposed conditional uses may be exempt for that portion of the
property that is subject to the conditional use for calculations of the minimum base
density standard.
d. Where a lot is occupied by a single-family residence January 9, 2005 (Ord. 2914),
the single-family residence may be enlarged or reconstructed without being subject
to the minimum base density standard.
e. In the event that a fire or natural hazard destroys a single-family residence, such
residence may be replaced without being subject to the minimum base density
standard.
3
f. Where floodplains, streams, land drainages, wetlands, and/or steep slopes exist
upon the lot an exception to minimum density requirements may be obtained to
better meet the standards of chapter 18.3.10 Physical and Environmental
Constraints.
g. A lot that is nonconforming in minimum density may not move further out of
conformance with the minimum density standard. However, units may be added to
the lot which bring the lot closer to conformance without coming all the way into
conformance provided it is demonstrated that the minimum density will not be
precluded.
D.Base Densities and Minimum Lot Dimensions.
1. R-2 Zone. Base density for the R-2 zone shall meet the following standards:
a. Minimum lot area for one unit shall be 5,000 square feet, except as allowed in
section 18.2.3.040 for accessory residential units.
b. Minimum lot area for two units shall be 7,000 square feet.
c. Minimum lot area for three units shall be 9,000 square feet, except that the
residential density bonus in subsection 18.2.5.080.F, below, may be used to increase
density of lots greater than 8,000 square feet up to three units.
d. For more than three units, the base density shall be 13.5 dwelling units per acre. The
permitted base density shall be increased by the percentage gained through the
residential density bonus is subsection 18.2.5.080.F.
2. R-3 Zone. Base density for the R-3 zone shall meet the following standards:
a. Minimum lot area for one unit shall be 5,000 square feet, except as allowed in
section 18.2.3.040 for accessory residential units.
b. Minimum lot area for two units shall be 6,500 square feet.
c. Minimum lot area for three units shall be 8,000 square feet.
d. For more than three units, the base density shall be 20 dwelling units per acre. The
permitted base density shall be increased by the percentage gained through the
residential density bonus is subsection 18.2.5.080.F, below.
E. Exceptions.
An accessory residential unit is not required to meet density or minimum lot
area requirements per section 18.2.3.040.
F. Residential Density Bonus.
1. Density Bonus Points Authorized. Except as allowed under chapter 18.3.9 Performance
Standards Option, the permitted base density shall be increased only pursuant to this
section.
2. Maximum DensityBonus Points. The total maximum bonus permitted shall be 60
percent.
3. DensityBonus Point Criteria. The following bonuses shall be awarded:
a. Conservation Housing. The maximum bonus for conservation housing is 15 percent.
4
One hundred percent of the homes or residential units approved for development,
after density bonus point calculations, shall meet the minimum requirements for
certification as an Earth Advantage home, as approved by the Conservation Division
-6.
b. Common Open Space. The maximum bonus for provision of common open space
above the minimum requirement established by this ordinance is ten percent. A one
percent bonus shall be awarded for each one percent of the total project area in
common open space in excess of the base requirement. The purpose of the density
bonus for common open space is to permit areas, which could otherwise be
developed or sold as individual lots, to be developed as a recreational amenity. It is
not the purpose of this provision to permit density bonuses for incidental open
spaces that have no realistic use by project residents on a day-to-day basis.
c. Affordable Housing. The maximum bonus for affordable housing is 35 percent.
Developments shall receive a density bonus of two units for each affordable housing
unit provided. Affordable housing bonus shall be for residential units that are
guaranteed affordable in accord with the standards of section 18.2.5.050.
SECTION 3.
Section 18.3.9.050 \[Performance Standards Option and PSO Overlay
Performance Standards for Residential Developments\] of the Ashland Land Use Ordinance is
hereby amended as follows:
18.3.9.050 Performance Standards for Residential Developments
A. Base Densities.
The density of the development shall not exceed the density established
by this section. The density shall be computed by dividing the total number of dwelling units
by the acreage of the project, including land dedicated to the public. Fractional portions of
the final answer, after bonus point calculations, shall not apply towards the total density.
Accessory residential units are not required to meet the density requirements of this chapter
in accordance with section 18.2.3.040.
1. The base density, for purposes of determining density bonuses allowed under this
section, for developments other than cottage housing, is as provided in Table
18.3.9.050.
Table 18.3.9.050.A.1 Base Densities for Determining Allowable
Density Bonus with Performance Standards Option
Zone Allowable Density
(dwelling units per acre)
WR-2 0.30 du/acre
WR-2.5 0.24 du/acre
WR-5 0.12 du/acre
WR-10 0.06 du/acre
WR-20 0.03 du/acre
RR-1 0.60 du/acre
RR-.5 1.2 du/acre
R-1-10 2.40 du/acre
R-1-7.5 3.60 du/acre
5
R-1-5 4.50 du/acre
R-1-3.5 7.2 du/acre
R-2 13.5 du/acre
R-3 20 du/acre
2. Cottage Housing. The base density for cottage housing developments, for purposes of
determining density bonuses, allowed under this section is as provided in Table
18.3.9.050.A.2.
Table 18.3.9.050.A.2 Base Densities for Determining Allowable Density Bonus with Performance Standards
Option
Minimum
Maximum
number of Minimum lot size
Maximum number of Maximum
cottages per (accommodates
Zones Cottage cottages per Floor Area
cottage minimum number
Density cottage housing Ratio (FAR)
housing of cottages)
development
development
1 cottage
R-1-5,
dwelling unit per
NN-1-5 3 12 7,500 sq.ft. 0.35
2,500 square
NM-R-5
feet of lot area
1 cottage
R-1-7.5 dwelling unit per
3 12 11,250 sq.ft. 0.35
NM-R-1-7.5 3,750 square
feet of lot area
3. CommonOpen Space Required.
a. Required Area. All developments with a base density of ten units or greater shall be
required to provide a minimum of five percent of the total lot area in common open
space, except as required in 18.3.9.A.3.a.i, below.
i. Multifamily and Attached Single-Family Housing. Housing developments subject
to Site Design Review in accordance with subsection 18.5.2.020.B shall provide
a minimum of eight percent of total lot area in open space in accordance with and
meeting the standards in subsection 18.4.2.030.H Open Space.
ii. Density Calculation. All areas set aside for common open space shall be counted
for base density. The required common open space is not subject to bonus point
calculations.
iii. Natural Areas. Common open space may include areas that provide for the
preservation or enhancement of natural features such as wetlands, floodplain
corridors, ponds, large trees, and rock outcroppings.
iv. Ownership and Maintenance. The common open space shall be designated on
the Outline and Final Plan submittals and set aside as common area for the use
of residents of the development. Maintenance of common open space shall be
responsibility of the property owner(s) or by an association of owners (i.e.,
homeowners association).
v. Timing and Phasing. Common open space shall be constructed and landscaped
prior to submission of the final plat or issuance of a building permit, whichever is
6
later. The City may approve a final plat or building permit prior to completion of
required common open space improvements if the applicant provides a bond by
a surety authorized to do business in the State of Oregon, irrevocable letter of
credit from a surety or financial institution acceptable to the City, cash, or other
form of security acceptable to the City. Phased developments shall meet the
requirements of subsection 18.3.9.040.A.4.
b. Dimensional Standards. Common open space shall have no dimension that is less
than 20 feet and a minimum area of 400 square feet, except as outlined below.
i. Pedestrian Connections. Pedestrian walkways and multi-use paths shall
contribute toward meeting the required common open space area when at least
one area meeting the minimum area required in subsection 18.3.9.050.A.3.b,
above, is met. Pedestrian walkways providing access to individual units may not
be counted towards this requirement.
ii. Natural Features. Natural features located in common open space and meeting
the Outline Plan approval criteria in 18.3.9.040.3 shall be counted toward
meeting common open space requirements.
B. Density Bonus Point Calculations.
The permitted base density shall be increased by the
percentage gained through density bonus points. In no case shall the density exceed that
allowed under the Comprehensive Plan. The maximum density bonus permitted shall be 60
percent (base density x 1.6), pursuant to the following criteria.
1. Conservation Housing. A maximum 15 percent bonus is allowed. One-hundred percent
of the homes or residential units approved for development, after bonus point
calculations, shall meet the minimum requirements for certification as an Earth
Earth Advantage program as adopted by resolution 2006-06.
2. Common Open Space. A maximum ten percent bonus is allowed, pursuant to the
following.
a. Purpose. Common open spaces may be provided in the form of natural areas,
wetlands, playgrounds, active or passive recreational areas, and similar areas in
common ownership. However, for the purposes of awarding density bonus points,
the Planning Commission shall consider whether or not the common open space is a
significant amenity to project residents, and whether project residents will realistically
interact with the common open space on a day-to-day basis. The purpose of the
density bonus for common open space is to permit areas, which could otherwise be
developed or sold as individual lots, to be retained in their natural state or to be
developed as a recreational amenity. It is not the purpose of this provision to permit
density bonuses for incidental open spaces that have no realistic use by project
residents on a day-to-day basis.
b. Standard. Developments with fewer than ten units that provide more than two
percent of the project area for common open space, or for developments of ten units
or greater that provide more than five percent common open space, a one percent
bonus shall be awarded for each one percent of the total project area in common
open space.
7
i. Cottage Housing. Common open space provided in cottage housing
developments, meeting the standards of section 18.2.3.090 Cottage Housing, is
not eligible for density bonus points.
ii. Multifamily and Attached Single-Family Housing. Housing developments subject
to Site Design Review in accordance with subsection 18.5.2.020.B shall receive
density bonus points under this section for common open space area in excess
of the required eight percent of total lot area in accordance with the standards in
subsection 18.4.2.030.H Open Space.
3. Affordable Housing. A maximum bonus of 35 percent is allowed. Developments shall
receive a density bonus of two units for each affordable housing unit provided.
Affordable housing bonus shall be for residential units that are guaranteed affordable in
accordance with the standards of section 18.2.5.050 Affordable Housing Standards.
SECTION 4.
Section 18.6.1.030 \[Definitions Definitions\] of the Ashland Land Use Ordinance
is hereby amended to read as follows:
Buildable Area.
That portion of an existing or proposed lot that can be built upon.
Common Area
. Land jointly owned by an association of owners or permanently designated for
the use of all residents of a development to that includes shared site facilities and amenities
such as open space, landscaping, streets, driveways, parking, loading areas, recycling and
refuse disposal areas, and storage structures.
Ground-Floor Dwelling Unit.
A residential unit with the entrance, front or rear, that is within
five feet of the finished grade. The distance to finished grade is measured vertically at a right
angle from the doorsill to the finished grade.
Open Space.
Land or water with its surface predominately open to the sky or predominantly
undeveloped, that is designated or set aside to serve the purpose of providing park and
recreation activities, conserving natural resources, collecting and treating storm water, or
structuring urban development and form (or creating a pattern of development). Open space
does not include common areas such as streets, driveways, parking, loading areas,
recycling and refuse disposal areas, and storage structures.
-
Common Open Space.
An area for the use or enjoyment of all residents of a
development (e.g., multifamily dwelling units) or subdivision consisting mostly of
recreational facilities, community gardens or natural areas. Common open space may
include areas that provide for the preservation or enhancement of natural features such
as wetlands, floodplain corridors, ponds, large trees, and rock outcroppings.
-
Private Open Space.
An area intended for private outdoor use by residents of an
individual dwelling unit. Private open space includes decks, patios, porches, yards, and
similar areas.
8
-
Public Open Space or Park.
An area owned or managed by a public or private agency
and maintained for the use and enjoyment of the general public. Examples of public
open space include public parks and recreation facilities, trail easements and systems,
nature preserves, public plazas and other public outdoor meeting areas.
Park.
See definition of Public Open Space.
Upper-Floor Dwelling Unit.
A residential unit with the entrance, front or rear, that is more than
five feet above the finished grade. The distance from finished grade is measured vertically at
a right angle from finished grade to the doorsill.
Unbuildable Area.
That portion of an existing or proposed lot that building upon is restricted by
regulations. Unbuildable area includes but is not limited to required yards, easements, and
Flood Plain Corridor and Severe Constraints Lands as classified in section 18.3.10.060. For
the purposes of implementing chapter 18.4.8 Solar Access, unbuildable area does not
include a required yard area.
Yard.
An outdoor area of a lot which is unobstructed by a structure, except as allowed in section
18.2.4.050 Yard Requirements and General Exceptions, and measured from a lot line to the
nearest point of a building. May also be an area defined by required setbacks (e.g., between
a building or structure and nearest property line).
-
Yard, Front.
A yard between side lot lines and measured horizontally at right angles to
the front lot line from the front lot line to the nearest point of the building.
-
Yard, Side.
A yard between the front and rear yards measured horizontally and at right
angles from the side lot line to the nearest point of the building.
-
Yard, Rear.
A yard between side lot lines and measured horizontally at right angles to
the rear yard line from the rear yard line to the nearest point of the building.
9