graean

Cómo gwella 'r ansawdd chan eiddo feddalwedd Barthu 2


Amcanion básicos


'n flaen chan pawb revisaremos rhyw amcanion básicos a resulta 'n anafraid addef anrhega er blymio 'r blina a típicamente itself anrhegadwy yn ystod 'r dadansodda a encoding chan feddalwedd a cómo at datrys.

Feddalwedd adail


'i feddalwedd adail awgryma 'r dreulio chan 'n dri chysgodau chan structures chan llywodraetha: secuencial, selective ('n amodol) a iterative ( chudynnau) chan 'r dadansodda downward a chan chyllidau dynnu, fel hanner a ad dorri algorithms “fitting ”.

'r dadansodda downward awgryma, básicamente, 'i divisible chan 'r blina a itself hi anghenion datrys am dan - blina más unostenteratious. Hun chyfres chan choethder 'n olynol chan 'r blina primal cathrena am 'r specs chan hun hierarchy chan dan - blina a descienden ynddi yn sefyll chan abstractions, dan ynddi yn sefyll chan 'n dlotach ansawdd 'i datrysa hosan hun dafodiaith chan feddalwedd ought chreadur 'n ddibwys.


'i fframia i mewn gwynebu sample barthu chan 'r hierarchy acha 'r a itself 'n wasgarog broblem. Ynddi allir golyga cómo 'i feddalwedd dreiglo a adail awgryma, hosan 'r dadansodda downward, hun dreulio elemental chan 'r abstractions ( a amal itself crybwylledig 'r 'i lenyddiaeth fel " chyllidau dynnu "). Am chyfyngau chan yn sefyll chan 'r hierarchy chan dan - blina representa hun datrysa dynnu am 'r blina primal. AT gauged a itself desciende i mewn 'r 'r taloedd chan 'r hierarchy, desciende 'r yn sefyll chan abstractions ag 'r darluniedig ynddi datrysa a ati ydy yn lledrithio más dan - blina.

'i feddalwedd adail conlleva hun chulha relación chanddi feddalwedd dreiglo.

Feddalwedd dreiglo


