Skip to content

Failiga seotud mälu

git blame ütleb, kes rida muutis. Linter ütleb, mis sellega praegu viga on. Ainult bee oskab öelda, mis juhtus eelmisel korral, kui keegi seda faili puudutas, ja mida ta sellega tegi.

Terminal window
bee remember "** piir kadus vaikselt, nii et **/foo.cs sobis notfoo.cs-iga" \
--type error \
--solution "hoia piiri: (?:.*/)? mitte .*" \
--prevention "kirjuta negatiivne test — muster, mis EI TOHI sobida" \
--path 'src/Bee/Hooks/*.cs'

Edaspidi näeb seda igaüks, kes on sobivat faili muutmas:

Terminal window
bee lint src/Bee/Hooks/PathGlob.cs
# bee — known about src/Bee/Hooks/PathGlob.cs
# - [error] ** piir kadus vaikselt, nii et **/foo.cs sobis notfoo.cs-iga
# ↳ fix: hoia piiri: (?:.*/)? mitte .*
# ↳ avoid: kirjuta negatiivne test — muster, mis EI TOHI sobida
# ↳ matched: src/Bee/Hooks/*.cs

--path on korratav ja kasutab sama glob-tähistust nagu reeglid — tegelikult sama sobitajat, sest kaks autoriteeti selle üle, mida glob tähendab, on üks liiga palju.

failiga seotud mälu
bee lint sobival failil ✅ jõuab kohale
bee lint mis tahes muul failil — vaikus
kirjutamiseelne konks ✅ jõuab kohale
sessiooni algus ei jõua
iga päring ei jõua
bee remember search ✅ endiselt leitav

Need kaks puudumist ongi funktsionaalsus. Seotud mälu ei maksa midagi käikudel, mis tema faili ei puuduta — mõõdetuna umbes 37 tokenit ülaltoodud näite puhul, makstuna ainult siis, kui seda teed nimetatakse.

Kui piir hakkab pigistama, peab välja langema kõige vähem pakiline. Sellel, kes on faili muutmas, on rohkem vaja teadmist “eelmine kord läks see katki” kui “siin on üks kokkulepe”, seega järjestatakse error-mälud ettepoole. Käsk näitab kuni 5; kirjutamiseelne konks võtab 3, sest see sõidab reeglite kõrval kahesekundilises eelarves.

Terminal window
bee lint --memory 0 # jäta täiesti vahele
bee lint --memory 10 # või küsi rohkem

Plokk renderdatakse oma pealkirja all, reeglitest eraldi — ja see ei ole kosmeetika.

Reegel on juhis, mida järgida. Mälu on fakt mineviku kohta. Ühes loendis kohtleb mudel neid ühtemoodi — ja error-mälu järgimine, mis kirjeldab viga, tähendab selle vea taastootmist. Teine pealkiri, teine tegusõna.

Lahendus ja ennetus rändavad koos probleemiga, sest “see läks korra katki” ilma “ja siin on see, mis selle parandas” on hoiatus, mille peale ei saa keegi tegutseda.

Seo see, mis muidu avastataks uuesti:

Terminal window
# lõks konkreetses failis
bee remember "AppKit ei tembelda auditivälju — pane CreatedAt initsialiseerijasse" \
--type error --solution "= DateTimeOffset.UtcNow atribuudil" \
--path '**/Entities/*.cs'
# otsus, mis kehtib kataloogi kohta
bee remember "see kiht on CQRS kirjutuspool; lugemised käivad projektsiooni kaudu" \
--type decision --reason "lugemismudelil on teine järjepidevuslepe" \
--path 'src/Orders/Commands/**'

Ära seo seda, mis kehtib kõikjal — see on reegel või tavaline mälu. Sidumine on selle jaoks, mis loeb ainult siin.