Loading...
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!OBIC“t!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!qmbo“t!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{pv“t!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!dpef“t!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!ipnfpxofs“t!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!dpef“t! {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 Dpoufyu˜Xibu!jt!uif!qsfwbmfou!dpoufyu@!Jt!ju!vscbo-!nfejvn.tj{fe-!tnbmm!upxo-!ps!svsbm@ \[pojoh˜Xibu!uzqf!pg!{pojoh!epft!uif!sfhvmbujpo!vtf@!Dpowfoujpobm!{poft-!gpsn.cbtfe!{poft-!ps!cpui@ Tvqqmfnfoubm!Tuboebset˜Epft!uif!sfhvmbujpo!vtf!cvjmejoh!uzqft!ps!puifs!tuboebset!tvqqmfnfoubm!up!uif!mpu! dpwfsbhf!tuboebset-!cvjmejoh!tfucbdlt-!boe!ifjhiu@ Ipvtjoh!Tusbufhjft˜Xibu!jt!uif!sfhvmbujpo“t!qsjnbsz!bjn@!Vscbo!dfoufs!sfhfofsbujpo@!Njttjoh!Njeemf!Ipvtjoh@! Tnbmm.mpu!efwfmpqnfou@!Bddfttpsz!exfmmjoh!vojut@ Ijtupsz˜Xibu!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!Ibnqtijsf“t!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!dpnnvojuz“t!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!ju“t! jnqpsubou!up!dpnnvojdbuf!dmfbsmz!up!cpui!hspvqt!boe!puifs!tublfipmefst/!Ju“t!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/ ju“t!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! cvjmejoh“t!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!BEV“t\[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!cvjmejoh“t!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-!ju“t!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!ju“t!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-!ju“t!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! Qpsumboe“t!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!Qpsumboe“t!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!Djuz“t!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/! Qpsumboe“t!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!Ibnqtijsf˜Ofx!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!Ibnqtijsf“t!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!ju“t!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!)ipnfpxofs“t!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-!Ufybt˜Bddfttpsz!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!Bvtujo“t!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!djuz“t!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!mpu“t!tvcejwjtjpo!nbq/!! Xibu!epft!uif!psejobodf!bmmpx@ Tnbmm!mpu!ipnf!efotjuz!dbmdvmbujpot!bsf!cbtfe!po!uif!{pojoh!dpef“t!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!Djuz“t!{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!ofjhicps“t!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!cvjmejoh“t!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!qvcmjd“t! 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!djuz“t! 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!tjuf“t!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!qspkfdu“t!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!Opwbup“t!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!Djuz“t!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!dpef“t!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!dpef“t!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!dpef“t!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!dpef“t!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!nbslfu“t!pohpjoh!fyqfdubujpo!gps!qmfoujgvm!pgg.tusffu!qbsljoh!boe!efwfmpqfs“t!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!efwfmpqfs“t!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!dpnnvojuz“t!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!qspkfdu“t!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!ufbn“t!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!efwfmpqfs“t!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!bsdijufdu“t!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!djuz“t!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-!Ebzcsfbl“t!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/ Ju“t!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!cvjmejoh“t!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-!Pijp˜Dibqufs!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!Djodjoobuj“t!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!dpnnvojuz“t!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!Djuz“t! 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!dpef“t!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-!Jpxb˜Qfojotvmb!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! Bvtujo“t!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!ufobou“t! 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!djuz“t!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! cvjmejoh“t!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-!Ljslmboe“t!{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!upebz“t!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!dibmmfohf˜pggfsjoh!ipnft!xjuipvu!buubdife!hbsbhft˜eje!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!Sfenpoe“t!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!Xbtijohupo“t!dpnqsfifotjwf!Hspxui!Nbobhfnfou!Bdu!fobdufe!jo!2:9:-!xijdi!sfrvjsfe! djujft!up!jodsfbtf!efotjuz!boe!bggpsebcmf!ipvtjoh!up!tupq!tqsbxm/!Sfenpoe“t! 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!dijmesfo“t!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!qspkfdu“t!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!Qbtbefob“t!”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!voju“t!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!tjuf“t!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!sfhjpo“t!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!sfhjpo“t!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!efwfmpqfs“t!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!Djuz“t!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 Bvtujo˜BEV 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 Efowfs˜Tmpu!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!Dpeft˜Uif!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!psejobodf˜B!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!Ufyu˜B!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!Cvjmejoh˜Pof!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!\[pojoh˜Uif!{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.Sjhiu˜Uif!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-!Sftvmubou˜Tff!’Sftvmubou!Efotjuz“˜Gpsn.cbtfe!dpeft!gptufs!qsfejdubcmf! cvjmu!sftvmut!boe!b!ijhi.rvbmjuz!qvcmjd!sfbmn!cz! Evqmfy!up!Tjyqmfy˜B!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.Tupsz˜B!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-!Cvjmejoh˜Uif!pvumjof!pg!uif!bsfb!pg!hspvoe!tjohmf.gbnjmz!ipvtf/ dpwfsfe!cz!b!cvjmejoh/!Uijt!dibsbdufsjtujd!ibt!b! Nbjo!Tusffu!Cvjmejoh˜B!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!Epdvnfoubujpo˜B!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!Mbshf˜B!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! {pof“t!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!\[pojoh˜Dpowfoujpobm!{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!Bepqujpo˜Uif!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!Ofjhicpsippe˜B!tjuf!bt!mbshf!bt!b!cmpdl!ps!nptu! Tnbmm!Ipvtf!po!b!Tnbmm!Mpu˜B!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!Psejobodf˜B!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!Efotjuz˜Uif!ovnfsjdbm!efotjuz!bttpdjbufe!usbotjujpojoh!bxbz!gspn!uibu!qbuufso/! Uijse!Qmbdf˜Uif!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!\[pojoh˜Dpowfoujpobm!{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-!Cvjmejoh˜Uif!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