Мұра кодексін қалай қолдану керектігі туралы кеңес

IConic APPLE MACINTOSH 128K

«Ескі код» термині пайда болған кезде, оны әдетте ұнамсыздықпен айтады немесе қабылдайды. «Мұрағат кодтары туралы» Гуглдың алдын-ала іздеуі жүздеген және жүздеген адамдардың шаштарын жыртып, есінен танып қалған немесе қатты көңілі қалған адамдардың макростарын табады.

Мен 5 ай бұрын өнім шығаратын компанияда бағдарламалық жасақтама жасаушы ретінде жұмыс істей бастағанда, ескі код деген не және онымен жұмыс істеу нені білдіретінін білмедім.

Төртінші ай ішінде менің әріптестерімнің бірінен екі-үш жыл бұрын жасаған бағдарламаға модальді ауыстырғыш сүзгі қосуды сұрады. Бұл оңай көрінді; Мен соңғы үш жылдың көп бөлігін стандартты стек: TypeScript / React / Angular / Dotnet қатыстырылған керемет қосымшада жұмыс істедім. Мен көптеген қайталанбас мәселелерді шешіп қойдым және өзімнің кодтау қабілетіме сенімді болдым, сұрау параметрлерін серверге беру үшін қарапайым модаль жасауға жеткілікті еді.

Білуіңіз мүмкін, бұл оңай болмады. Бірақ неге?

Бұрынғы код дегеніміз не және оны шешу неге қиын болуы мүмкін

Бұрынғы код дегеніміз - бұдан әрі қолдау көрсетілмейтін немесе жаңа нұсқасымен ауыстырылған ескі технологияларды қолданатын басқа әзірлеушіден немесе топтан мұраға алынған код. Көптеген бағдарламашылардың айтуынша, «код жазылғаннан кейін ескі код болады». «Кәдімгі» код пен бұрынғы кодтың арасындағы функционалдық айырмашылық оның жұмыс істеуге дағдыланғанға қарағанда әртүрлі шартты белгілерге ие болуында болуы мүмкін.

Менің жағдайда, қолданба негізгі C # кодтан гөрі XAML және T4 мәтін шаблоны қолданды, және ол маған үйреншікті болғандықтан терілмеген. Бұл маған деректердің құрылымын түсінуді қиындатты. Ешқандай түрі мен жұмыс уақыты кезінде TypeErrors бағдарламасына жиі ауысып отырғанымды білдірмейді, бұл үлкен функцияны жазғанда қиынға соғуы мүмкін. Бұған қоса, бағдарлама компоненттік кітапхананың үйлесімді нұсқасымен келісу үшін қажет болатын dnetnet-тің әлдеқайда ескі нұсқасын қолданды.

Мұра кодын ұтымдылық пен ұтымдылық сезімімен қалай басқаруға болатынын білмес бұрын, ескі кодтың бәрі жаман емес және мұрағаттық жоба бойынша жұмыс істеу қорқынышты болмауы керек деген ескертуді қосқым келеді. Керісінше, ескі кодпен жұмыс істеу маған икемді, шыдамды болуға және бәрінен бұрын тәжірибе жаңа көзқарастармен проблемаларды жаңа контексте шешуге мүмкіндік берді.

Шындығында, бұл мені жоғарыда аталған кодтар базасында жұмыс істей бастағанға қарағанда мені жақсырақ әзірлеуші ​​етті, және сіздің мұраңыздағы жоба сізге де бір нәрсе үйрете алады деп үміттенемін.

Бұрынғы кодты техникалық деңгейде қалай шешуге болады

Мүмкіндігінше құжаттаманы және код түсініктерін оқыңыз

Мінсіз әлемде әрбір кодтар базасында жобаның қалай жұмыс істейтіні туралы қысқаша түсініктемелер, автордың нақты логикасын түсіндіретін кодтық түсініктемелер және барлық қосымшалар өте жақсы мағынасы бар сенімді README бар. Алайда, бұл сирек кездеседі. Көптеген README жобалары дамып жатқанда жаңартылмайды, адамдар түсініктеме беруді ұмытып кетеді, олардың логикасы жаңа әзірлеушіге түсінікті деп ойлайды немесе олар осы нәрселермен айналысу үшін уақыт таусылып қалады.

Код базасына тұтастай қараңыз

Егер сіз адасып, неден бастау керектігін білмесеңіз, өзіңізге мына сұрақтарды қойыңыз:

  • Қолдану мақсаты қандай?
  • Бағдарлама арқылы деректер қалай ағылады?
  • Сіздің мүмкіндік бағдарламаңызға қалай сәйкес келеді?

Үлкен сурет туралы түсінікке қол жеткізген кезде, мәселені қалай шешуге болатындығын түсіну оңай болады. Мүмкін сізге жаңа файл жасап, жаңа контроллер жасау керек шығар. Мүмкін сізге қызметтік функцияны жазып, оны сынау керек. Қандай жағдай болмасын, сіздің проблемаңыздың неғұрлым кең мәнмәтінін түсіну шешім қабылдаудағы алғашқы қадам болып табылады.

