Кіріспе

Бағдарламалық жасақтаманы әзірлеу қағидасы "Өзіңді қайталама" (DRY) – бағдарламалық жасақтаманы әзірлеу қағидасы, мақсаты өзгеру мүмкіндігі бар ақпаратты қайталауды азайту, оны өзгеріске бейім емес абстракциялармен алмастыру немесе бастапқыда артық ақпаратты болдырмау үшін деректерді нормализациялау болып табылады. DRY принципі былай формулировкаланған: "Жүйедегі әрбір мәліметтің жалғыз, нақты, сенімді көрінісі болуы керек". Бұл принципті Энди Хант пен Дейв Томас "Прагматикалық бағдарламашы" кітабында жариялаған. Олар оны кеңінен қолданады, оның ішінде деректер базасының схемалары, сынақ жоспарлары, құрастыру жүйесі және тіпті құжаттама да бар. DRY принципі табысты қолданылған жағдайда, жүйенің кез келген бір элементін өзгерткенде басқа, логикалық жағынан байланыссыз элементтерді өзгерту қажеттілігі тумайды. Сонымен қатар, логикалық жағынан байланысты элементтердің барлығы болжамды және біркелкі түрде өзгереді, осылайша олар үйлесімділікте сақталады. Кодта әдістер мен кіші бағдарламаларды пайдаланудан басқа, Томас пен Хант DRY принципін қабаттар бойынша сақтау үшін код генераторларына, автоматты құрастыру жүйелеріне және сценарий тілдеріне сүйенеді.

Бір таңдау принципі

DRY-дың нақты бір мысалы – жалғыз таңдау принципі. Бертран Мейер оны былай анықтаған: «Егер бағдарламалық жүйе альтернативалар жиынтығын қолдауға тиіс болса, жүйедегі бір ғана модуль олардың толық тізімін білуі керек». Ол Эйфельді әзірлеу кезінде қолданылды.

СӨТ

DRY-ге қарама-қарсы көзқарас WET деп аталады, бұл әдетте «бәрін екі рет жазу» (немесе «әрқашан жазу», «біз теруді ұнатамыз» немесе «баршаның уақытын ысырап ету») деген аббревиатура ретінде қабылданады. WET шешімдері көбінесе көп деңгейлі архитектураларда кездеседі, мысалы, веб-қосымшадағы формаға түсініктеме өрісін қосуды әзірлеушіге тапсыру мүмкін. «Түсініктеме» мәтіндік тізбегі атаулықта, HTML тегінде, оқу функциясының атында, жеке айнымалыда, деректер базасының DDL-інде, сұраныстарда және т.б. қайталанып кездесуі мүмкін. DRY тәсілі, ең маңыздыларын қоспағанда, барлық өңдеу жұмыстарын азайтатын немесе жоятын, жаңа білімді бір орында қосу мүмкіндігін қалдыратын құралдарды пайдалану арқылы осы артықшылықты жояды. «WET» бағдарламалаудың «DRY» бағдарламалауға баламасы ретіндегі тұжырымы, кем дегенде 2002 жылдан бері Java әлемінде бар, бірақ бұл терминді кім ойлап тапқаны белгісіз.

АХА

Абстракцияларға тағы бір көзқарас – AHA принципі. AHA – Кент С. Доддс сипаттағандай, асығыс абстракциялардан аулақ болу, яғни ең алдымен өзгерістерді оңтайландыру және ерте оңтайландырудан қашу. Бұл принцип Санди Метцтің «бұрыс абстракцияға қарағанда қайталауды қалау» деген ойының ықпалында пайда болды. AHA-ның түбінде инженерлер бағдарламалық жасақтаманың абстракциясын жасауға салған еңбегінің құны ешқашан қайтарылмайтынын (батып кеткен шығын қатесі) түсіну жатыр. Сондықтан инженерлер талаптар өзгере қалған сайын сол абстракцияны қайта-қайта өңдеуге бейім. AHA бағдарламалау WET және DRY шешімдерінің екеуі де сәл қиын өзгертілетін және күтіп ұстауға қиын бағдарламалық жасақтама тудыратынын болжайды. Абстракциямен бастаудың немесе белгілі бір мөлшерде қайталау болғаннан кейін абстракциялаудың орнына, бағдарламалық жасақтама абстракция қажет болғанда немесе қайталаудың өзі кедергіге айналғанда және абстракция қалай жұмыс істеуі керек екені белгілі болғанда икемдірек және тұрақтырақ болады. AHA бағдарламалауды бастапқыда Доддс «ылғал код» деп атады, кейін Даниэль Бартоломей де солай атады, ал Мэтт Райер бұрын DAMP (Прематурлы әдістерді абстракцияламау) деп атаған. Джей Филдс сипаттаған DAMP (Сипаттамалы және мағыналы тіркестер) деген басқа да бағдарламалау принципі болды, бірақ қоғам «ылғал» сөзіне деген мәдени қарсылықпен байланысты MOIST қолдануына қарсы шықты. Доддс Twitter-де балама ұсыныстар сұрады және Шер Скарлетттің AHA ұсынысын қабылдамас бұрын DATE-ті балама ретінде ұсынды.