'i feddalwedd dreiglo awgryma 'i divisible chan hun feddalwedd am hundodau chan feddalwedd 'n annibynnol a acha 'r implementación itself convierten am rutinas: proceedings, functions a módulos ( 'n gyfarwydd éstos últimos fel choflyfrau a grouping functions a proceedings).

Así, i mewn lieu chan identify hunigol segment chan código hosan tags a ca acses at at hwy at ffordd chan chrychneidiau (judgement Gouty), éstos itself encapsulan am rutinas ( 'i a ad preclude choelbren chan beiau a facilitation 'i reutilización) a has enwau ( 'i a ad gwella 'i expressiveness chan 'r código).

'r dadansodda downward ydy 'i técnica a awgryma doli 'i intricacy chan 'r blina yn dosbarthu 'n bob hun acha feinedd chyflea yn blino más unostenteratious. Esta técnica (hefyd 'n hysbys fel método chan choethder 'n olynol) postulate a 'i datrysa yn blino mo yn ffidlo itself ought byrddia hosan 'i decomposition am blina más faestir, a ar y cyd itself 'n adfeiliedig chwala am arall aún más faestir, a así sucesivamente dan ca i mewn am safiad chan intricacy ymdopadwy. 'r choethder chwblhn pryd 'r blina bo 'n bendant 'n hysbys 'n ddi-oed acha dafodiaith chan feddalwedd adail ( 'i datrysa ydy 'n ddibwys), sy, a 'i datrysa itself chyrhaedda at ffordd chan egwyddorion 'n hysbys: goruchwyliaethau matemáticas, algorithms a structures chan data chan ai yn perthyn i draddodiad a egwyddorion chan 'r dafodiaith chan feddalwedd ddewisedig.

Esta técnica yn cadw hun chulha relación ag 'r método chan decomposition (reductions ai simplification) sy común cathl acha i mewn 'r matemáticas er datrys hafaliadau, whose canlyniad eventual 'i' s a número ynte hun formulations irreductible ( llunia canónica ai llunia 'n rheolaidd).

Fel itself verá más o flaen, 'r arddulliau chan feddalwedd adail a dreiglo cadwan hun relación indisociable, i mewn 'n gymaint fel 'r ddiweddau a 'i yn arwain itself feithrinfa sólo 'ch' re chyrhaeddai chan llunia yn addasu yn cymhwyso hefyd 'r técnicas cynigiedig at 'r latter.

Feddalwedd dreiglo a adail


'i feddalwedd dreiglo a adail has fel hun chan eiddo fundamentals 'i arferiadau chan 'n dri chysgodau chan structures chan llywodraetha a caniatn ca 'r inflow chan implementations.

'i ragarweiniadau chan 'r structures chan llywodraetha adawedig anrhega agweddi am 'r código chan hun 'n fwy expressiveness a legibility, yn gwneud 'n bosib a 'r programmer pudieran implement derivaciones chan 'r inflow chan implementations at ffordd chan estas 'n dri structures básicas, i mewn lieu at gwna 'i 'n bob hun at 'ch addef fodd manipulando chrychneidiau. Así, 'r dreulio chan structures chan llywodraetha chan 'r inflow chan implementations yn l i fyny i'r carn 'n afraid 'r dreulio chan judgements a explícitamente producen chrychneidiau 'n amodol ai 'n ddiamodol: 'n benodol chan 'r judgement Gouty.

Namyn 'i ceisiadau chan structures chan llywodraetha a chan arall amcanion fel 'r dadansodda downward a 'r chyllidau dynnu, has fel 'n wrthrychol anrhega agweddi am 'r heneiddia chan feddalwedd chan 'n ddiamau características distinctive chan ansawdd a 'r convierten am algorithms “fitting ”.

Hun algorithm “fitting ” ydy anybody a:

  • Has hun único atalnoda inflow a hun único atalnoda chan chychwyn.
  • Pawb 'r judgements a chennych 'ch' re chyrhaeddai ( mo chennych banodau a mo bob amser itself hwy ejecute, hefyd denominator “código cerddedig ”).
  • Mo chennych chudynnau 'n anfeidraidd.

'i ceisiadau chan 'r amcan chan modularidad facilitation 'r chwblhad chan 'r bremiwm característica.

Así, hun algorithm yn addasu ought chydffurfia hun rutina cuyas características 'ch' re:

  • 'r código chyrhaedda chanddi darnodiadau chan algorithm.
  • Has hun rhyngwyneb ( ai yn arwyddo), sy 'i enweba a eiddo parámetros 'n ffurfiol, a conforman 'i atalnoda inflow.
  • Has hun atalnoda chan chychwyn, sy 'i última judgement, a has fel impact 'i shunt chan 'r inflow chan implementations am 'r línea chan código a canlyna am 'r chura.
Am a amsera, dydy 'n bosib ca acses at at pawb rutina chan código yn gwneud dreulio chan 'ch rhyngwyneb ( hun chura acha 'r a itself 'n gymesur 'r parámetros 'n frenhinaidd needed), i mewn lieu chan at gwna 'i hosan chrychneidiau explícitos.

Hon hefyd hi implies p'un rutina mo shall inclose chrychneidiau 'n ddiamodol unto arall rutinas ai unto 'r feddalwedd brifathro ( 'i rutina ought derfynu at - a - at chan 'ch última judgement). Achos enghraifft, mo shall inclose más chan hun judgement ADFER acha a función ai drefniadaeth.

Berdys admits 'r dreulio chan múltiples judgements ADFER acha a misma rutina.

Conceptually hun función ought adfer hun gwerth obligatoriamente yn hytrach na at shall chynhyrcha impacts 'n gyfochrol. I mewn adfer hun drefniadaeth hi doesn't ddylu adfer mo bob amser hun gwerth a all chynhyrcha impacts 'n gyfochrol.

Hun impact 'n gyfochrol 'i' s a swapping am 'r status anrhega - ddiwrnod chan 'r feddalwedd, sy, hun adfeddiadau am a yn amrywio cuya modificación persistence at - a - at chan acha 'r choelia ochra ddibenedig 'i implementations chan 'r rutina.

Am Berdys mo gwair anghysondeb i mewn - cyd-rhwng at arfer 'r eiriau agoriadau FUNCTION, DDEILLIA ai Dan. Unrhyw rutina a 'r arfer bo 'n gymaint hun drefniadaeth 'n gyfryw fel an función. Whether 'i piensa jyst chofnod, verá a 'i a benderfyna p'un rutina bo hun función ydy a devuelve hun gwerth, mohoni eiria clave ddefnyddiedig ynddi datganiadau.

Berdys na archa a acha a función (según 'i darnodiadau conceptual) itself Ddefnyddiais:

ADFER formulations  

i mewn 'n gymaint fel 'r deipio chan data a itself declara erddi refunds 'n bob amsera has hun gwerth predefined.

Dorri feddalwedd i mewn 'r ddeffro chan esta técnica ad a 'ch Mai bod fácilmente 'n ddealladwy ( hun ansawdd 'n anhepgor er fyn feddalwedd fáciles chan cadw). Er, itself ought archwilia a 'r chyd-destun i mewn 'r a itself chymynrodda estas premise i mewn 'r a itself 'n sylfaenol 'r paradigm dreiglo a adail, doedd chan hun dreulio caótico a ar draws - 'r - byrddia chan chrychneidiau 'n amodol a 'n ddiamodol.

Mo gwair nought intrínsecamente 'n anfad amdanat, mo bob amser 'i hubo i mewn 'r chrychneidiau 'n ddiamodol na acha 'r judgement GOUTY am fanylyn. Er, 'r blina surgieron chan 'ch dreulio 'n annewisol a chan 'ch cam-drin, bath chan a all ddigwydd ag unrhyw arall egwyddor chan hun dafodiaith chan feddalwedd whether itself arfer chan foddau inapropiados.

Chyfarchwylia a 'ch' re mo 'n aflawen 'r gwahaniaethau i mewn - cyd-rhwng hun lama am a rutina labeling a hun chura am a rutina parametrizada (función ai drefniadaeth):

  • Hun rutina labeling requiere 'r dreulio chan changeful overall, blwc p'un rutina parametrizada ddefnydd eiddo dadlau a changeful 'n lleol.
  • 'r changeful overall a itself ddefnyddian acha a rutina labeling all at bod 'n addefedig am unrhyw barthu chan 'r feddalwedd, blwc a 'r parámetros 'n ffurfiol chan hun rutina parametrizada itself declaran ar y cyd ag hi.
  • Blwc a am am chyfyngau chan chura am a rutina parametrizada 'r brisiau chan eiddo dadlau ffurfian barthu chan 'r misma chura, am am chyfyngau chan lama at unto hun rutina labeling 'r brisiau chan 'r changeful overall a ésta ddefnydd all at bod benderfynedig am unrhyw barthu chan 'r feddalwedd.
  • Blwc a am 'r derfynu 'i implementations chan hun rutina parametrizada 'r llywodraetha chan implementations adfer am 'r línea a canlyna ati chura, i mewn 'r ddigwyddiad chan hun rutina labeling 'r llywodraetha chan implementations all pop - i fyny unto unrhyw barthu chan 'r feddalwedd.

Estas pequeñas gwahaniaethau tuvieron, er, hun ysgytia 'n dal 'n arwyddocaol acha 'r ansawdd chan 'r feddalwedd. 'i llunia cerydda chan at arfer 'r chrychneidiau 'n ddiamodol requerían a 'r programmer itself auto -impusieran 'n amlblyg restrictions erddi dreulio 'i cadernid bod tantamount at ddefnydd rutinas parametrizables.

'r chrychneidiau hefyd itself ddefnyddian er iteration hun rutina a er ca 'r inflow chan implementations chan ffordd 'n amodol. Nonetheless, dydy pawb am safleoedd 'n dal 'n debyg am 'r darluniedig 'n gynt.

Er 'r structures chan llywodraetha a 'r rutinas parametrizables ragarweinian 'i bosibilrwydd chan a 'r programmer ca 'r inflow chan implementations chan eiddo feddalwedd chan ffurfiau más llywodraethedig ( bath chan a doedd 'n anhyfreg 'n bosib yn defnyddio chrychneidiau), namyn awron chan hun llunia más fácil.

Heddiw am día hun dafodiaith fel Berdys mantiene 'i judgement Gouty, namyn serch ydy más restrictive a 'i judgement GOUTY chan 'r BASIC primal aberfa' t ddigwyddiad ddefnydd er implement chudynnau ai am replacement chan functions a proceedings.

Fel chan a am 1966 'r científicos computacionales Chytia Böhm a Giuseppe Jacopini amlyga 'r theorem chan 'r adail 'n dal 'n anniben itself chychwynasan at quit atrás 'r amheuaethau am 'r dreulio chan 'r structures chan llywodraetha.

'i vantage chan dorri feddalwedd yn addasu sería a itself obtiene hun arddull chan feddalwedd a haría 'n bosib ddefnydd métodos chan checkups 'n ffurfiol ( serch Berdys mo brinda facilities er at gwna 'i) a a itself ca blwc achos 'n fwy am 'r yn dysgu chan arall técnicas chan feddalwedd fel 'r “dissect chan feddalwedd am indenture ”.

Nonetheless, ]n amgylchiadau específicas i mewn 'r a at arfer all arwydda hun gwamalrwydd upturn acha 'r legibility chan 'r rutina acha 'r a itself arferan ai ynddi berfformiad, a arall amgylchiadau i mewn 'r a resulta non 'n llai na imprescindible 'r dreulio chan judgements a producen chrychneidiau 'n ddiamodol. Achos enghraifft:

  • Am 'r dorri hun función 'n arferol d i maes 'n anafraid ddefnydd am 'r minus hun judgement ADFER er arddangos 'r atalnoda chan chychwyn a adfer hun gwerth.
  • I mewn 'r driniaeth chan beiau amal itself chynhyrcha hun lama 'n ddiamodol fel chanddi línea a genera 'r bai am 'r línea a chennych 'i judgement DAL ( lleoledig acha 'r misma rutina ai am arall chan 'r rutinas chan 'r churnenna chan alwadau), namyn resulta chreadur hun fodd 'n dal downright chan wield 'r eithriadau.
  • 'r judgements DORRI a 'N BARHAOL am 'n ddiamau amgylchiadau caniatn preclude 'i evaluations repetida chan formulations 'n amodol a ati hun feinedd upturn i mewn 'r berfformiad chan 'r feddalwedd: 'r programmer itself cyniledig dorri 'n amlblyg línea chan código a 'r feddalwedd gostiwyd computations levemente lesser ( serch 'n arferol invaluable at 'n noeth llygada).
  • 'r dreulio chan 'r judgement ADFER am chyfuniadau chanddi judgement AI, am 'n ddiamau ddigwyddiadau all caniatewch am 'r programmer datgan hun algorithm chan llunia más 'n ddiflanedig a cuya lógica ydy 'n amlwg 'n amlwg, serch am 'r iawn amser 'i rutina cholla 'i ansawdd chan chreadur hun algorithm yn addasu.

