Skip to content

Tutorial 2 How the Code Works is

James Morris edited this page Jul 29, 2026 · 1 revision

Kennsla 2 · Hvernig kóðinn virkar

🌎 Tungumál: Íslenskasjá öll 33 tungumálin

Markmið: skilja handfylli af hönnunarákvörðunum sem gera þetta verkefni auðvelt — og öruggt — að breyta með gervigreindaraðstoðarmanni. Þú þarft ekki að leggja kóðann á minnið; þú þarft hugarfarslíkanið svo þú getir stýrt aðstoðarmanninum af nákvæmni.

← Fyrra: Kennsla 1 Leiðsögn · Næst: Kennsla 3 Fyrsta verkefnið þitt með aðstoðarmanninum


Kortið

lockedin-cli/
├── bin/lockedin.js      # inngangspunktur — EINI hlutinn sem sér um inntak og úttak
├── src/lockedin.js      # kjarninn — hrein föll sem skila strengjum
├── test/
│   ├── unit.test.js     # prófar kjarnaföllin beint
│   └── cli.test.js      # ræsir raunverulega tvíundina og athugar úttak hennar
├── tools/screenshot.js  # býr til SVG-myndirnar sem þú sérð í docs/
└── package.json         # lýsigögn + `npm test`-skipunin

Fjórar hugmyndir láta þetta ganga. Lærðu þær og þú getur beðið aðstoðarmanninn um nær hvaða breytingu sem er af öryggi.

Hugmynd 1 — Hreinn kjarni sem skilar strengjum

Opnaðu src/lockedin.js. Taktu eftir því að render-föllin prenta ekki — þau skila strengjum:

function renderConnect() {
  const names = shuffle(NAMES).slice(0, 6);
  // ...byggir upp fylki af línum...
  return out.join('\n');   // skilar texta; prentar ekkert
}

Öll raunveruleg prentun (og lestur á lyklaslætti þínum) á sér stað í bin/lockedin.js. Þessi skipting — „kjarninn skilar gögnum, jaðarinn sér um inntak/úttak“ — er það mikilvægasta hér, því fall sem gerir ekkert nema að skila streng er einfalt að prófa:

const out = app.renderConnect();
assert.ok(out.includes("„Mig langar að bæta þér við faglega tengslanetið mitt.“ — sent á "));

Engin hermun á terminal, ekkert stdout til að fanga. Þegar þú biður aðstoðarmanninn um að bæta við eiginleika er þetta ástæðan fyrir því að hann getur líka bætt við snöggu og áreiðanlegu prófi fyrir hann.

Hugmynd 2 — Efnispool

Brandararnir búa í einföldum fylkjum ofarlega í src/lockedin.js:

const HOOKS = [ 'Óvinsæl skoðun:', 'Leyfðu þessu að síast inn.', /* ...um 25 alls... */ ];
const LESSONS = [ '→ Tengslanetið þitt er nettóeignin þín.', /* ... */ ];

Smíðiföllin velja úr þessum poolum. Í v1.2.0 stækkaði hver pool í um 25 tilbrigði, og öðru lagi af sniðmátspoolum var bætt við (hlutir eins og POST_REVEALS og REFLECT_TAGSETS) svo bygging hvers úttaks breytist, ekki bara orðin. Að bæta við efni er oft eins einfalt og að bæta strengjum í fylki — fullkomið fyrsta verkefni til að fela aðstoðarmanni.

Hugmynd 3 — Slembni með seed = endurtekningarhæf próf

Slembið úttak og sjálfvirk próf virðast ósamrýmanleg. Þetta verkefni leysir þann hnút með slembitölugjafa sem hægt er að seeda:

setSeed(42);
const a = generatePost();
setSeed(42);
const b = generatePost();
// a === b  → sama seed, sama færsla

Hvert slembival fer í gegnum sameiginlegu hjálparföllin pick() / shuffle(), sem draga úr þessum seedaða gjafa. Stilltu LOCKEDIN_SEED=42 og CLI-ið verður fullkomlega endurtekningarhæft. Gullna reglan fyrir allar breytingar: ný slembni verður að fara í gegnum pick / shuffle, aldrei Math.random beint — annars brotnar endurtekningarhæfnin (og prófin). Hafðu þetta í bakvasa; þú munt minna aðstoðarmanninn á það í Kennslu 3.

Hugmynd 4 — Tvö lög af prófunum

  • test/unit.test.js kallar á kjarnaföllin og sannreynir strengina sem þau skila (hratt, nákvæmt).
  • test/cli.test.js ræsir í raun bin/lockedin.js og athugar raunverulegt stdout og útgöngukóðann (sannar að allt virkar frá enda til enda).

Saman eru þau hliðið. Þau skrá líka ófrávíkjanlegar reglur — loforð sem forritið gefur. Til dæmis byrjar færsla alltaf á þekktri upphafsfrasu og inniheldur alltaf að minnsta kosti þrjú lærdómsatriði; „connect“-skjárinn segir alltaf incalculable. Þegar aðstoðarmaður breytir kóðanum grípa þessi próf allt sem rýfur loforð í hljóði.


Af hverju þetta skiptir máli þegar þú vinnur með aðstoðarmanni

Settu þessar fjórar hugmyndir saman og þú færð kóðagrunn þar sem aðstoðarmaður getur:

  1. Bætt við eiginleika sem hreinu falli sem skilar streng,
  2. Bætt við prófi fyrir hann án nokkurrar inntaks/úttaks-fimleika,
  3. Haldið úttakinu endurtekningarhæfu með seedaðri slembni, og
  4. Sannað að ekkert annað brotnaði með því að keyra núverandi hlið.

Þetta er lykkjan sem þú keyrir í næsta kafla.

✅ Prófaðu þetta með aðstoðarmanninum þínum

Biddu aðstoðarmanninn um að sannreyna skilninginn þinn — með lestri, ekki breytingum:

  1. „Listaðu upp hvert efnispool í src/lockedin.js og hve margar færslur eru í hverju þeirra.“
  2. „Sýndu mér eina ófrávíkjanlega reglu sem test/unit.test.js framfylgir um generatePost, og útskýrðu hvað myndi rjúfa hana.“
  3. „Hvar er seedaða slembnin skilgreind og hvaða föll verða að nota hana í stað Math.random? Ekki breyta neinu — útskýrðu bara.“

Þegar svör aðstoðarmannsins passa við þennan kafla geturðu hafist handa við að byggja.

Næst: Kennsla 3 Fyrsta verkefnið þitt með aðstoðarmanninum

📘 LockedIn CLI wiki

Tutorial

Reference


Satire · Sátira · 風刺. Not affiliated with LinkedIn. GPL-3.0-or-later.

Clone this wiki locally