본문 바로가기
프로그래밍/개발 팁

[좋코vs나코] 제1편: "이름이 왜 이래?" - 명확한 이름 짓기의 중요성 🏷️

by 다다면체 2025. 5. 15.
728x90
반응형

안녕하세요, 개발자 여러분! 😊 드디어 "좋은 코드 vs 나쁜 코드 비교 탐구" 시리즈의 첫 번째 주제, 바로 이름 짓기입니다! 🎉 "에게, 고작 이름 짓기?" 라고 생각하실 수도 있지만, 전설적인 개발자 로버트 C. 마틴(엉클 밥) 형님도 "코드는 읽는 시간이 짜는 시간보다 훨씬 길다!"고 말씀하셨죠. 그리고 그 '읽는 시간'의 대부분은 바로 이름들을 해독하는 데 쓰인답니다. 그러니 이름만 잘 지어도 개발 효율이 쑥쑥! 코드가 예뻐 보이는 건 덤이고요. "이름만 잘 지어도 반은 먹고 들어간다! 🍛"는 말이 괜히 있는 게 아니라니까요? 😉

자, 그럼 어떤 이름이 우리를 괴롭히고, 어떤 이름이 우리를 행복하게 하는지 한번 파헤쳐 볼까요?

반응형

💣 이런 이름, 제발 그만! (Bad Code Examples)

우리 주변에서 심심찮게 발견되는, 하지만 볼 때마다 뒷목 잡게 만드는 '나쁜 이름'들의 유형을 살펴봅시다. 😫

  1. 의미 불명, 정체 모를 이름 👽
  2. // Bad 👎
    let a = 10; // 'a'가 대체 뭘까요? 사과? 아보카도?
    let list1 = getUsers(); // 'list1'은 알겠는데, 'list2'도 있나? 무슨 리스트지?
    function process(data) { // 무슨 'data'를 어떻게 'process' 한다는 걸까요?
      // ...
    }
    
  3. 나만 아는 축약어🕵️‍♀️
  4. // 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;
      }
    }
    
  5. 일관성 제로, 카멜레온 같은 이름 🦎
  6. # Bad 👎
    user_name = "홍길동"
    productName = "튼튼한 키보드" // 앗! 여기는 카멜 케이스?
    def get_customer_Order_History(customer_id): // 으악! 스네이크랑 파스칼이 섞였잖아!
        # ...
        pass
    
  7. 하는 일과 다른 이름, 배신자 같은 이름 🎭
  8. // Bad 👎
    function getUserList(userId) { // 이름은 리스트인데...
      // 실제로는 사용자 한 명의 정보를 반환
      return { id: userId, name: "김코딩" };
    }
    
    let isEnabled = "yes"; // 불리언(true/false)이어야 할 것 같은데 문자열이? 🤔
    

🧐 나쁜 이름, 왜 문제일까요?

딱 봐도 답답하시죠? 이런 나쁜 이름들은 다음과 같은 문제들을 야기합니다.

  • 가독성 와르르 📉: 코드를 읽고 이해하는 데 훨씬 많은 시간과 노력이 필요해요. 마치 암호 해독하는 기분이랄까요?
  • 오해와 버그 🌱: 이름만 보고 코드의 동작을 잘못 예측해서 버그를 만들거나, 다른 사람이 만든 버그를 찾기 어렵게 만들어요.
  • 유지보수 비용 증가 💸: 코드를 수정하거나 기능을 추가할 때마다 "이 변수가 뭐였더라?", "이 함수가 무슨 일 하는 거였지?" 하고 한참을 되짚어봐야 하죠. 시간은 금인데!
  • 협업의 걸림돌 🚧: 나만 아는 이름, 나만 이해하는 코드는 동료 개발자들과의 협업을 매우 어렵게 만듭니다. 코드 리뷰 시간도 길어지고, 서로 답답해지는 상황이 발생하죠.

결국 나쁜 이름은 우리 모두의 생산성을 떨어뜨리고, 스트레스를 유발하는 주범 중 하나랍니다!

✨ 이런 이름, 아주 칭찬해! (Good Code Examples)

