← 返回列表

Ìfọ̀wọ̀n AI 16: Kí ni koodu àsopọ́ tí ó dára yẹ kí ó jẹ́?

Koodu Àsopọ́ tí ó dára, kókó rẹ̀ ni láti sọ “èrò àìdádúró” di “àdéhùn pípé, tí a lè dánwò, tí a lè ṣe”. Kì í ṣe kíkọ ìwé àkọsílẹ̀ kan nìkan, ṣùgbọ́n ó jẹ́ dídá èdè ìbánisọ̀rọ̀ tí kò ní ìyàtọ̀ lákọ̀ọ́ àwọn ènìyàn àti AI (tàbí ènìyàn àti ènìyàn).

Nísàlẹ̀, èmi yóò sọ bí spec tí ó dára ṣe rí nípa àwọn igun mẹ́rin: ètò àkóónú àwọn àsopọ́, àwọn ìlànà kíkọ, ìlànà ìfọwọ́sowọ́pọ̀ pẹ̀lú AI, àti ìdánilójú didára.


一、Ètò Àkóónú Àsopọ́ Láti Ìbẹ̀rẹ̀ (pẹ̀lú Àpẹẹrẹ Iṣẹ́)

Apayì Nǹkan tí a gbọ́dọ̀ kọ Àpẹẹrẹ
1. Àfojúsùn àti Ìbò Sọ ní ọ̀rọ̀ kan ohun tí a ṣe, sọ kedere ohun tí a kò ṣe “Ṣe imuse API iforukosile olumulo, kò pẹlu ijẹrisi imeeli”
2. Àdéhùn input/output Ètò data, irú, ojúlówó/aṣàyàn, àpẹẹrẹ iye Ara ibeere POST /register {email: string, password: string}, ìdáhùn 201 tàbí 400 pẹ̀lú koodu àṣìṣe
3. Ìwà àti Ọgbọ́n Àwọn ofin iṣẹ́, àwọn ipo ààlà, ìyipada ipo “Gígùn ọ̀rọ̀ aṣírí 8-20, ó kéré tán ó ní nọ́mbà kan; tí imeeli bá ti wà tẹ́lẹ̀, ìdáhùn 409
4. Ìtọ́jú Àṣìṣe Gbogbo àyíká àìṣedéédé àti àwọn koodu àṣìṣe/ifiranṣẹ tí ó bá mu “Àìṣe àkápọ̀ data → ìdáhùn 503, má ṣe fi akopọ han”
5. Àwọn ibeere tí kì í ṣe iṣẹ́ Iṣẹ́ (akoko ìdáhùn < 200ms), ààbò (ìbéèrè paramita), ìtọ́ka àkọsílẹ̀, ìṣeéwò “Gbogbo SQL gbọ́dọ̀ lo awọn ibeere ti a ti ṣe tẹlẹ; kọ email ṣùgbọ́n má kọ password
6. Àpẹẹrẹ ìdánwò (Kókó) Ó kéré tán 3 input aṣoju + 2 input ààlà/àìse, pẹ̀lú ìjáde tí a reti Wo tabili isalẹ
7. Àwọn àìgbára àti ìdèwọ́ Kí ni a lo library, version, àwọn ayíká iye “Python 3.10+, FastAPI, ayíká iye DB_URL

Àpẹẹrẹ ìdánwò (ninu spec)

Àyíká Input Ìjáde tí a reti
Iforukosile deede email: a@b.com, pwd: Pass1234 201, ìdáhùn user_id
Ọ̀rọ̀ aṣírí kúrú pwd: Ab1 400, koodu àṣìṣe WEAK_PASSWORD
Imeeli ti wà tẹ́lẹ̀ email kanna 409, koodu àṣìṣe EMAIL_EXISTS

Spec tí ó dára gbọ́dọ̀ kọ àwọn àpẹẹrẹ ìdánwò kọ́kọ́, nítorí AI le gbé wọn lò láti ṣe àwọn ìdánwò kọ̀ọ̀kan tí ó tọ̀wọn lẹ́sẹ̀kẹsẹ̀, kí ó sì fìdí wọn mú lẹ́yìn tí ó bá ti parí.


