Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- BASIC
- String
- Cleancode
- 정수론
- 따배씨
- greedy
- Algospot
- programmers
- DP
- BOJ
- Python
- dfs
- 따라하며 배우는 C언어
- C
- graph
- Algorithm
- JavaScript
- 생활코딩
- udemy
- C언어
- Math
- web
- 종만북
- 인프런
- sorting
- php
- 따라하면서 배우는 C언어
- server
- BFS
- 백준
Archives
- Today
- Total
몽상실현개발주의
[Udemy/CleanCode] 2.08 임시변수 제거하기 본문
- 임시 변수
- 특정 Scope 내부에서 전역변수처럼 활용되는 변수
- 함수가 커지게 되면, 전역 공간과 다름없는 상황이 발생
- 임시 객체도 전역 객체처럼 사용 될 수 있음
- 임시 변수를 어떻게 CRUD 를 할까 고민해야 함
- 특정 Scope 내부에서 전역변수처럼 활용되는 변수
- 임시 변수의 개선1
function getElements() {
const result = {};
result.title = document.querySelector(".title");
result.text = document.querySelector(".text");
result.value = document.querySelector(".value");
return result;
}
///////////////////////////////////////
function getElements() {
return {
title: document.querySelector(".title"),
text: document.querySelector(".text"),
value: document.querySelector(".value"),
};
}
- 함수의 역할만 보았을때, side Effect 가 많지 않고 부작용이 적음
- DOM 엘리먼트를 가져와서 반환만 함
- 변수의 CRUD를 하기 애매해지게 설계됨
- 임시객체가 생기는 순간, 객체에 접근이 가능하고 CRUD 행위가 가능해짐
- 임시 변수의 개선2
function getDateTime(targetDate) {
let month = targetDate.getMonth();
let day = targetDate.getDate();
let hour = targetDate.Hours();
month = month >= 10 ? month : "0" + month;
day = day >= 10 ? day : "0" + day;
hour = hour >= 10 ? hour : "0" + hour;
return { month, day, hour };
}
/////////////////////////////////
function getDateTime(targetDate) {
let month = targetDate.getMonth();
let day = targetDate.getDate();
let hour = targetDate.Hours();
month = month >= 10 ? month : "0" + month;
day = day >= 10 ? day : "0" + day;
hour = hour >= 10 ? hour : "0" + hour;
return { month, day, hour };
}
function getDateTime() {
const currentDateTime = getDateTime(new Date());
return {
month: currentDateTime.month,
day: currentDateTime.day,
hour: currentDateTime.hour,
};
}
- 추가적인 스펙이 발생하였을때 문제가 발생
- 함수의 추가
- 함수의 수정
- CURD 를 최소화
- 하나의 함수는 명확한 하나의 역할만 수행
- 임시변수를 사용하게 되면, 임수 변수만 조작하게 됨
- 한줄로 추상화한 함수를 활용 가능
- 요약
- 임시변수를 제거하자
- 임시 변수의 사용은 명령형으로 가득한 로직이 된다.
- 어디서 어떻게 잘못되었는지 디버깅이 힘들다.
- 추가적인 코드를 작성하고 싶은 유혹에 빠지기 쉽다.
- 코드의 유지보수가 어렵다
- 임시변수사용의 해결책
- 합수 나누기
- 바로 반환
- 고차함수의 사용
- map, filter, reduce 등
- 명령형 -> 선언형 프로그래밍 코드로 변환
'Language > Javascript' 카테고리의 다른 글
분산된 함수에서 에러 관리를 위한 중앙 집중식 에러 데이터 핸들링 전략 (0) | 2024.02.27 |
---|---|
[Udemy/CleanCode] 2.09 호이스팅 주의하기 (0) | 2022.09.08 |
[Udemy/CleanCode] 2.07 전역 공간 사용 최소화 (0) | 2022.09.08 |
[Udemy/CleanCode] 2.06 function scope & block scope (0) | 2022.09.08 |
[Udemy/CleanCode] 2.05 var 를 지양하자 (0) | 2022.09.08 |
Comments