Tips for Naming variables

Intro

<코딩 제 1장 1절. 모든 것은 이름으로부터>

e.g.
<ListView
    android:id="@+id/listView1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

안드로이드 앱을 개발하는 중 나는 위와 같은 코드를 작성해서 공유했다. 문제가 없어 보이겠지만 문제가 있다! 정확히는 listView1과 같은 변수명에 대한 문제다.

  • 코드를 실행할 때 문제가 생겨 수정하거나 디버깅할 때 정확히 할 수 있을까?
  • 혼자가 아닌 다른 사람들과 협업을 할 경우, 이 변수의 이름을 쉽게 파악할 수 있을까?
  • 변수 이름을 보고 정확히 그 쓰임을 알 수 없어, 전체 코드의 흐름을 파악해야한다는 문제를 야기한다. (시간도 많이 걸리고!)
  • (+ 본인이 나중에 코드를 살펴볼 때도 기억이 나지 않으면 많은 시간이 소요된다!!)

그래서 변수명을 정하는 방법에 대해서 알아보려고 한다.

Tips for naming variables

Clear Name

이름은 명확해야 한다. 이 변수가 어떤 역할을 하는 것인지 명확하게 표현을 할 수 있어야 한다.

e.g.
public class ExpandableDataMaker {
    public HashMap<String, List<String>> getData() {
        HashMap<String, List<String>> expandableListDetail = new HashMap<>();
           // ...skip...
        return expandableListDetail;
    }
}

ExpandableDataMaker라는 class를 생성해, 특정 ExpandableList를 만드는데 사용을 했다. (위의 exampled에서 Test1의 하위 리스트를 만드는 것이라고 가정) 이 경우 모든 ExpamdableList를 설명하는 것이 아닌 특정 항목에 대한 것을 설명하는 기능인 것이다. 이에 좀 더 변수명을 잘 정하고자 한다면, 변수를 이 기능을 설명하는 것으로 바꾸어야 한다. (나도 아직 부족해서 무엇이 맞는지는 모르지만 아마도 만든다면 MenuDataMaker와 같은 느낌으로 만들지 않을까 싶다 ㅎㅎ)

Reader’s Point of View

독자의 관점에서 보기 쉬워야 한다. 여기서 말하는 독자는 나를 포함한다. 미래의 내가 봤을 때도 쉽게 잘 파악할 수 있어야 하며, 다른 사람이 보기에도 쉽게 파악할 수 있어야 한다.

e.g.
String[] appList;

ListView applist = // ..skip...

위와 같은 상황에서 appList와 applist는 처음 코드를 작성할 때에는 ArrayListview로 나누어서 인식할 수 있다. 하지만 코드의 아래쪽에서 이 변수들을 기억할 수 있을까?(응,,,기억할 수 있을지도?) 부정확하다면 다시 위로 올라와서 각각의 변수의 정의를 확인해야 할 것이다. 즉, 나를 위해서라도 다시 한 번 Clear Name은 중요하다는 것이다. 독자의 관점에서 꼭 생각해보자! 이 이름을 나중에 봤을 때도 잘 기억할 수 있는지!

References

P.S. 아무튼 변수 이름이 정말 중요하다는 것! 좋은 습관을 위해서 저도 노력해보겠습니다😉 추가로 더 알게 되는 내용이 있다면 업데이트 하겠습니다! =)