二、Àwọn ìlànà kòkó kíkọ Spec (SMART yàtọ̀)

Ìlànà Àlàyé Àpẹẹrẹ òdì
Pípé (Precise) Lo awọn nọ́mbà pàtó, irú, ipo Boolean, yàgò fun “bí ó bá ti lè jẹ́”, “nígbà gbogbo” ❌ “Ọ̀rọ̀ aṣírí gbọ́dọ̀ jẹ́ ààbò tó” → ✅ “Ọ̀rọ̀ aṣírí ó kéré tán 8 nọ́mbà, pẹ̀lú lẹ́tà ńlá, lẹ́tà kékeré, nọ́mbà”
Ìṣeéfìdírí (Verifiable) Gbogbo ibeere ni a lè pinnu pé ó kọjá/kùnà nípasẹ̀ ìdánwò aládaaṣe tàbí àyẹ̀wò ọwọ́ ❌ “Koodu gbọ́dọ̀ jẹ́ dídára” → ✅ “Aṣiṣe àyíká iṣẹ́iṣẹ́ ≤ 10, kò sí àwọn koodu àtúnṣe”
Àìṣiyèméjì (Unambiguous) Ọ̀rọ̀ kan náà ní ìtumọ̀ kan gbogbo ìwé, fún glossary tí ó bá ṣe pàtàkì ❌ “Tí olumulo kò bá sí, ìdáhùn àṣìṣe” → ✅ “Olumulo kò sí → ìdáhùn 404 pẹ̀lú {code: 'USER_NOT_FOUND'}
Pípé (Complete) Bò ọ̀nà ayọ̀, gbogbo ọ̀nà àìṣedéédé, àwọn ibeere tí kì í ṣe iṣẹ́ ❌ Kọ ipo àsìkò ayọ̀ nìkan → ✅ Pẹ̀lú àkókò àkópọ̀ data, aṣẹ tí kò tó, àti b́b
Àtomu (Atomic) Spec kan ṣe àpèjúwe aaye iṣẹ́ kan ṣoṣo tí a lè jíṣẹ́ lọ́tọ̀ (látí rọrùn fún AI láti ṣe lẹ́ẹ̀kan) ❌ Fi spec kan kọ “gbogbo eto isanwo” → ✅ Pín sí “ṣe ìwé isanwo”, “dáwọ́lé ìbùwọ́n”, “ìpadà”

三、Ìlànà Koodu Spec pẹ̀lú AI

  1. Eniyan kọ spec (ètò tí ó wà lókè, pàápàá jùlọ kọ àwọn àpẹẹrẹ ìdánwò àti àmì iṣẹ́).
  2. Fún AI ni spec ni ẹ̀ẹ̀kan (má ṣe fi àwọn ibeere kun nípasẹ̀ ìbánisọ̀rọ̀, yàgò fun ìbàjẹ́ vibe).
  3. AI ṣe àkójáde koodu + ìdánwò kọ̀ọ̀kan (AI gbọ́dọ̀ ṣe àwọn ìdánwò tí a lè ṣe nígbà gbogbo gẹ́gẹ́ bi àpẹẹrẹ ìdánwò nínú spec).
  4. Ṣiṣẹ́ ìdánwò: Tí gbogbo wọn bá kọjá, lọ sí ìgbésẹ̀ tí ó tẹ̀le; tí wọn kò bá kọjá, ṣe àtúnṣe spec tàbí tún koodu ṣe ni taara (ní àkókò yìí, o le wọ inú àtúnsọ̀nà kékeré, ṣùgbọ́n ohùn tó).
  5. Àyẹ̀wò ọwọ́: Ṣe àyẹ̀wò boya a ti fi àwọn iṣẹ́ tí kò sí nínú spec (scope creep), ṣe àyẹ̀wò ààbò/iṣẹ́.
  6. Ṣe ìmúdúró: Fi ìwé spec àti koodu ìparí papọ̀ sí ibi ìkóhndé, gẹ́gẹ́ bi ìwé àkọsílẹ̀ tí ó wà títí.