자, 그럼 이제 우리를 행복하게 만드는 '좋은 이름'들은 어떤 모습일까요? 😊

  1. 의도가 명확히 드러나는 이름 ✅
  2. // Good 👍
    let maxLoginAttempts = 10;
    let activeUsers = getUsers();
    function calculateTotalPrice(cartItems) {
      // ...
    }
    
  3. 구체적이고 서술적인 이름 (주석이 필요 없을 정도!) 📝
  4. // Good 👍
    public class CustomerService {
      public UserProfile findUserById(String userId) {
        // ...
      }
      public double calculatePriceWithTaxAndShipping(Order order) {
        // ...
      }
    }
    
  5. 일관된 명명 규칙 적용 (팀이나 프로젝트의 규칙을 따르세요!) 🧑‍🤝‍🧑
    • camelCase: productName, calculateDiscountRate (JavaScript, Java에서 주로 사용)
    • snake_case: product_name, calculate_discount_rate (Python, Ruby에서 주로 사용)
    • PascalCase: ProductName, CalculateDiscountRate (클래스 이름에 주로 사용)
  6. # Good 👍 (snake_case 일관 적용)
    user_name = "홍길동"
    product_name = "튼튼한 키보드"
    def get_customer_order_history(customer_id):
        # ...
        pass
    
  7. 역할과 타입을 명확히 알려주는 이름 🎯
  8. // Good 👍
    function findUser(userId) { // 단일 사용자를 찾는다는 것이 명확!
      return { id: userId, name: "박해커" };
    }
    
    let isEnabled = true; // 이름만 봐도 불리언 값임을 알 수 있음
    function hasPermission(user, permission) { // 'has', 'is', 'can' 등은 불리언 반환 함수에 적합!
      // ...
      return true;
    }
    

💡 좋은 이름, 어떤 점이 좋을까요?

좋은 이름은 마치 잘 만들어진 지도 같아요. 코드의 세계를 탐험하는 우리에게 정확한 길을 안내해 주죠!

  • 코드 이해도 UP! 🚀: 코드를 읽는 즉시 그 의미와 역할이 파악됩니다.
  • 디버깅 시간 단축 ⏳: 변수나 함수의 역할이 명확하니, 문제의 원인을 찾는 것도 훨씬 수월해져요.
  • 유지보수 용이성 증대 🛠️: 코드를 수정하거나 기능을 추가할 때 자신감을 갖고 빠르게 작업할 수 있습니다.
  • 협업 효율 극대화 🤝: 팀원 모두가 코드를 쉽게 이해하고 소통할 수 있어 시너지가 납니다. 코드 리뷰도 즐거워지고요!

🎯 이름 짓기 핵심 요약 & 베스트 프랙티스

자, 오늘 배운 내용을 핵심만 쏙쏙 정리해 볼까요?

  1. 의미를 명확하게 전달하라! 💬: 이름만 봐도 변수의 데이터가 무엇인지, 함수가 무슨 일을 하는지 알 수 있도록 구체적이고 서술적인 이름을 사용하세요.
  2. 일관성을 유지하라! 📏: 프로젝트나 팀에서 사용하는 명명 규칙(camelCase, snake_case 등)을 일관되게 적용하세요. 섞어 쓰면 혼란만 가중됩니다!
  3. 구체적으로 작성하라 (주석이 필요 없을 정도로)! ✍️: 좋은 이름은 그 자체로 훌륭한 문서 역할을 합니다. "이게 뭐였지?" 하며 주석을 찾아 헤맬 필요가 없도록요! (물론, 복잡한 로직에는 주석이 필요할 수 있습니다 😉)

✨ 정갈한 기능, 정갈한 네이밍!

이름 짓기는 단순히 코드를 보기 좋게 꾸미는 것을 넘어, 코드의 품질과 개발 생산성을 좌우하는 매우 중요한 작업이에요. 처음에는 조금 어색하고 시간이 더 걸리는 것처럼 느껴질 수 있지만, 습관이 되면 정말 강력한 무기가 될 거랍니다!

오늘부터 여러분의 코드 속 변수, 함수, 클래스들에 애정을 담아 멋진 이름표를 달아주는 건 어떨까요? ✨ 분명 코딩이 훨씬 즐거워질 거예요!

다음 편에서는 "주석 없이는 해독 불가!" vs "코드가 곧 문서" - 주석의 올바른 활용법에 대해 이야기 나눠보겠습니다. 기대 많이 해주세요! 😊

728x90
반응형