Кіріспе

Бағдарламалау, сценарий жазу және таңбалау редакторларының құралы. Кодты немесе мәтінді жиыстыру (бүктеу) немесе сирек кездесетін холофрастлау – кейбір графикалық интерфейстердің мүмкіндігі, ол пайдаланушыға құжаттың бөліктерін таңдап жасыруға («жабуға») немесе көрсетуге («ашуға») мүмкіндік береді. Бұл пайдаланушыға үлкен көлемдегі мәтінді басқаруға, қазіргі уақытта қызығушылық тудыратын бөлімдерді ғана қарап отыруға көмектеседі. Әдетте, ішкі элементтері бар табиғи ағаш тәрізді құрылымы бар құжаттармен қолданылады. Бұл мүмкіндіктің басқа атаулары: кеңейту және жиыстыру, кодты жасыру және схема жасау. Microsoft Word-те бұл мүмкіндік «жиыстырылатын схема» деп аталады. Көптеген интерфейстер кодты жиыстыру үшін жақтағы панельде ашылу виджеттерін ұсынады, мысалы, жиыстырылғанда (ішке қарай) немесе кеңейтілгенде (төмен қарай) көрсетілген үшбұрыш, немесе жиыстырылатын (кеңейтілген) мәтін үшін [ ] тіктөртбұрыш, ал кеңейтілетін (жиыстырылған) мәтін үшін [+] тіктөртбұрыш. Кодты жиыстыру мәтін редакторларында, бастапқы код редакторларында және IDE-лерде кездеседі. Жиыстыру құрылымы әдетте компьютерлік тілмен анықталған бағдарламаның синтаксис ағашын қаперіне алады. Ол ендік деңгейлерімен де анықталуы мүмкін, немесе кодтың бір бөлігі ретінде сақталатын немесе одан тыс маркерлерді пайдалану арқылы нақты көрсетілуі мүмкін. Мәтінді жиыстыру – бұл қарапайым мәтінде қолданылатын ұқсас мүмкіндік, онда ішкі элементтер абзастардан, бөлімдерден немесе схема деңгейлерінен тұрады. Бұл мүмкіндікті ұсынатын бағдарламаларға жиыстыру редакторлары, схема жасаушылар және кейбір мәтін өңдеушілер кіреді. Деректерді жиыстыру кейбір ондық редакторларда қолданылады және екілік файлды құрылымдауға немесе қол жетімді емес дерек бөлімдерін жасыруға пайда болады. Жиыстыру деректерді салыстыруда да жиі қолданылады, бір нұсқаны немесе екіншісін таңдау үшін немесе тек айырмашылықтарды көрсету үшін.

Тарих

Эдиторда кодты жиыстырудың ең алғашқы белгілі мысалы NLS жүйесінде кездеседі. Ал, ең алғашқы кең таралған жиыстыру редакторы 1974 жылғы IBM 370 мейнфреймдері үшін жасалған Құрылымдық бағдарламалау құралы (SPF) редакторы болды, ол жолдарды олардың кіріктірілуіне қарай жасыра алатын. Ол таңбалық картасы бар 3270 терминалында көрсетілді. Бұл COBOL сияқты ұзақ кодты тілдер үшін өте пайдалы болды. Кейін ол Интерактивті жүйелік өнімділік құралына (ISPF) дамыды.

Қолдану

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

Контурлау

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

Қорытынды пікірлер

Комментарийлер – адам оқи алатын метадеректердің бір түрі, ал ұзақ комментарийлер код ағынын тоқтата алады. Мұндай жағдай қысқа код бөлігіне жазылған ұзақ түсіндірмеде болуы мүмкін, мысалы, бір жолды түсіндіру үшін абзац, немесе Javadoc немесе XML Documentation сияқты құжаттама құрастырушыларға арналған түсіндірмелерде. Кодты жиыстыру (кодты бүктеу) ұзақ түсіндірмелерді сақтауға, бірақ оларды қажет болғанда ғана көрсетуге мүмкіндік береді. Егер ұзақ түсіндірмеде Python docstrings сияқты бір ғана қорытынды жол болса, бөлім жиырылғанда да қорытынды көрсетілуі мүмкін, соның арқасында қорытынды/толық көрініс жасауға болады.

Құрылымдық бағдарламалауда құрылымды немесе сэндвич кодты көрсету