Àṣà kókó: Spec koodu — lo spec.md + test_spec.py, nínú èyí tí ìdánwò wá láti inú àwọn àpẹẹrẹ spec, tí ó bá jẹ́ pé a tún koodu ṣe, a lè ṣiṣẹ́ ìdánwò láti fìdí spec rí.


四、Àwọn àbájáde Spec tí ó dára (lè jẹ́ àwọn àákọ ìgbàwọlé)

  • Ìdánilójú: Spec kanna fún AI yàtọ̀ (tàbí ènìyàn yàtọ̀) yóò ṣe àṣeyọrí tí ó rí.
  • Ìṣeéwádìí: Lẹ́sẹ̀kẹsẹ̀ lẹ́yìn kíkọ koodu, a lè fìdí 90% ìwà pípé.
  • Ìṣeéṣọ́: Lẹ́yìn ọ̀sẹ̀ mẹ́fà, ẹnikẹ́ni tí ó bá wo spec yóò lóye èrò oníṣẹ́ àkọ́kọ́.
  • Àwọn iye ìbánisọ̀rọ̀ kọ̀: Nígbà ìjíròrò ẹgbẹ́, gbogbo ènìyàn dẹ́ àdánwò spec, kì í dẹ́ àwọn laini koodu pàtó.
  • Ààbò/Didára inú rẹ̀: Àwọn ibeere ààbò (bí i àwọn ibeere paramita) àti àwọn ipo ààlà ti kọ sínú spec, AI gbọ́dọ̀ tẹ̀lé.

五、Àpẹẹrẹ Spec tí ó dára (Ìwé kúkúrú)

# Spec: API Iforukosile Olumulo
## Ìbò
- Gba email, password
- Kò fiwé ìdánilójú imeeli, kò ṣe àyẹ̀wò òtítọ́ imeeli
## Àdéhùn
POST /register
Content-Type: application/json
Request: { "email": string, "password": string }
Response 201: { "user_id": string }
Response 400: { "code": "INVALID_PASSWORD" | "INVALID_EMAIL" }
Response 409: { "code": "EMAIL_ALREADY_EXISTS" }
## Ìwà
- email gbọ́dọ̀ bá ìlànà RFC 5322 (a@b.c)
- password: gígùn 8-20, ó kéré tán ní nọ́mbà kan àti lẹ́tà ńlá kan
- Lo bcrypt fún títọ́jú pẹ̀lú ìparí, iye iyọ̀ 10
- Tí a bá ri email tí ó ti wà tẹ́lẹ̀ kí ó tó fipamọ́ → 409
## Àpẹẹrẹ ìdánwò (Input -> koodu ipo + aaye ìdáhùn tí a reti)
| Input email | password | Ìjáde tí a reti |
|------------|----------|------|
| test@x.com | Pass1234  | 201, user_id wà |
| test@x.com | pass      | 400, INVALID_PASSWORD |
| bad        | Pass1234  | 400, INVALID_EMAIL |
| (imeeli tí ó ti wà tẹ́lẹ̀) | Pass1234 | 409, EMAIL_ALREADY_EXISTS |
## Àwọn tí kì í ṣe iṣẹ́
- SQL gbọ́dọ̀ lo àwọn ìbéèrè paramita (dènà àìṣe)
- Àkọsílẹ̀ kọ orísun IP iforukosile, kò kọ ọ̀rọ̀ aṣírí
- Àkókò ìdáhùn 95% ibeere < 100ms (laisi bcrypt)
## Àwọn àìgbára
- Python 3.10+, FastAPI, bcrypt, asyncpg

Koodu Spec tí ó dára = Kíkọ “ìpinnu oniṣẹ́” di “àpẹẹrẹ ìdánwò + àmì irú + ìdèwọ́ ìwà”, jẹ́ kí AI kàn fún ìmúṣẹ, nígbà tí ènìyàn sì máa ń darí didára àti ìtọ́sọ́nà.

评论

暂无已展示的评论。

发表评论(匿名)