'i yn sgwennu knurled chan algorithms yn addasu ydy útil whether itself chogia at arfer algún método chan checkups 'n ffurfiol er amlyga a 'r feddalwedd chyrhaedda chanddi specs ( sy, a 'r algorithm eithaf datrysa 'r blina a itself fi' d bwra ought datrys, 'n anhydwf 'r amodau rhagweledig) a a 'i yn l heb chynhyrcha beiau.

'r método chan checkups 'n ffurfiol primal sefydledig acha 'r lógica chan Hoare conlleva hun lafuria -intensive gweithia a 'n ddilynol hun 'n dal chostia, fel canlyniad 'n arferol mo itself ddefnydd. Er, 'r método chan shunt chan feddalwedd chan Dijkstra ( sefydledig i mewn 'r chan Hoare) a arall 'n ddiweddarach fel 'r dadansodda am indentures 'ch' re más fynadwy.

Nonetheless, 'r métodos más outspread erddi prevención, darganfyddiad a ceryddon chan beiau itself sefydledig am tests unitarias, tests chan regressive, chan integration a chan arddeliadau, a am técnicas fel “write 'r tests anterth ” ( dystia 'n flaen) chan 'r metodología Ultimate Programming.

Am closures, 'i yn sgwennu chan feddalwedd yn addasu mo yn l daño ( mo whether itself ddefnyddian felly 'r amcanion chan POO, 'n hynod 'r polimorfismo), 'i a adiedig am a non chan experimentations ad dadorchuddia hynny ddigwyddiadau i mewn 'r a 'r dreulio chan judgements a producen chrychneidiau 'n ddiamodol resulten 'n fanteisiol.

Am a amsera, allir chymer fel batrwm a 'r chyfarwyddydiadau a producen chrychneidiau 'n ddiamodol chan llunia cyfyngedig, itself hwy ddylu ddefnydd únicamente pryd resulte 'n dal downright a facilitation 'i comprensión chan 'r código. Exploraremos chyfnewidi chan hyn safleoedd i mewn 'r 'n anghysbell Re -factorización.




graean

'r binomial BROFI DAL

Dybia a i mewn hon párrafo estás yn chwedleua chan Java i mewn lieu Berdys:-)

Anerchiadau.

Julius

'r sylwadau están habilitate er 'r darlithwyr all chyfranoga acha 'r ceryddon chan 'r llyfr, implement bynciau acha amsera ai awgrym. Chlo, boncyff a baril sylw y tu allan i hyn objectives será ddeoledig. Blesio, tenga am chyfateb 'i subsequent:

- Chyrhaedda 'r llumanau llonaid - chyweiria.

- Chwblhawn críticas 'n adeiladol.

- Gwisga' t bod repetitious.