Құрылымдық бағдарламалау кодтың бірін-бірі қамтитын блоктарынан тұрады, ал кодтың ұзын блоктары – мысалы, ұзақ `switch` операторлары – жалпы құрылымын жасыра алады. Кодты жиыстыру (кодты бүктеу) жалпы құрылымын көруге және қажетті деңгейге дейін ашуға мүмкіндік береді. Бұдан әрі, кейбір жағдайларда, әсіресе қатаң құрылымдық бағдарламалауда (бір функциядан шығу), кеңейтілген кодты қарағанда байқау қиын болатын код үлгілері кездеседі. Мысалы, құрылымдық бағдарламалауда ресурстарды басқару кезінде, әдетте, ресурс алынады, одан кейін осы ресурсты пайдаланатын код блогы орындалады және соңында ресурс босатылады. Ресурсты алу/босату жұптығы арасында ұзақ код блогы болса, оны байқау қиын, бірақ аралық блок жиыстырылса, оңай көрінеді. Сол сияқты, `if-then-else` сияқты шартты кодта, қосымша блоктар шартты оператордан алыс орналасуы мүмкін.

Топтастыру коды

Қосымша топтар кодты топтастыру үшін қолданылуы мүмкін, атап айтқанда, модульді бөлімдерге бөлетін түсініктеме блоктары сияқты нақты топтастыру арқылы, немесе сынып мүшелерін байланысты топтарға жинақтау арқылы, сондай-ақ автоматты түрде сынып мүшелерін қолжетімділік деңгейі бойынша топтастыру сияқты ымдау арқылы.

Көне кодты жасыру

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

Конвенциялар

Кодты жинақтауды қолдау үшін мәтін редакторы мәтін файлында "жинақталу нүктелерін" анықтау механизмін қамтамасыз етуі керек. Кейбір мәтін редакторлары бұл механизмді автоматты түрде ұсынады, ал басқалары пайдаланушымен өзгертілуі немесе толықтырылуы мүмкін бастапқы параметрлерді ұсынады. Жинақтау механизмдері автоматты және қолмен болып екіге бөлінеді – олар бағдарламашыдан қандай да бір талаптарды қажет ете ме? Жинақталу нүктелері әдетте төмендегі бір немесе бірнеше механизмдер арқылы анықталады. Олардың әрқайсысының өзіне тән артықшылықтары мен қиындықтары бар, ал мәтін редакторы бағдарламалық құралын құрастырушы әзірлеушілер қайсысын іске асыру керектігін шешеді. Егер мәтін редакторы бірнеше жинақтау механизмін қолдайтын болса, пайдаланушыға өңделіп жатқан файлға ең қолайлысын таңдау мүмкіндігі беріледі.

Синтаксиске тәуелді

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

Индентация негізінде

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

Токенге негізделген

Токенге негізделген бүктеу нүктелері тек бүктеу нүктелерінің шекараларын анықтау үшін ғана қолданылатын, мәтінде басқа мақсаты жоқ арнайы делимитаторлар арқылы белгіленеді. Бұл тәсілді, ақ орынның орнына басылатын символдар қолданылатын, түйіндемеге негізделген бүктеу нүктелерімен салыстыруға болады. Ең көп қолданылатын делимитаторлар: { бүктелетін бөлімді бастау үшін және } оны аяқтау үшін. Тағы бір маңызды делимитатор – #region (C# директивалары), сәйкесінше #Region (Visual Basic директивалары), Microsoft Visual Studio Code редакторында қолданылады. Бұл синтаксистік тұрғыдан компилятор директивалары ретінде қарастырылады, бірақ компиляцияға әсер етпейді. Қолмен жасалатын әдіс ретінде, токенге негізделген бүктеу, синтаксистік талдау арқылы анықтау мүмкін емес, мысалы, "нақты тапсырмаға қатысты функциялар" сияқты кез келген критерий бойынша кодты топтастыруда икемділік береді. Токенге негізделген бүктеу үшін жолақты сигнализация қажет, бүктеу токендері негізінен құрылымдық түсініктемелер болып табылады, және басқа әдістерден айырмашылығы, олар бастапқы кодта болады және басқа бағдарламашыларға көрінеді. Бұл оларды бөлісуге мүмкіндік береді, бірақ сонымен қатар, белгілі бір файлда жұмыс істейтін барлық бағдарламашылар оларды қолдануын (немесе сақтауын) талап етеді, соның салдарынан келіспеушіліктер мен техникалық қолдау жүктемесі туындауы мүмкін.

Пайдаланушы белгілеген

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