Мүмкіндігінше қосымшаны қолмен және блок сынақтарымен тексеріңіз

Жаңа функция қосу кезінде бағдарламаны уақытша бұзу - сіз қандай деңгейдегі жасамасаңыз да, сөзсіз. Бұл қалыпты және күтілетін нәрсе, әсіресе егер сіз жұмысқа жаңа келген болсаңыз, бұрыннан таныс емес стекпен немесе екеуінің комбинациясымен жұмыс істейтін кодтар базасында жұмыс жасасаңыз.

Бұл бұзылулардың ұзақ мерзімді проблемаларға айналуының алдын-алудың ең жақсы тәсілі - қосымшаны және қолмен тексерумен қосымшаны мұқият тексеру. Осы сынақтарды өз орнында өткізу және олардың қандай түрінен шығатындығын білу сізге және болашақ әзірлеушілерге көп уақытты үнемдейді. Сондай-ақ, қатаң сынақтар бағдарламаны кеңейтеді және сіздің сынақтарыңыз әрдайым таза болған сайын аздап допамин береді. Өкінішке орай, менің сценарийімде шектеулі блок сынақтары бар

Қолмен тестілеу үшін сіз матрицаны жасап, құжаттың болашақ әзірлеушілерге қол жетімді екеніне көз жеткізгіңіз келеді. Матрица үшін сіз әрекеттер жиынтығын, күтілетін әрекетті, оны тексерген кездегі іс-әрекетті және тағы басқа маңызды мәліметтерді анықтағыңыз келеді:

Көмек сұрау

Сіздің жобаңызды жұмыс орнында қазіргі немесе бұрынғы қызметкер жазған деп болжасаңыз, басқа біреу қолданбада не болып жатқанын білуі мүмкін немесе сізді адастырмас үшін жеткілікті біледі. Сіздің мақтанышыңызды жұтып қоюды және біреуден сұрауды үйрену - бұл кейбіреулер үшін ыңғайсыз қадам, бірақ жасаушы ретінде өсу үшін қажет, мүмкін сіздің әріптесіңіз сізге бірнеше жаңа амалдарды үйрете алады.

Уақытты (және олардың уақытын) тиімді пайдаланудың жақсы тәсілі - бұл ақпараттандырылған сұрақтарды тұжырымдау. Код базасын толығымен қарастыруға қайта оралып көріңіз және түсінуіңіздегі олқылықтарды анықтаңыз. Бұл оларға сіздің мәселеңіздің неғұрлым жақсы екенін түсінуге көмектеседі, бірақ бұл сіз өз мәселеңізді өзіңіз шешуге бастама көтергеніңізді көрсетеді.

Сіздің шығындарыңызды қашан азайту керектігін біліңіз

Егер сіз аяғыңызды есікке кіргізуге көп уақыт жұмсамасаңыз және жоғарыда көрсетілген әрекеттерді орындағаннан кейін функцияны іске асыруда айтарлықтай қадам жасамаған болсаңыз, мүмкіндіктің айналасындағы кодты өзгерту қажет болуы мүмкін. Тым оңай берілмеңіз, сонымен бірге сіздің мерзімдеріңіз қандай екенін және жоба менеджері сізден не күтетінін есте сақтаңыз.

Бұл туралы айтудың кемшіліктері бар:

  • Қайта жазу коды қателерді енгізуі мүмкін, дегенмен бұл модульді жақсы тексеруден өтуге болады.
  • Қайта жазу коды жасырын функцияны алып тастай алады, дегенмен бұл блокты жақсы тексерумен де айналып өтуге болады.
  • Егер сізге уақыт қажет болса, мүмкіндіктің сыртында код жазу сіздің айналаңызды жайластырудан гөрі көп уақытты алуы мүмкін.

Тұтастай алғанда, сіздің ең жақсы пайымдауыңызды қолданыңыз. Кез-келген таңдаудың оң және теріс жақтары бар және бәрі сіздің жағдайыңыз бен жобаның бюджетіне байланысты.

Психологиялық деңгейде мұралық кодпен қалай күресуге болады

Енді біз мұра кодексімен жұмыс жасаудың техникалық аспектілерін қарастырғаннан кейін, жұмсақ дағдыларымызды қолдана отырып, онымен қалай күресуге болатынын қарастырайық. Әзірлеушілер роботтарды кодтап қана қоймай, шығармашылық пен авторлықты қажет ететін жобалардағы күрделі мәселелермен айналысатын адамдар ғана емес, сіздің әріптестеріңіз үшін де эмоционалды салық салыуы мүмкін.

Кішіпейіл және мейірімді бол

Бұл мен көбірек жаттығу жасау керек екендігімді мойындайтын нәрсе. Маған алғаш рет модальды фильтрді тағайындау кезінде, кодтың түпнұсқалық авторы менден 15 фут қашықтықта отырғанда, кодты ашулы және қолданбаушылықпен қалай күресуге болатындығын білдім. Мен өзімнің пікірлерімді әзілге айналдыруды мақсат еттім, бірақ мен түсінбейтін болсам, мен өзімнің өркөкіректігімді және ренжігенімді, ал мен одан жанашыр болуым керек екенін білемін.

