В компьютерном программировании раздувание кода — это создание программного кода ( исходного кода или машинного кода ), который воспринимается как неоправданно длинный, медленный или иным образом расточительный. Раздувание кода может быть вызвано неадекватностью языка программирования , на котором написан код, компилятора, используемого для его компиляции, или программиста, пишущего его. Таким образом, хотя раздувание кода обычно относится к размеру исходного кода (созданного программистом), его можно использовать для обозначения размера сгенерированного кода или даже размера двоичного файла .
Следующий алгоритм JavaScript имеет большое количество избыточных переменных, ненужной логики и неэффективную конкатенацию строк.
// Сложная функция TK2getImageHTML ( размер , масштаб , сенсор , маркеры ) { var strFinalImage = "" ; var strHTMLStart = '<img src="' ; var strHTMLEnd = '" alt="Карта"/>' ; var strURL = "http://maps.google.com/maps/api/staticmap?center=" ; var strSize = '&size=' + размер ; var strZoom = '&zoom=' + масштабирование ; var strSensor = '&sensor=' + датчик ; strURL += маркеры [ 0 ]. широта ; стрURL += "," ; strURL += маркеры [ 0 ]. долгота ; стрURL += стрSize ; стрURL += стрZoom ; стрURL += стрсенсор ; for ( var я = 0 ; я < маркеры . длина ; я ++ ) { strURL += маркеры [ я ]. добавитьМаркер (); } StrFinalImage = strHTMLStart + strURL + strHTMLEnd ; вернуть стрфиналимаже ; };
Эту же логику можно более эффективно изложить следующим образом:
// Упрощенный const TK2getImageHTML = ( size , zoom , sensor , markers ) => { const [ { latitude , longitude } ] = markers ; let url = `http://maps.google.com/maps/api/staticmap?center= ${ latitude } , ${ longitude } &size= ${ size } &zoom= ${ zoom } &sensor= ${ sensor } ` ; маркеры.forEach ( маркер = > url += маркер.addMarker ( ) ) ; return `<img src=" ${ url } " alt="Карта" />` ; };
Разница в плотности кода между различными компьютерными языками настолько велика, что зачастую требуется меньше памяти для хранения программы, написанной на «компактном» языке (например, на предметно-ориентированном языке программирования , Microsoft P-Code или потоковом коде ), и интерпретатора для этого компактного языка (написанного на машинном коде), чем для хранения программы, написанной непосредственно на машинном коде .
Вот некоторые методы уменьшения раздувания кода: [1]