Kuidas kasutada Pharo silurit

Smalltalkis on silur diagnostiline tööriist tarkvara puuduste või vigade uurimiseks. Kuid erinevalt teiste keelte siluritest saab Smalltalki silurit kasutada ka programmeerimiseks, see tähendab teie avalduse kirjutamiseks! See võib olla tohutult mugav ja võimas lähenemine programmeerimisele.

Illustreerime seda näitega. Meil on tõesti lihtne klass nimega #Counter:

Objekti alaklass: #Counter
   instanceVariableNames: 'loendama'
   classVariableNames: ''
   pakett: 'Tutorial'
Counter >> lähtestatakse
   arv: = 0
Counter >> addOne
   loendama: = loendama - 1
Counter >> loendus
   ^ loendama
Loendur >> arv: c
   arv: = c

Siluri kutsumiseks on mitu viisi:

  1. Teie programmis ilmneb selline saatuslik tõrge nagu „ei saanud sõnumist nii-ja-nii aru”
  2. Tõstke mänguväljal esile mõni avaldis ja paremklõpsake nuppu Debug it (või vajutage klahvi Ctrl-Shift-D)
  3. Kui lisate oma koodi avalduse „Peata kohe”, ilmub siluri avalduse käivitamisel hüpik

Teostagem järgmine mänguväljal:

Vastu uus lisa

Kui kontrollite seda (tõstke esile ja paremklõpsake nuppu „Kontrolli seda”), näete, et loenduri väärtus on -1, mitte see, mida me ootasime.

Saame seda siluda (uurida), sisestades siluri (paremklõpsake valiku Debug it valimiseks).

Pange tähele, et paane on kolm. Pakk Korstna on koht, kus näete oma programmi täielikku täitmise “korstnat”. (Pinu on andmestruktuur, mida kasutatakse selle jälgimiseks, milliseid funktsioone või meetodeid teie programmis praegu täidetakse. Seda nimetatakse pinuks, kuna kuna üks meetod helistab teisele, mis kutsub teist, mis helistab teisele, koguneb teile täitmisinstantside virn, mis on väga kasulik täitmiskäitumise jälgimiseks.)

Paanil Allikas saate näha ja muuta virna kindla funktsiooni või meetodi lähtekoodi. Muutujate paanil kuvatakse kõik muutujad (sealhulgas kohalikud muutujad, esinemismuutujad ja pseudo-muutujad), millele meetod on juurdepääsetav. Siluris näidatud teave on kõik, mida vajate, et aru saada, mis toimub. Selle teabe analüüsimisel saate järeldada oma vea allika.

Hindaja on mänguväljaku moodi aken muutujatega seotud avaldiste hindamiseks. See aitab teil aru saada, mis toimub.

Silur pakub teie programmi käitumise uurimiseks mitmeid võimalikke toiminguid. Paani korstna ülaosas näete mitmeid võimalusi:

  • Jätkake - jätkake tavalist täitmist nii, nagu poleks midagi katkenud
  • Taaskäivitage - olete juba liiga kaugele jõudnud, nii et alustage uuesti praeguse meetodi algusest
  • Into - käivitage esiletõstetud sõnum / meetod ja astuge selle juurde, et edasi uurida
  • Täitke esiletõstetud sõnum / meetod üle ja astuge sellest üle, mitte sinna
  • Läbi - teostada meetodi kaudu argumendiplokki

Nii näeme siluris, et meetod #new on esile tõstetud. See on meetod, mida hakatakse täitma. Me ei ole sellest huvitatud; tahame uurida meetodit #addOne. Klõpsake valikul „Üle”, et liikuda üle lehele #addOne.

Nüüd tahame astuda sammu #addOne juurde, nii et klõpsake nuppu Into. Koodi näeme paanil Allikas. Kiire pilk teeb selgeks, mis on valesti (tavaliselt peate koodi analüüsima palju hoolikamalt ja põhjalikumalt): liitoperaatori asemel on meil lahutatav operaator. Seega saame koodi kohe ja kohe muuta ning salvestada:

addOne
   loendama: = loendama + 1

Nüüd võime jätkata täitmist (paremklõpsates, et valida 'Jätka'), justkui poleks midagi valesti! See on Smalltalki reaalajas kodeerimise jõud.

Fikseerisime #addOne. Andkem nüüd meetod #stractÜks pilt. Mänguväljakul teeme järgmist:

Vastupidine uus lahutamineOne

Üles hüppab teataja aken, kuulutades, et Pharo “ei saa aru #subtractOne”! Seda seetõttu, et meetodit #subtractOne veel ei eksisteeri.

Teavitaja aken pakub mitmeid võimalikke toiminguid.

  • Jätka - jätka tavapärast täitmist
  • Loobumine - hukkamisest loobumine
  • Silumine - siluri avamine
  • Loo - loo olematu meetod
  • Aruanne - see on aegunud funktsioon, eemaldatud Pharo 7.0-st

Meil on võimalus puuduv meetod kohe luua, klõpsates nupul „Loo”. Seejärel küsitakse, millisesse klassi ja millises protokollis uut meetodit rakendada. Lisage järgmine kood:

Loendur >> lahutamineOne
   loendama: = loendama - 1

Seejärel salvestage see ja jätkake täitmist.

Lisaks meetodite loomisele saate ka silurites klasse luua. Kui koodite oma meetodis olematu klassi ja proovite salvestada, annab silur teile võimaluse hüpikaknast “uue klassi luua”.

Nagu näete, saate siluri abil koodi kirjutada sama lihtsalt kui süsteemibrauseris. Sel viisil saate korduvalt koodi kirjutada ja siluda, koodi kirjutada ja siluda, nähes samal ajal täpselt, mis teie programmis toimub. See on väga võimas ja terviklik viis tarkvara arendamiseks. Julgustan teid seda lähenemist valdama.