안녕하세요, 개발자 여러분! 😊 드디어 "좋은 코드 vs 나쁜 코드 비교 탐구" 시리즈의 첫 번째 주제, 바로 이름 짓기입니다! 🎉 "에게, 고작 이름 짓기?" 라고 생각하실 수도 있지만, 전설적인 개발자 로버트 C. 마틴(엉클 밥) 형님도 "코드는 읽는 시간이 짜는 시간보다 훨씬 길다!"고 말씀하셨죠. 그리고 그 '읽는 시간'의 대부분은 바로 이름들을 해독하는 데 쓰인답니다. 그러니 이름만 잘 지어도 개발 효율이 쑥쑥! 코드가 예뻐 보이는 건 덤이고요. "이름만 잘 지어도 반은 먹고 들어간다! 🍛"는 말이 괜히 있는 게 아니라니까요? 😉
자, 그럼 어떤 이름이 우리를 괴롭히고, 어떤 이름이 우리를 행복하게 하는지 한번 파헤쳐 볼까요?
💣 이런 이름, 제발 그만! (Bad Code Examples)
우리 주변에서 심심찮게 발견되는, 하지만 볼 때마다 뒷목 잡게 만드는 '나쁜 이름'들의 유형을 살펴봅시다. 😫
- 의미 불명, 정체 모를 이름 👽
-
// Bad 👎 let a = 10; // 'a'가 대체 뭘까요? 사과? 아보카도? let list1 = getUsers(); // 'list1'은 알겠는데, 'list2'도 있나? 무슨 리스트지? function process(data) { // 무슨 'data'를 어떻게 'process' 한다는 걸까요? // ... }
- 나만 아는 축약어🕵️♀️
-
// Bad 👎 public class UsrMgr { // User Manager? 아니면 User Margin? public Data getUsrVal(String id) { // User Value? User Validation? // ... } public int calcRst(int x, int y) { // Calculate Result? 아니면 Reset? x, y는 또 뭐고... return x + y; } }
- 일관성 제로, 카멜레온 같은 이름 🦎
-
# Bad 👎 user_name = "홍길동" productName = "튼튼한 키보드" // 앗! 여기는 카멜 케이스? def get_customer_Order_History(customer_id): // 으악! 스네이크랑 파스칼이 섞였잖아! # ... pass
- 하는 일과 다른 이름, 배신자 같은 이름 🎭
-
// Bad 👎 function getUserList(userId) { // 이름은 리스트인데... // 실제로는 사용자 한 명의 정보를 반환 return { id: userId, name: "김코딩" }; } let isEnabled = "yes"; // 불리언(true/false)이어야 할 것 같은데 문자열이? 🤔
🧐 나쁜 이름, 왜 문제일까요?
딱 봐도 답답하시죠? 이런 나쁜 이름들은 다음과 같은 문제들을 야기합니다.
- 가독성 와르르 📉: 코드를 읽고 이해하는 데 훨씬 많은 시간과 노력이 필요해요. 마치 암호 해독하는 기분이랄까요?
- 오해와 버그 🌱: 이름만 보고 코드의 동작을 잘못 예측해서 버그를 만들거나, 다른 사람이 만든 버그를 찾기 어렵게 만들어요.
- 유지보수 비용 증가 💸: 코드를 수정하거나 기능을 추가할 때마다 "이 변수가 뭐였더라?", "이 함수가 무슨 일 하는 거였지?" 하고 한참을 되짚어봐야 하죠. 시간은 금인데!
- 협업의 걸림돌 🚧: 나만 아는 이름, 나만 이해하는 코드는 동료 개발자들과의 협업을 매우 어렵게 만듭니다. 코드 리뷰 시간도 길어지고, 서로 답답해지는 상황이 발생하죠.
결국 나쁜 이름은 우리 모두의 생산성을 떨어뜨리고, 스트레스를 유발하는 주범 중 하나랍니다!
✨ 이런 이름, 아주 칭찬해! (Good Code Examples)
자, 그럼 이제 우리를 행복하게 만드는 '좋은 이름'들은 어떤 모습일까요? 😊
- 의도가 명확히 드러나는 이름 ✅
-
// Good 👍 let maxLoginAttempts = 10; let activeUsers = getUsers(); function calculateTotalPrice(cartItems) { // ... }
- 구체적이고 서술적인 이름 (주석이 필요 없을 정도!) 📝
-
// Good 👍 public class CustomerService { public UserProfile findUserById(String userId) { // ... } public double calculatePriceWithTaxAndShipping(Order order) { // ... } }
- 일관된 명명 규칙 적용 (팀이나 프로젝트의 규칙을 따르세요!) 🧑🤝🧑
- camelCase: productName, calculateDiscountRate (JavaScript, Java에서 주로 사용)
- snake_case: product_name, calculate_discount_rate (Python, Ruby에서 주로 사용)
- PascalCase: ProductName, CalculateDiscountRate (클래스 이름에 주로 사용)
-
# Good 👍 (snake_case 일관 적용) user_name = "홍길동" product_name = "튼튼한 키보드" def get_customer_order_history(customer_id): # ... pass
- 역할과 타입을 명확히 알려주는 이름 🎯
-
// Good 👍 function findUser(userId) { // 단일 사용자를 찾는다는 것이 명확! return { id: userId, name: "박해커" }; } let isEnabled = true; // 이름만 봐도 불리언 값임을 알 수 있음 function hasPermission(user, permission) { // 'has', 'is', 'can' 등은 불리언 반환 함수에 적합! // ... return true; }
💡 좋은 이름, 어떤 점이 좋을까요?
좋은 이름은 마치 잘 만들어진 지도 같아요. 코드의 세계를 탐험하는 우리에게 정확한 길을 안내해 주죠!
- 코드 이해도 UP! 🚀: 코드를 읽는 즉시 그 의미와 역할이 파악됩니다.
- 디버깅 시간 단축 ⏳: 변수나 함수의 역할이 명확하니, 문제의 원인을 찾는 것도 훨씬 수월해져요.
- 유지보수 용이성 증대 🛠️: 코드를 수정하거나 기능을 추가할 때 자신감을 갖고 빠르게 작업할 수 있습니다.
- 협업 효율 극대화 🤝: 팀원 모두가 코드를 쉽게 이해하고 소통할 수 있어 시너지가 납니다. 코드 리뷰도 즐거워지고요!
🎯 이름 짓기 핵심 요약 & 베스트 프랙티스
자, 오늘 배운 내용을 핵심만 쏙쏙 정리해 볼까요?
- 의미를 명확하게 전달하라! 💬: 이름만 봐도 변수의 데이터가 무엇인지, 함수가 무슨 일을 하는지 알 수 있도록 구체적이고 서술적인 이름을 사용하세요.
- 일관성을 유지하라! 📏: 프로젝트나 팀에서 사용하는 명명 규칙(camelCase, snake_case 등)을 일관되게 적용하세요. 섞어 쓰면 혼란만 가중됩니다!
- 구체적으로 작성하라 (주석이 필요 없을 정도로)! ✍️: 좋은 이름은 그 자체로 훌륭한 문서 역할을 합니다. "이게 뭐였지?" 하며 주석을 찾아 헤맬 필요가 없도록요! (물론, 복잡한 로직에는 주석이 필요할 수 있습니다 😉)
✨ 정갈한 기능, 정갈한 네이밍!
이름 짓기는 단순히 코드를 보기 좋게 꾸미는 것을 넘어, 코드의 품질과 개발 생산성을 좌우하는 매우 중요한 작업이에요. 처음에는 조금 어색하고 시간이 더 걸리는 것처럼 느껴질 수 있지만, 습관이 되면 정말 강력한 무기가 될 거랍니다!
오늘부터 여러분의 코드 속 변수, 함수, 클래스들에 애정을 담아 멋진 이름표를 달아주는 건 어떨까요? ✨ 분명 코딩이 훨씬 즐거워질 거예요!
다음 편에서는 "주석 없이는 해독 불가!" vs "코드가 곧 문서" - 주석의 올바른 활용법에 대해 이야기 나눠보겠습니다. 기대 많이 해주세요! 😊
'프로그래밍 > 개발 팁' 카테고리의 다른 글
[좋코vs나코] 제3편: "함수 하나가 백과사전?" - 단일 책임 원칙 (SRP)과 함수 설계 📜 (5) | 2025.05.16 |
---|---|
[좋코vs나코] 제2편: "주석 없이는 해독 불가!" vs "코드가 곧 문서" - 주석의 올바른 활용법 💬 (4) | 2025.05.16 |
[좋코vs나코]좋은 코드, 왜 중요할까요? 🤔 코드 품질 UP! (3) | 2025.05.15 |
[개발자 생산성 향상 시리즈 #10]나만의 작업실 꾸미기 - 개인 프로젝트 관리 도구 (Notion, Trello 활용법) 🚀 (3) | 2025.05.14 |
[개발자 생산성 향상 시리즈 #9]CI/CD 파이프라인 맛보기 (GitHub Actions 활용) 🛠️ (2) | 2025.05.14 |