Мұрағат кодының «өшірулі» көрінуіне әкелетін көптеген факторлар бар, оларды авторды сынай бастағанға дейін немесе олар туралы ең нашар деп санамас бұрын ескеру қажет (Бұл негізгі атрибуция қателігіне байланысты!).

Түпнұсқа автордың кодты солай жазуына себептері болған шығар.

Уақыт шектеулері мен технологиялық шектеулер адамның жұмыс істейтін кодты жазуына себеп болуы мүмкін, бірақ міндетті түрде ең жақсы конвенцияға ие болмайды. Егер сіз өзіңіздің уақытыңызды жеткіліксіз, ескірген құралдармен және мильдік қашықтықтағы тоодалармен байланысты жағдайға елестетсеңіз, онда сіз ең жақсы кодты да жаза алмайтын шығарсыз!

Шарттар өзгереді.

Ескі жобаларда кодтар конвенциясы жолдарды жариялау үшін бір тырнақшаны қолданады және екі бос орын бір қойындыға тең болды. Бізде бірнеше кіші сыныптар бір файлдың ішіне салынған. Біздің қазіргі конгресте біз екі тырнақша мен төрт бос орын қолданамыз, және әр сынып, қанша кішкентай болса да, модельдер каталогындағы өзінің .csfile-де тұрады. Бірнеше жылдан кейін бұл өзгеретініне сенімдімін.

Ақыр соңында барлық кодтар ескіреді

Бұл бұрынғы нүктеге қайта оралады: сіздің кодыңыз кейінірек ескіреді. Сіз еңбек өтілі бойынша сатыға көтерілгенде, жаңа әзірлеушілер жұмысқа қабылданады және ескі кодты сақтау керек болады. Сіз таза, мінсіз, DRY кодты жаза аласыз, бірақ шартты белгілер өзгергенде немесе трендтер өзгерген кезде, жаңа жасақтаушылар сіздің кодыңызды басқалардың мұра кодын қалай қараса, солай көре алады.

Кішкентай жетістіктермен мақтана беріңіз

Әдеттегі конгрестерден тыс жұмыс жасау оңай емес; мұра кодына қатысты көптеген мемуарлар мен әзілдердің пайда болуына себеп бар. Егер сіз өзіңіздің ана тіліңізден тыс тілді бұрын білген болсаңыз, екінші тіліңізде бір сөзді немесе терминді ұмытып кету сезімін білесіз, бірақ оны ана тіліңізде есте сақтаңыз және олқылықтарды аудару мүмкін емес. Қазіргі және бұрынғы конвенциялар арасындағы өзгеріс туралы да айтуға болады. Кейде мойынтіректеріңізді қалпына келтіру үшін бір минут кетеді.

Ескі кодты сәтті пайдалана отырып, сіз өзіңіздің бейімделу қабілетіңізді көрсетесіз, бұл сіздің қазіргі жұмысыңызда және болашақтағы барлық жұмысыңызда пайдалы болады, сол жұмыс технология саласында болса да, болмаса да. Мұра коды - бұл шеберлікті қолдануға арналған тамаша ойын алаңы.

Қорытындысында

Осы уақытты өзіңіздің жеке жазбаңызды күшейту үшін пайдаланыңыз

Ескі кодтар базасында жұмыс істеу тәжірибеңізді сезінгендіктен, сіз одан құралдар мен шартты белгілер тұрғысынан ұнайтын және ұнатпайтын нәрсені жақсы түсінуіңіз керек. Бұл сіз болашақ жобалармен айналысуға болатын және басқалардың кодын қайта қарауға, сындарлы сын айтуға және тәлімгерлікті ұсынуға мүмкіндік береді.

Пайдаланушы мен болашақ әзірлеушіге арналған қолданбалар жасаңыз

Сіз үлкен құжаттамамен және кодтық түсініктемелермен жұмыс істеген болсаңыз да, құжаттамасыз немесе кодтық түсініктемелерсіз болсаңыз да, құжаттама мен түсініктеменің болашақ әзірлеушілерге жобаны басқаруға көмектесетін күшті құрал екенін көре аласыз. Сіз тегіс, жұмыс істейтін және құрғақ бағдарламаны қалаудың ортақ мақсатымен бөлісесіз; құжаттаманы жүргізу және ақпараттық кодтық пікірлерді қалдыру бұл олқылықты жоюдың жақсы тәсілі.

Сіздің кодыңыз бір кездері ескіретінін ұмытпаңыз

Мен бұған дейін бірнеше рет айтқанмын, бірақ сіздің кодыңыз бен логикаңыз қаншалықты құрғақ және таза болса да, сіздің кодыңыздың да ескіретіндігін тағы бір рет ескерту қажет.

Ең маңызды жол - икемді, кішіпейіл болу және ескі кодекстен жаңа трюктерді міндетті түрде үйренуге болады.