Programiranje

Učenje in izboljšanje vaših veščin za odpravljanje napak

Programerji namesto pisanja kode porabijo velik odstotek časa za odpravljanje napak. Verjetno ste se nekaj izobraževali pri učenju jezika ali ogrodja - kako pa ste se naučili odpravljati napake v svoji programski opremi?

Ko ste se zaljubili v programiranje (ali ste se vsaj odločili, da gre za plačljivo kariero), ste verjetno o njem razmišljali kot o ustvarjalnem prizadevanju. Oblikovali bi odlično programsko opremo, napisali kodo in puf!- prvič bi popolnoma delovalo.

Ja. Prav.

V resničnem svetu ste porabili veliko časa za razhroščevanje kode in ne za pisanje novih stvari. Prepričan sem, da bi lahko našel nekaj nejasnega odstotka časa razvijalca, ki je namenjen odpravljanju napak in ne ustvarjanju novih funkcij, vendar dvomim, da morate slišati številko. Preprosto si lahko predstavljate dneve, ki ste jih porabili za iskanje hrošča iz pekla, in njegove učinke na urnik vašega projekta.

Zdaj obstaja veliko načinov, kako se programerji lahko in se naučijo novih veščin programske opreme, ne glede na to, ali gre za branje knjige, udeležbo na tehnični konferenci ali obisk spletnih mest, kot je JavaWorld.com. (Precej vesel sem, da slednje storite.) Vendar pa se ta običajno osredotočajo na orodja, kot so jeziki ali okviri, in ne na metatehnike, na primer "Kako najti to napako v dveh urah namesto v dveh dneh." Jeziki lahko pridejo in odidejo, razhroščevalniki IDE pa tudi, toda sposobnost zaznavanja, pod katerim kamnom se skriva vaš hrošč, vam bo ostala za vedno.

Velik del spretnosti učenja razhroščevanja so seveda izkušnje. To so morda vaše izkušnje ali priložnost, da postanete skakalec na nogah glavnega programerja. Sumim tudi, da imajo nekateri ljudje prirojeno nadarjenost za odpravljanje težav (enako pomembno, da popravijo pokvarjen avto kot neprimerno aplikacijo), in tisti, ki tega ne delamo, lahko samo zavidajo.

Vendar nekaj tega se lahko naučimo. Na primer, mojstrski programer mojega znanca je imel aksiom: če že (razmeroma) dolgo iščete napako in je ne najdete, je rekel: "Iščete na napačnem mestu." Očitno zveneče, vsekakor pa resnično ... in kako pogosto ste izgubljali čas z iskanjem modula XYZ, ko je bila težava povsem drugje?

Več razvijalcev sem vprašal, kako so se naučili ali izboljšali svoje sposobnosti za odpravljanje napak. Presenetljivo veliko jih je govorilo o obvladanju razhroščevalnika IDE ali o kakšnem drugem znanju orodij, toda večina tega, kar sem hotel vedeti, je njihov nasvet o izboljšanju zmožnosti odpravljanja napak. Tu je kratek povzetek njihovih odgovorov.

  1. Bodite disciplinirani. Razvijanje napak je po besedah ​​enega razvijalca postopek, ki ni vrsta naključnih dogodkov. Ne naključno prilagajajte gumbov; sledite postopku izvajanja kode. Tako kot popravljanje kosilnice, je dejal. Ali del A dobi potrebne podatke? Kaj pa izhod? Če je v redu, pojdi naprej.
  2. Če želite izboljšati svoje veščine, raje odpravite napake kode drugih ljudi kot svoje. Napake v predpostavkah druge osebe boste lažje videli kot svoje. To lahko storite kot del medsebojnega pregleda kode in medsebojnega odpravljanja napak. Hitreje boste razvili sposobnost prepoznavanja pogostih vzrokov za napake, je obljubil en razvijalec in vas naučil prepoznati (in opustiti) lastne slabe razvojne prakse.
  3. Pretvarjajte se, da ste prevajalnik. Poiščite in popravite čim več napak, preden pritisnete gumb za sestavljanje. Medtem ko večina sodobnih IDE vključuje integrirane razhroščevalnike (na primer Visual Studio's Intellisense), se boste iz njihove avtomatizacije naučili manj kot pri zavestnem pregledu procesa. (Enako se nikoli ne boste naučili pravilno črkovati, tako da se za vse delo zanesete na preverjalnik črkovanja.)
  4. Naučite se odpravljati napake čim prej v razvojnem procesu. To bi lahko pomenilo nekaj formaliziranega, na primer testni razvoj. To pomeni tudi, da namesto kodiranja namenite čas razhroščevanju vašega dizajna.
  5. Odpravljanje napak je najlažje, če lahko celoten sistem držite v glavi. Ne naredite napake, če se osredotočite samo na en del aplikacije. Bodite pozorni na medsebojne odnose med moduli. Preberite kodo na več ravneh abstrakcije, je svetoval neki programer. "Iskanje napake je najtežje in je treba jasno razumeti, kaj počne več kosov kode," je dejala.
  6. Menim, da je del istega nasveta tudi nekdo drug: dobro razumejte sistem eno stopnjo od tistega, s čimer delate. "Če odpravljate napake na sistemskem programu C, vam pomaga vedeti nekaj sklopov in nekaj o OS," je pojasnil vodilni inženir sistemske programske opreme. "Če odpravljate napake v aplikaciji J2EE, vam bo pomagalo vedeti nekaj o nitih Java, RMI in GC." V mnogih primerih je poudaril, da sporočila o napakah prihajajo s te ravni navzdol. "Če lahko razumete, kaj to pomeni, vam bo pomagalo ugotoviti, kaj gre na vaši ravni abstrakcije," je pojasnil.

Nekaj ​​razvijalcev je priporočilo tudi dodatne vire. Med njimi je knjiga Davida Agana, Odpravljanje napak, ki obljublja devet nepogrešljivih pravil, in Zakaj programi ne uspejo: Priročnik za sistematično odpravljanje napak, ki bo kmalu izšla v drugi izdaji. Razvijalec, ki je slednje priporočil, pravi, da uči sistematičnega pristopa k odpravljanju napak z veliko praktičnimi primeri. Drugi je predlagal spletni esej Deset spretnosti zelo učinkovitih preizkuševalcev programske opreme.

Všeč so mi vsi ti odgovori, vendar sumim, da je treba deliti več modrosti. Kako ste pridobili svoje veščine za odpravljanje napak? Kako ste pomagali drugim izboljšati svoje?

To zgodbo "Učenje in izboljšanje vaših veščin za odpravljanje napak" je prvotno objavil JavaWorld.

$config[zx-auto] not found$config[zx-overlay] not found