본문 바로가기
코딩

리팩토링 - 중복 제거하여 코드 효율화하기 - this , var 키워드 활용

by DimakeMoney 2020. 9. 6.

좋은 프로그램은 간결한 코드로 이루어집니다.

 

코드에 중복된 내용을 제거하고 간결한 구조로 유지 보수하는 것을 리팩터링이라 합니다. 아래 예시는 버튼 한 개를 클릭할 때마다, 배경화면 및 본문의 글자색을 변경하는 코드입니다. 버튼의 값이 night 일 때 클릭하면, 배경이 네이비색으로 바뀝니다. 글자색은 노란색으로 바뀌며 버튼 안의 값 night는 day로 변경됩니다.

 

<! DOCTYPE html>

<html>

<head>

<title> slim </title>

<meta charset="utf-8">

</head>

<body>

<h1> sample text </h1>

<input id="transfer" type="button" value="night" onclick="

if(document.querySelector('#transfer'). value === 'night') {

document.querySelector('body'). style.backgroundColor = 'navy';

document.querySelector('body'). style.color = 'yellow';

document.querySelector('#transfer'). value='day';

} else {

document.querySelector('body'). style.backgroundColor = 'skyblue';

document.querySelector('body'). style.color = 'black';

document.querySelector('#transfer'). value='night';

}

">

</body>

</html>

 

 

 

반면에 버튼의 값이 day일 때 클릭하면, 배경색은 하늘색으로 바뀝니다. 글자색은 검정이 되며 버튼 안의 값은 night로 변경됩니다.

 

이 버튼을 2개 더 추가해보겠습니다. <input> 태그를 복사해서 2 군데에 붙여 넣습니다. 버튼을 클릭해보면 처음 버튼은 문제없이 잘 작동합니다. 그러나 두 번째, 세 번째 버튼의 속성 값 night가 day로 변경되지 않음을 확인할 수 있습니다. 총 3개의 버튼이 각자 잘 수행할 수 있도록 id를 transfer 2 , transfer3 등으로 각자 지정해줄 수 있습니다. 하지만 일일이 id를 지정하고 수정하는 것인 매우 비효율적입니다.

 

 

속성이 속해 있는 태그 자신을 불러오는 키워드 this

위의 예시는 id를 transfer로 지정한 후 자바스크립트 명령어로 document.querySelector('#transfer')로 id 자신의 내용을 불러오는 코드입니다. 굳이 길게 작성할 필요 없이 this를 사용하고, 지정해 놓은 id는 삭제합니다. id transfer의 속성 값을 불러와서 night, day 등으로 변경하는 document.querySelector('#transfer'). value='night';도 this를 적용하여 수정합니다.

 

<! DOCTYPE html>

<html>

<head>

<title> slim </title>

<meta charset="utf-8">

</head>

<body>

<h1> sample text </h1>

<input type="button" value="night" onclick="

if(this.value === 'night') {

document.querySelector('body'). style.backgroundColor = 'navy';

document.querySelector('body'). style.color = 'yellow';

this.value='day';

} else {

document.querySelector('body'). style.backgroundColor = 'skyblue';

document.querySelector('body'). style.color = 'black';

this.value='night';

}

">

</body>

</html>

 

자바스크립트 키워드 var 변수 선언을 통해 중복된 값 제거하기

 

var는 변수 variable의 앞 3글자이며, 데이터가 변하는 수를 의미합니다. 변수란 데이터를 담기 위한 메모리 공간이라고 볼 수 있습니다. var 키워드를 이용해 변수를 선언함과 동시에 특정 값을 할당합니다. 중복되는 코드를 target이라는 변수로 선언하겠습니다. 중복 코드는 document.querySelector('body');입니다. 

 

var target = document.querySelectro('body'); 로 변수를 선언한 후 중복된 코드를 target으로 수정합니다.

 

<! DOCTYPE html>

<html>

<head>

<title> slim </title>

<meta charset="utf-8">

</head>

<body>

<h1> sample text </h1>

<input type="button" value="night" onclick="

var target=document.querySelector('body');

if(this.value === 'night') {

target.style.backgroundColor = 'navy';

target.style.color = 'yellow';

this.value='day';

} else {

target.style.backgroundColor = 'skyblue';

target.style.color = 'black';

this.value='night';

}

">

</body>

</html>

댓글