Dalfynta: Canfod ar Dy Ben Dy Hun
Canllaw ymarferol i ddalfynta heb ofyn i rywun arall yn gyntaf — sut i ynysu, dilysu, a gwir ddeall eich chwiorydd.
Mae mwyafrif dechreuwr yn trin clwyf fel wal. Maen nhw'n ei daro, yn stopio, ac yn gofyn i rywun arall ddringo drosti drostynt. Yr arferiad sy'n adeiladu sgiliau go iawn yw gwahanol: rwyt ti'n dysgu trin clwyf fel cwestiwn sydd ag ateb y gellir ei ganfod, ac rwyt ti'n mynd i'w ganfod cyn i ti fynd i ofyn.
Darllena'r neges gwall fel petai'n dystiolaeth, nid sŵn
Mae stack traces yn cael eu hepgor yn gyson am eu bod yn edrych yn frawychus. Ond maen nhw fel arfer yn dweud wrthot ti yn union ble a pham y torrodd rhywbeth. Os oes gennych chi TypeError: 'NoneType' object is not subscriptable mewn Python, nid yw hynny'n rwtsh hap — mae'n golygu bod newidyn y digwyliaist ei fod yn dal rhestr neu dict yn wir None. Mae'r rhif llinell yn dweud wrthot ti ble. Dy dasg di yw olrhain yn ôl o'r llinell honno a darganfod ble'r dylai'r gwerth fod wedi ei osod ond nid oedd.
Gwnewch hyn cyn chwilio unrhyw beth ar-lein: darllenwch linell olaf y traceback yn gyntaf, yna gweithiwch i fyny. Mae'r llinell olaf fel arfer yn enwi'r eithriad gwirioneddol. Mae'r llinellau uchod yn dangos yr gadwyn alw a'ch dug chi yno.
Cynhyrchu ar bwrpas
Os mai clwyf sy'n digwydd ond weithiau, nid wyt ti'n ei ddeall eto. Cyn cyffwrdd â chod, ceisiwch ei gwneud i ddigwydd yn ddibynadwy. Newidiwch un mewnbwn ar y tro. A yw'n methu gyda rhestr wag ond nid un llawn? A yw'n methu dim ond ar yr ail alwad i swyddogaeth, nid y gyntaf? Clwyf y gellir ei gynhyrchu ar alw yw clwyf sy'n 80% wedi'i ddatrys, oherwydd nawr gallwch chi brofi a yw trwsiad yn gweithio go iawn yn lle dyfalu.
Torri'r broblem yn hanner, yna hanner eto
Nid yw chwilio deuaidd dim ond ar gyfer aracau didrefn — dyma'r ffordd gyflymaf i ganfod cod toredig mewn swyddogaeth hir neu bibelyn. Sylwadwch neu osgowch yr ail hanner o'ch rhesymeg a gwiriwch a yw'r hanner cyntaf yn dal i gynhyrchu'r clwyf. Os ydy, mae'r broblem yn yr hanner cyntaf. Os na, mae yn yr ail. Ailadroddwch. Mae hyn yn gweithio ar gyfer sgript 200-llinell cystal ag y mae'n gweithio ar gyfer bibelyn data aml-cam lle'r ydych chi'n gwirio allbynnau ar bob cam gyda print() neu df.head().
Mae hyn yn well na newid llinellau ar hap ac ailredeg, sef yr hyn y mae mwyafrif y bobl yn ei wneud o dan bwysau ac mae'n gwastraffu llawer mwy o amser nag y mae'n ei arbed.
Defnyddio'r dalfynwr yn lle print() pan fydd print() yn stopio gweithio
Mae datganiadau print() yn iawn ar gyfer achosion syml, ond unwaith yr ydych chi'n ymlid cyflwr ar draws galwadau swyddogaeth lluosog, mae dalfynwr gwirioneddol yn arbed amser go iawn. Mewn Python, gosodwch import pdb; pdb.set_trace() yn union cyn y llinell amheus, rhedeg y sgript, ac mae gennych chi ostyngiad byw lle gallwch chi arolygu newidynnau, cam-by-step llinell gyda n, a chamau i mewn i alwadau swyddogaeth gyda s. Mae dalfynwr adeiledig VS Code yn gwneud yr un peth gyda thorwyntiau y gallwch chi glicio yn hytrach na theipio. Naill ffordd, yr un nod sydd: gwyliwch gyflwr gwirioneddol eich rhaglen yn lle dyfalu beth y mae'n debyg ei bod.
Ynysu oddi wrth weddill eich prosiect
Os yw clwyf yn digwydd tu mewn i godebase mawr, peidiwch â dalfynta iddo tu mewn i'r codebase mawr. Copïwch y swyddogaeth berthnasol i ffeil newydd gyda mewnbwn ffug, lleiaf sy'n sbarduno'r un methiant. Os yw'r clwyf yn diflannu, rhywbeth am y cyd-destun amgylchynol — newidyn byd-eang, mewnforiad, cyflwr hen — yw'r gwir achos, ac rydych chi newydd ddysgu rhywbeth pwysig. Os yw'r clwyf yn parhau mewn ynysiad, mae gennych chi nawr achos bach, rhanadwy, trawiadwy, ac rydych chi'n llawer yn agosach at y trwsiad gwirioneddol.
Gwirio'ch tybiaethau yn erbyn realiti, nid cof
Mae rhan enfawr o amser dalfynta yn mynd i dybiaethau heb eu holi:
Ysgrifennwyd yr erthygl hon gyda chymorth AI, a'i hadolygu a'i chyhoeddi gan Michal Pilch (CISSP), Korra Studio.
Dyma un nodyn o'r gronfa wybodaeth Korra Studio — mae'r platfform yn paru pob pwnc ag 1-i-1 mentora.
Dechrau am ddimarrow_forward