함수는 동사로 시작한다 🏃
함수 = 동작 = 동사로 시작 🏃
함수는 "무언가를 한다"
→ 이름도 "무엇을 하는지" 동사로 시작
데이터를 다루는 4가지 기본 동작 (Create, Read, Update, Delete)
Create - 생성
createUser()addTodo()
Read - 읽기
getUser()fetchTodoList()
Update - 수정
updateUser()editTodo()
Delete - 삭제
deleteUser()removeTodo()
💡 CRUD는 모든 앱의 기본! 게시판, SNS, 쇼핑몰 모두 CRUD로 이루어져 있음
📌 CRUD 동사 조합 참고표
Create
create, add, insert,
new, register
Read
get, fetch, load,
find, read
Update
update, edit, set,
modify, change
Delete
delete, remove, clear,
destroy
💡 팀마다 선호하는 조합이 다름 (예: get/set/add/delete 또는 fetch/update/create/remove)
get - 가져오기
getUserName()getInputValue()
set - 설정하기
setUserName()setInputValue()
calculate - 계산하기
calculateTotal()calculateAverage()
check - 확인하기
checkIsValid()checkIsEmpty()
update - 업데이트하기
updateDisplay()updateCounter()
create - 만들기
createElement()createUser()
delete - 삭제하기
deleteItem()deleteUser()
show/hide - 보이기/숨기기
showModal()hideMenu()
function total() { /* 계산? 반환? 출력? */ }
function user() { /* 가져오기? 만들기? 삭제? */ }
function display() { /* 무엇을? 어떻게? */ }
🤔 문제점:
함수 이름만 보고는 무엇을 하는지 알 수 없음
function calculateTotal() { /* 계산 */ }
function getCurrentUser() { /* 가져오기 */ }
function updateDisplay() { /* 업데이트 */ }
✨ 개선점:
함수 이름만 보고도 무엇을 하는지 명확!
function getUserAndUpdateDisplayAndSendEmail() {
// 함수 하나가 3가지 일을 함!
const user = getUser();
updateDisplay(user);
sendEmail(user);
}
function processUserLogin() {
const user = getUser();
updateDisplay(user);
sendWelcomeEmail(user);
}
function getUser() { /* ... */ }
function updateDisplay(user) { /* ... */ }
function sendWelcomeEmail(user) { /* ... */ }
✨ 원칙
함수 하나 = 한 가지 일
이름이 너무 길어진다면, 너무 많은 일을 하는 것!
대부분의 함수는 동사로 시작하지만, 특수한 경우 예외도 있음
onClick(), onSubmit(),
onMouseEnter()
→ React, Vue 등에서 자주 사용
btn.addEventListener("click", () => { /* ... */ })
→ 이름이 없으므로 예외
UserProfile(), TodoList(),
Header() (PascalCase)
→ React 함수 컴포넌트 (명사로 작성)
User(), Product() (PascalCase)
→ 클래스처럼 사용되는 함수
$() (jQuery), router()
→ 라이브러리의 관례
⚠️ 초보자는 "동사로 시작" 원칙을 따르는 것이 안전!
아래 함수들에 더 좋은 이름을 붙여보세요:
1. function name() { return "홍길동"; }
2. function display() { element.textContent = count; }
3. function total(a, b) { return a + b; }
4. function valid(email) { return email.includes("@"); }
5. function number() { count = count + 1; }
1. getUserName() 또는 getName()
2. updateDisplay() 또는 updateCounter()
3. calculateSum() 또는 addNumbers()
4. checkIsValidEmail() 또는 validateEmail()
5. incrementCount() 또는 increaseCounter()