本文为【养成良好的Perl OOP习惯】的汉字拼音对照版显示拼音
假jia如ru你ni曾zeng经jing用yongPerl开kai发fa过guo应ying用yong程cheng序xu,那na你ni可ke能neng用yong过guo很hen多duo程cheng序xu模mo块kuai。而er且qie你ni还huan可ke能neng天tian天tian用yong到dao这zhe些xie程cheng序xu包bao的de面mian向xiang对dui象xiang接jie口kou。但dan是shi,假jia如ru你ni像xiang那na些xie普pu通tong的dePerl程cheng序xu员yuan一yi样yang,在zai开kai发fa自zi己ji的de代dai码ma时shi都dou不bu试shi着zhe使shi用yong面mian向xiang对dui象xiang技ji术shu。那na么me,这zhe篇pian文wen章zhang可ke以yi帮bang助zhu你ni成cheng为wei一yi位wei习xi惯guan面mian向xiang对dui象xiang编bian程cheng的dePerl开kai发fa者zhe。OOP速su成cheng
面mian向xiang对dui象xiang编bian程cheng(OOP)的de基ji本ben思si想xiang非fei常chang简jian单dan,说shuo不bu定ding你ni可ke能neng已yi在zai有you限xian场chang合he下xia用yong过guo这zhe种zhong技ji术shu了le。所suo谓wei对dui象xiang不bu过guo是shi数shu据ju的de集ji合he,而er这zhe些xie数shu据ju又you千qian丝si万wan缕lv地di联lian系xi在zai一yi起qi。不bu妨fang考kao虑lv下xia面mian的de例li子zi:假jia设she某mou个ge哈ha希xi散san列lie装zhuang载zai的de是shi说shuo明ming球qiu类lei特te性xing的de数shu据ju,这zhe样yang哈ha希xi散san列lie的de键jian(key)就jiu可ke能neng牵qian扯che到dao球qiu的de颜yan色se、直zhi径jing以yi及ji制zhi造zao材cai料liao等deng。而erOOP的de方fang法fa(method)只zhi是shi处chu理li每mei个ge球qiu类lei数shu据ju的de哈ha希xi散san列lie子zi程cheng序xu,这zhe种zhong子zi程cheng序xu在zai操cao作zuo每mei个ge球qiu有you关guan数shu据ju时shi会hui采cai用yong相xiang应ying的de定ding义yi字zi段duan。
什shen么me是shi哈ha希xi散san列lie?
小xiao型xing的de哈ha希xi散san列lie基ji本ben上shang不bu会hui占zhan用yong什shen么me内nei存cun,对dui系xi统tong的de性xing能neng不bu会hui有you大da的de影ying响xiang,你ni完wan全quan可ke以yi放fang心xin地di用yong它ta们men把ba对dui象xiang数shu据ju归gui拢long到dao一yi起qi来lai。假jia如ru你ni不bu知zhi道daoPer语yu言yan中zhong的del哈ha希xi数shu组zu(也ye叫jiao作zuo联lian合he数shu组zu),那na你ni可ke没mei好hao好hao利li用yongPerl。普pu通tong的de数shu组zu结jie构gou按an照zhao数shu据ju的de位wei置zhi命ming名ming单dan个ge条tiao目mu;而er在zai哈ha希xi数shu组zu里li,你ni能neng给gei条tiao目mu命ming名ming(叫jiao作zuo键jian:key)。其qi实shi不bu妨fang把ba哈ha希xi散san列lie想xiang象xiang为wei一yi个ge小xiao数shu据ju库ku。给gei出chu一yi个ge名ming字zi就jiu可ke以yi通tong过guo它ta查cha出chu一yi条tiao记ji录lu。Perl编bian程cheng时shi在zai命ming令ling行xing上shang运yun行xing“perldocperldata”可ke以yi查cha阅yuePerl数shu据ju类lei型xing和he结jie构gou的de有you关guan文wen档dang。
OOP不bu仅jin仅jin只zhi把ba你ni的de数shu据ju和he子zi程cheng序xu组zu织zhi为wei互hu相xiang关guan联lian的de集ji合he,它ta还huan保bao证zheng了le对dui象xiang及ji其qi方fang法fa实shi际ji连lian接jie的de编bian译yi和he运yun行xing(runtime)时shi。那na样yang,你ni就jiu不bu必bi直zhi接jie调tiao用yong哈ha希xi数shu组zu的deball_volume值zhi了le。OOP语yu言yan还huan进jin一yi步bu的de提ti供gong了le莫mo大da的de好hao处chu,OOP语yu言yan简jian化hua了le编bian程cheng句ju法fa而er且qie为wei声sheng明ming复fu杂duo的de、对dui象xiang-对dui象xiang关guan系xi提ti供gong了le大da量liang的de其qi它ta特te性xing。
在zai最zui简jian单dan的de情qing况kuang下xia,每mei个ge对dui象xiang都dou会hui告gao诉suPerl它ta是shi什shen么me种zhong类lei的de对dui象xiang,这zhe样yang,只zhi有you知zhi道dao如ru何he安an全quan地di操cao作zuo该gai对dui象xiang的de子zi程cheng序xu才cai会hui被bei调tiao用yong。开kai发fa人ren员yuan则ze只zhi需xu使shi用yong方fang法fa的de名ming字zi即ji可ke。假jia如ru你ni调tiao用yongbook对dui象xiang的devolume值zhi,它ta会hui告gao诉su你ni目mu前qian该gai数shu值zhi该gai图tu书shu数shu据ju中zhong的de位wei置zhi而er不bu会hui告gao诉su你ni它ta真zhen正zheng占zhan用yong了le多duo少shao体ti积ji空kong间jian。
习xi惯guan #1 :使shi用yong哈ha希xi散san列lie
请qing把ba相xiang关guan的de数shu据ju通tong过guo小xiao哈ha希xi散san列lie收shou集ji起qi来lai。以yi前qian你ni可ke能neng创chuang建jian过guo诸zhu如ru$red、$green以yi及ji$blue之zhi类lei的de一yi整zheng套tao变bian量liang。但dan不bu久jiu你ni就jiu熟shu悉xi到dao你ni需xu要yao2或huo3个ge集ji合he把ba这zhe些xie变bian量liang修xiu改gai为wei$a_red、$b_red、$c_red来lai区qu别bie不bu同tong对dui象xiang的de属shu性xing,对dui绿lv色se(green)和he蓝lan色se(blue)变bian量liang也ye同tong样yang如ru此ci。所suo以yi请qing把ba这zhe9个ge变bian量liang修xiu改gai为wei% a_color、% b_color和he%c_color的de3个ge哈ha希xi散san列lie,而er把bar、g和heb选xuan作zuo参shen数shu。
在zaiCPAN内nei,几ji乎hu每mei一yi个ge模mo块kuai都dou封feng装zhuang成cheng了le哈ha希xi散san列lie。把ba成cheng组zu关guan联lian的de数shu据ju包bao含han在zai哈ha希xi散san列lie内nei是shi一yi种zhong优you秀xiu的de面mian向xiang对dui象xiang编bian程cheng技ji术shu。这zhe样yang做zuo的de话hua你ni声sheng明ming的de变bian量liang就jiu少shao多duo了le,数shu据ju也ye组zu织zhi得de更geng为wei合he理li。同tong时shi还huan提ti高gao了le可ke靠kao性xing,因yin为wei诸zhu如ru$boy{height}之zhi类lei的de变bian量liang实shi际ji上shang自zi身shen就jiu包bao含han了le明ming显xian的de含han义yi。清qing单danA即ji是shi一yi例li。
习xi惯guan #2 :使shi用yong子zi程cheng序xu
下xia一yi个ge好hao习xi惯guan是shi使shi用yong子zi程cheng序xu来lai围wei绕rao那na些xie数shu据ju集ji合he组zu织zhi你ni的de代dai码ma。尽jin量liang地di把ba哈ha希xi散san列lie上shang成cheng块kuai代dai码ma分fen组zu到dao子zi程cheng序xu里li。保bao证zheng你ni传chuan递di的de是shi集ji合he而er非fei单dan个ge的de值zhi。调tiao用yonginvert_new ( \%color )显xian然ran比bi调tiao用yonginvert_old (\$reda , \$greena , \$bluea );更geng合he理li。至zhi少shao你ni不bu需xu要yao记ji得de参shen数shu的de顺shun序xu。
子zi程cheng序xu把ba代dai码ma组zu织zhi得de更geng有you逻luo辑ji了le;程cheng序xu宛wan如ru从cong子zi程cheng序xu文wen件jian的de头tou顶ding略lue过guo而er底di下xia的de工gong作zuo全quan然ran不bu知zhi。可ke以yi把ba所suo有you的de变bian量liang都dou传chuan递di给gei子zi程cheng序xu,重chong用yong代dai码ma就jiu轻qing松song多duo了le,新xin的de程cheng序xu使shi用yong不bu同tong的de全quan局ju变bian量liang,而er其qi中zhong某mou些xie全quan局ju变bian量liang还huan用yong于yu其qi他ta完wan全quan不bu同tong的de用yong途tu。至zhi少shao小xiao型xing的de子zi程cheng序xu在zai调tiao试shi的de时shi候hou也ye方fang便bian多duo了le,在zai这zhe种zhong情qing况kuang下xia,所suo有you你ni需xu要yao了le解jie的de代dai码ma刚gang好hao占zhan一yi屏ping(参shen看kan程cheng序xu清qing单danB)。看kan,这zhe有you多duo方fang便bian!
习xi惯guan #3 :重chong用yong
第di3个ge良liang好hao的deOOP习xi惯guan是shi把ba子zi程cheng序xu收shou集ji起qi来lai放fang进jin一yi个ge单dan独du的de文wen件jian供gong以yi后hou再zai次ci使shi用yong他ta们men。你ni还huan应ying该gai精jing制zhi它ta们men使shi之zhi能neng用yong于yu一yi般ban用yong途tu。此ci外wai还huan应ying该gai在zai多duo个ge脚jiao本ben中zhong使shi用yong这zhe些xie子zi程cheng序xu而er且qie对dui它ta们men不bu断duan地di进jin行xing调tiao试shi。现xian在zai你ni不bu妨fang把ba采cai用yong某mou个ge特te定ding哈ha希xi散san列lie的de所suo有you的de子zi程cheng序xu都dou组zu合he进jin一yi个ge文wen件jian,这zhe就jiu算suan走zou出chu了le重chong用yong代dai码ma的de第di1步bu。
采cai取qu以yi上shang的de做zuo法fa只zhi需xu把ba子zi程cheng序xu放fang进jin某mou个ge文wen件jian,再zai使shi用yong的de时shi候hou采cai用yong“require”要yao害hai词ci即ji可ke。已yi经jing不bu用yong的de子zi程cheng序xu就jiu别bie这zhe么me做zuo了le;那na纯chun粹cui是shi浪lang费fei时shi间jian。保bao证zheng它ta们men能neng工gong作zuo就jiu行xing了le。清qing单danC是shi一yi个ge比bi较jiao不bu错cuo的de例li子zi。
习xi惯guan #4 :保bao护hu哈ha希xi散san列lie
保bao护hu你ni的de哈ha希xi散san列lie。不bu要yao直zhi接jie创chuang建jian哈ha希xi,最zui好hao是shi对dui用yong来lai创chuang建jian哈ha希xi的de数shu据ju进jin行xing再zai次ci检jian查cha之zhi后hou添tian加jia一yi个ge返fan回hui哈ha希xi散san列lie索suo引yin的de子zi程cheng序xu。然ran后hou,再zai添tian加jia一yi些xie微wei小xiao的de子zi程cheng序xu返fan回hui哈ha希xi散san列lie中zhong的de各ge个ge值zhi以yi便bian安an全quan地di修xiu改gai它ta们men。这zhe些xie代dai码ma示shi例li如ru清qing单danD所suo示shi。
这zhe样yang处chu理li小xiao子zi程cheng序xu,可ke以yi让rang你ni在zai改gai变bian规gui则ze的de时shi候hou可ke以yi更geng轻qing易yi找zhao出chu错cuo误wu所suo在zai。所suo以yi,不bu要yao在zai程cheng序xu中zhong编bian写xie那na些xie修xiu改gai哈ha希xi散san列lie的de代dai码ma,你ni应ying该gai把ba这zhe些xie代dai码ma移yi到dao函han数shu库ku中zhong去qu。
益yi处chu
以yi上shang这zhe些xie建jian议yi归gui根gen结jie底di就jiu是shi一yi句ju话hua:哈ha希xi散san列lie把ba数shu据ju关guan联lian了le起qi来lai,编bian写xie采cai用yong整zheng个ge哈ha希xi散san列lie的de子zi程cheng序xu,把ba联lian系xi某mou一yi哈ha希xi散san列lie的de子zi程cheng序xu收shou集ji到dao一yi个ge简jian单dan的de库ku内nei,保bao护hu你ni的de哈ha希xi散san列lie库ku。这zhe些xie小xiao技ji巧qiao几ji乎hu没mei有you增zeng加jia什shen么me工gong作zuo量liang但dan却que具ju有you极ji好hao的de组zu织zhi性xing。但dan这zhe些xie工gong作zuo在zai你ni创chuang建jian面mian向xiang对dui象xiang的de模mo块kuai时shi占zhan了le90%以yi上shang的de比bi重chong。
假jia如ru你ni保bao证zheng哈ha希xi索suo引yin首shou先xian发fa送song给gei了le每mei个ge子zi程cheng序xu。而er且qie你ni只zhi通tong过guo库ku函han数shu同tong哈ha希xi散san列lie内nei部bu打da交jiao道dao,那na么me你ni基ji本ben上shang只zhi需xu要yao为wei你ni的de模mo块kuai起qi个ge名ming字zi即ji可ke。这zhe样yang就jiu让rang Perl 知zhi道dao它ta应ying该gai把ba你ni的de哈ha希xi散san列lie当dang作zuo一yi个ge对dui象xiang。你ni的de代dai码ma库ku要yao变bian成cheng模mo块kuai甚shen至zhi很hen可ke能neng不bu需xu要yao20行xing代dai码ma。【原文】