Арчилж болох код бичих зөвлөмжүүд
Код бичих нь зөвхөн програмыг "ажиллуулах" тухай биш юм. Практикт програм хангамж хөгжүүлэх цагийн нэлээд хэсэг нь өөрийн эсвэл өөр хэн нэгний одоо байгаа кодыг унших, сайжруулах, хөгжүүлэхэд зарцуулагддаг. Тиймээс засвар үйлчилгээ хийх боломжтой код бичих чадвар нь аливаа программистын хувьд чухал ур чадвар юм. Засвар үйлчилгээ хийх боломжтой код нь засвар үйлчилгээний зардлыг бууруулж, функц нэмэхийг хурдасгаж, алдааг багасгаж, багийн хамтын ажиллагааг илүү үр дүнтэй болгодог. Цэвэр, тодорхой, бат бөх код бичих зарим практик зөвлөмжийг энд оруулав.
1. "Ухаалаг" байдлаас илүү уншигдахуйц байдлыг нэн тэргүүнд тавь
Хэтэрхий "ухаалаг" кодыг ойлгоход хэцүү байдаг. Жишээлбэл, маш товч мөр код бичих нь гоёмсог харагдаж болох ч дахин уншихад төөрөгдүүлж болно. Арай урт байсан ч тодорхой шийдлийг сонгоорой. Уншихад хялбар байх нь хөрөнгө оруулалт юм: та кодыг зөвхөн нэг удаа бичиж болох ч олон удаа унших болно.
Жишээлбэл, олон үйлдлийг нэг илэрхийлэлд оруулахын оронд тэдгээрийг утга учиртай хувьсагчийн нэртэй алхамуудад хуваа. Энэ нь уншигчдад програмын зорилгыг таахгүйгээр ойлгоход тусалдаг.
2. Тодорхой бөгөөд тууштай нэршил ашигла
Хувьсагч, функц болон классын нэрс нь таны кодын "баримт бичгийн эхний мөр" юм. Сайн нэрс нь зөвхөн өгөгдлийнхөө форматыг төдийгүй тэдний үүрэг эсвэл зорилгыг тодорхойлох ёстой. Жишээлбэл, `userList` нь `ul`-ээс илүү мэдээлэл сайтай, харин `calculateTotalPrice()` нь `ctp()`-ээс илүү тодорхой юм.
Тодорхой байдлаас гадна нэршил нь тууштай байх ёстой. Хэрэв та хувьсагчдын хувьд camelCase ашигладаг бол төслийнхөө туршид үүнийгээ баримтал. Хичээлийн хувьд хэрэв таны илүүд үздэг хэлний конвенц бол PascalCase ашиглаарай. Тууштай байдал нь кодыг жигд мэдрүүлж, унших үед оюун санааны ачааллыг бууруулдаг.
3. “Нэг хариуцлага”-ын зарчмыг хэрэгжүүл
Хөдөлгөөнд хэцүү кодын гол шалтгаануудын нэг нь хэт олон зүйл хийдэг функц эсвэл классууд юм. Ганц хариуцлагын зарчим нь кодын нэгж нь зөвхөн нэг үндсэн хариуцлагатай байх ёстой гэж үздэг. Хэт урт функц нь ихэвчлэн үүнийг задлах шаардлагатай байгаагийн шинж тэмдэг юм.
Жишээлбэл, оролтыг нэгэн зэрэг баталгаажуулж, үнийг тооцоолж, төлбөрийн гарцтай холбогдож, имэйл илгээдэг "төлбөрийн процесс" функцийг туршихад хэцүү бөгөөд өөрчлөхөд хэцүү байх болно. Үүнийг тусдаа функцүүдэд (баталгаажуулалт, тооцоолол, төлбөр, мэдэгдэл) хувааснаар та бусдыг нь тасалдуулахгүйгээр нэг хэсэгт нь өөрчлөлт хийж болно.
4. Давхардуулахаас (ХУУРААРАЙ) зайлсхий, гэхдээ хэтрүүлж болохгүй.
DRY (Өөрийгөө давтаж болохгүй) нь чухал зарчим юм: хэрэв та нэг ижил кодын блокийг олон удаа хуулж авбал бага зэрэг өөрчлөлт хийхэд бүх зүйлийг засах шаардлагатай болно. Энэ нь алдаа гарах магадлалтай. Үүний шийдэл нь давтагдсан логикийг функц эсвэл модуль руу гаргаж авах явдал юм.
Гэсэн хэдий ч хэт их давхардлаас зайлсхийх нь уншихад сөргөөр нөлөөлж болзошгүйг санах нь чухал юм. Хэрэв хоёр код ижил төстэй харагдаж байгаа ч үнэндээ өөр өөр нөхцөл байдалтай бол "хийсвэрлэл"-ийг албадах нь кодыг илүү төвөгтэй болгож болзошгүй юм. Тэнцвэрийг ол: давхардлыг үнэхээр утга учиртай бөгөөд хамтдаа өөрчлөх боломжтой үед рефактор хий.
5. Төслийн цэвэр бүтэц бий болгох
Тодорхой хавтасны бүтэц нь засвар үйлчилгээний хялбар байдалд нөлөөлдөг. Файлуудыг зөвхөн файлын төрлөөр нь бус, ялангуяа том төслүүдийн хувьд онцлог шинж чанар эсвэл модулиар нь бүлэглээрэй. Сайн бүтэц нь шинээр орж ирж буй хүмүүст төслийн архитектурыг ойлгоход хялбар болгодог.
Жишээлбэл, бүх UI бүрэлдэхүүн хэсгүүдээ нэг том хавтсанд байрлуулахын оронд тэдгээрийг `auth/`, `profile/`, `checkout/` гэх мэт функцээр нь хувааж болно. Энэ арга нь таны төслийг өргөжүүлэхийн хэрээр цар хүрээг өргөжүүлэхэд тусалдаг.
6. Нарийн төвөгтэй байдлыг хязгаарлаж, логик урсгалыг дагахад хялбар болго.
Үүрлэсэн if-else мэдэгдлүүд, олон тооны нөхцөлүүд болон тусгай үл хамаарах зүйлсээр дүүрэн кодыг хадгалахад ихэвчлэн хэцүү байдаг. Логикоо хялбарчлахыг хичээгээрэй. Та үүрлэхийг багасгахын тулд эрт буцах гэх мэт аргуудыг ашиглаж болно, эсвэл нарийн төвөгтэй логикийг зохих ёсоор нэрлэж болох жижиг функцүүд рүү шилжүүлж болно.
Хэрэв функц хэт олон параметртэй бол энэ нь нарийн төвөгтэй байдлыг илтгэнэ. Параметрүүдийг илүү сайн зохион байгуулж, өргөтгөхөд хялбар болгохын тулд тохиргооны объект (эсвэл өгөгдлийн бүтэц) ашиглах талаар бодож үзээрэй.
7. Зорилтот түвшинд байгаа сэтгэгдлүүдийг бичээрэй
Тайлбар нь тодорхой кодыг орлохгүй. Хэрэв та "код юу хийдэг вэ" гэж тайлбарлах шаардлагатай бол үүнийг илүү уншигдахуйц болгох хэрэгтэй байж магадгүй. Гэсэн хэдий ч, ялангуяа дизайны шийдвэр, системийн хязгаарлалт эсвэл бизнесийн тодорхой шалтгаан байгаа тохиолдолд тайлбар нь ямар нэгэн зүйлийг "яагаад" хийснийг тайлбарлахад хэрэгтэй хэвээр байна.
Сайн тайлбарын жишээнд гүйцэтгэлийн хязгаарлалтаас шалтгаалан тодорхой алгоритмыг яагаад ашиглаж байгааг тайлбарлах, эсвэл баталгаажуулалтын дүрэм журмыг дагаж мөрддөг тул яагаад хачин санагдаж байгааг тайлбарлах зэрэг орно. Ингэснээр бусад нь кодыг "цэвэрлэж", чухал логикийг эвдэхгүй.
8. Кодын формат болон хэв маягийн гарын авлагыг ашиглах
Тогтмол форматлалт нь кодыг мэргэжлийн харагдуулж, уншихад хялбар болгодог. Боломжтой бол автоматжуулсан линтер болон форматлагчийг ашиглаарай (жишээ нь, JavaScript-д зориулсан ESLint + Prettier, Python-д зориулсан Black, эсвэл Go-д зориулсан gofmt). Эдгээр хэрэгслүүдийн тусламжтайгаар багууд зай болон догол мөрийн талаар санаа зовох шаардлагагүй болно, учир нь бүх зүйл автоматаар зохицуулагддаг.
Загварын гарын авлага нь мөн тусалдаг: дан эсвэл давхар хашилт ашиглах эсэх, файлуудыг хэрхэн нэрлэх, урт мөрүүдийг хэзээ таслах гэх мэт. Иймэрхүү жижиг стандартууд нь урт хугацаанд томоохон өөрчлөлтийг авчирч чадна.
9. Дахин боловсруулах үед өөртөө итгэх итгэлийг хадгалахын тулд тест бичих.
Арчилж болох код нь зөвхөн цэвэрхэн төдийгүй өөрчлөхөд аюулгүй байдаг. Автоматжуулсан тестүүд (нэгжийн тест, интеграцийн тест) нь таны өөрчлөлтүүд тогтсон зан төлөвийг зөрчихгүй байхыг баталгаажуулдаг. Тестгүйгээр хүмүүс илрүүлээгүй алдаа гарах эрсдэлээс болж кодыг сайжруулахаас айдаг.
Үнийн тооцооллын функц, хөнгөлөлтийн дүрэм, баталгаажуулалт эсвэл байнга өөрчлөгддөг модулиуд гэсэн чухал хэсгүүдээс эхэл. Цаг хугацаа өнгөрөхөд туршилтын хамрах хүрээ өргөжиж, регрессийн эсрэг хүчтэй хамгаалалтыг бий болгоно.
10. Рефакторингийг тогтмол, хэмжиж болохуйц байдлаар гүйцэтгэх
Засвар үйлчилгээ бол тасралтгүй үйл явц юм. Рефакторинг гэдэг нь "бүх зүйлийг дахин бичих" гэсэн үг биш, харин кодын зан төлөвийг өөрчлөхгүйгээр чанарыг нь сайжруулдаг жижиг сайжруулалтуудыг хэлнэ. Кодын хэсэгт хүрэхдээ рефактор төлөвлө: бага зэрэг цэгцлэх, нэрлэлтийг засах, хэт урт функцийг задлах эсвэл үхсэн кодыг устгах.
Жижиг, тогтмол рефакторинг хийх нь том, ховор тохиолддог рефакторингоос илүү аюулгүй байдаг. Мөн өөрчлөлтийн өмнө болон дараа хангалттай туршилт хийх, эсвэл ядаж шалгахыг үргэлж баталгаажуулах хэрэгтэй.
11. Чухал шийдвэрүүдийг баримтжуул
Кодын тайлбараас гадна сайн төслүүд нь ихэвчлэн товч баримт бичигтэй байдаг: програмыг хэрхэн ажиллуулах, хэрхэн бүтээх, орчныг хэрхэн тохируулах, өндөр түвшний архитектурын тайлбар. Энэхүү баримт бичиг нь өргөн хүрээтэй байх албагүй ч үнэн зөв, олоход хялбар байх ёстой. `README.md` гэх мэт сайн арчилгаатай файл нь шинэ гишүүдийг элсүүлэхэд ихээхэн цаг хэмнэж чадна.
Хэрэв гол техникийн шийдвэр байгаа бол (жишээлбэл, тодорхой мэдээллийн сан, архитектурын хэв маягийг сонгох эсвэл интеграцийн хязгаарлалт) үндэслэлийг баримтжуулна уу. Энэ нь багт нөхцөл байдлыг ойлгоход тусалж, ижил хэлэлцүүлгийг давтахаас зайлсхийхэд тусална.
Хаах
Арчилж болох код бол сайн зуршлын үр дүн юм: тодорхой бичих, үүрэг хариуцлагыг задлах, тууштай байдлыг хадгалах, нарийн төвөгтэй байдлыг багасгах, өөрчлөлтийг тестээр хамгаалах. Төгс код гэж байдаггүй ч баг чанарт анхаарлаа хандуулбал төсөл бүр тасралтгүй сайжирч чадна. Дээрх зөвлөмжийг хэрэгжүүлснээр та зөвхөн өнөөдөр төдийгүй ирэх сар, жилүүдэд ч гэсэн амжилтанд хүрэхэд илүү сайн бэлтгэгдэх болно.