많이 추천하는 변수와 함수정의와 로직의 위치
const doSomething = (value) => {
const copiedValue = [...value]
const firstDo = () => {
console.log('첫번째 할 일')
console.log(copiedValue)
}
const secondDo = () => {
console.log('두번째 할 일')
}
const thirdDo = () => {
console.log('세번째 할 일')
}
try {
firstDo()
secondDo()
thirdDo()
} catch (e) {
console.log("Error: ", e)
}
}
변수와 로직을 멀리 둬도 되는건가?
이 함수에 구현 부분만 빨리 보고 싶은데 제일 아래로 내려가야 되나?
변수랑 로직이랑 떨어져있어서 이렇게 바꾸면 안되려나?
const doSomething = (value) => {
const copiedValue = [...value]
try {
firstDo()
secondDo()
thirdDo()
} catch (e) {
console.log("Error: ", e)
}
function firstDo(){
console.log('첫번째 할 일')
console.log(copiedValue)
}
function secondDo(){
console.log('두번째 할 일')
}
function thirdDo(){
console.log('세번째 할 일')
}
}
내부 함수의 함수명만 알기 쉽게 작성하면 문제가 없지 않을까?
더 깊이 알고 싶은 함수만 가서 확인하면 되지 않을지..
근데 함수안에 함수안에… 이런식으로 깊어지면 함수의 구현 사항을 먼저 보고 로직을 보는게 좋을거 같기도 함
이제 제일 좋겠다 생각했었음
그럼 변수를 내리면?
const doSomething = (value) => {
const firstDo = () => {
console.log('첫번째 할 일')
console.log(copiedValue)
}
const secondDo = () => {
console.log('두번째 할 일')
}
const thirdDo = () => {
console.log('세번째 할 일')
}
const copiedValue = [...value]
try {
firstDo()
secondDo()
thirdDo()
} catch (e) {
console.log("Error: ", e)
}
}
네번째는 잠깐 내부함수에 대해서 고민된 내용
const doSomething = (value) => {
const copiedValue = [...value]
const firstDo = () => {
console.log('첫번째 할 일')
console.log(copiedValue)
}
const secondDo = (value) => {
console.log('두번째 할 일')
console.log(value)
}
const thirdDo = () => {
console.log('세번째 할 일')
}
try {
firstDo()
secondDo(copiedValue)
thirdDo()
} catch (e) {
console.log("Error: ", e)
}
}
처음에는 이 스코프 안에서 사용할 함수이고,
외부로 뺄때는 프로퍼티랑 인자만 넣어주면 되는데,
굳이 인자로 전달받아야 되나? 싶었음
변수랑 멀리 떨어져 있어도 로직 구현 부분 읽을때 알 수 있으면 상관없을거 같음
const doSomething = (values) => {
const copiedValues = [...values]
const firstDo = (values) => {
console.log('첫번째 할 일')
console.log(values)
}
const secondDo = () => {
console.log('두번째 할 일')
}
const thirdDo = (values) => {
console.log('세번째 할 일')
console.log(values.map((data)=> `가공한값 ${data}`))
}
try {
firstDo(copiedValue)
secondDo()
thirdDo(copiedValue)
} catch (e) {
console.log("Error: ", e)
}
}
지인 개발자분께서 언제든 외부로 뺄수 있기 때문에 순수함수로 구현을 많이 한다라고 하셨었는데,
변수를 표현하려다보니 이름이 너무 길었고
그래서 가독성을 더 해치는거 같아 내부함수에서는 그냥 가져다 쓰는 방식으로 구현을 하려고 했었다
근데 막상 수정하고 보니 어떤 함수에서 무슨일 하는지 어떤 변수를 어디서 쓰는지 왔다갔다 확인해야 됐었고,
구현부분만 확인하는 경우는 거의 없었기 때문에
5번째 방식이 제일 좋은거 같았음
1. 변수 -> 함수 정의 -> 로직 구현 순으로 작성하기
2. 함수는 큰 개념부터 작은개념으로 내려가기
3. 인자로 모두 빼서 순수함수로 구현하기