210322_B책_한 글자로 명명하지 않기

정재현·2021년 3월 22일
0

TIL2

목록 보기
22/79

오늘은 한글자로 명명하지 않는 내용을 배운다.
사실 한글자로 나는 자주 명명한다.
물론 하고나서 다시 명명한다..! 잘하진않지만..!
내가 제일 자주 사용하는
String s = ...;
...;;

어떤 코드 기반이든 이름이 한 글자인 변수가 있기 마련이다.
빠르게 입력할 수 있고 어떤 IDE에서는 아직도 한 글자짜리 이름을 생성하니 꽤 있는 일.
하지만 그 덕분에 코드는 훨씬 더 읽기 어려워진다.

class Inventory {
 List<Supply> sl = new ArrayList<>();
 
 boolean isInStock(String n) {
  Supply s = new Supply(n);
  int l = 0;
  int h = sl.size() - 1;
  
  while (l <= h) {
   int m = 1 + (h - 1) / 2;
   int c = sl.get(m).compareTo(s);
   
   if (c < 0) {
    l = m + 1;
   } else if (c > 0) {
    h = m -1;
   } else {
    return true;
   }
  }
 return false;
 }
}

우선 메서드 내 변수는 모두 한 글자이다.
한 글자 이름에는 이유가 있을 수 없다.
어떤 이론가는 그냥 그렇게 쓰고 싶다고 하지만 코드는 단순한 수학 이론이 아니다.
일반적으로 프로그래머는 코드를 하루에 수천 줄씩 읽는다.
변수명이 반복되고 코드 맥락에 어긋나면 읽기 점점 어려워기때문에,
그래서 변수명에 의미를 불어넣어야 하는데 그건 한 글자로는 불가능하다.

class Inventory {
 List<Supply> sortedList = new ArrayList<>();
 
 boolean isInStock(String name) {
  Supply supply = new Supply(name);
  int low = 0;
  int high = sortedList.size() - 1;
  
  while (low <= high) {
   int middle = low + (high - low) / 2;
   int comparison = sortedList.get(middle).compareTo(supply);
   
   if (comparison < 0) {
    low = middle + 1;
   } else if (comparison > 0) {
    high = middle -1;
   } else {
    return true;
   }
  }
 return false;
 }
}

한 글자로 되어있던 변수들이 제대로 알맞은 이름을 찾았다.
이름이 길어 코드가 비효율적이 될까 걱정할 수도 있지만 전혀 그렇지않다.

오늘의 코멘트: 한 글자로 변수명을 짓지는 않지만 간략한 센스있는 명명이 필요하다.

profile
"돈받고 일하면 프로다"

0개의 댓글