Eighteeen / CleanCode_Book_Study

📚 클린코드 북 스터디 📚
4 stars 0 forks source link

[의미 있게 구분하라] - 연속된 숫자, 불용어 #1

Closed deepredk closed 3 years ago

deepredk commented 3 years ago

'연속된 숫자를 덧붙이거나 불용어를 추가하는 방식은 적절하지 못하다' 라고 저자가 말했는데

많이 찔리면서도 가끔은 어쩔 수 없는 부분이지 않나? 하는 생각이 듬

1. (연속된 숫자) 그래프나 트리 입력받을때 1 2 이렇게 연결된 노드쌍 한줄씩 입력받을때 있잖어

각각 nodeA/nodeB, node1/node2 식으로 네이밍하는게 최선이지 않나?

2. (불용어) 숫자로서 다룰 건데 잠시 문자열로 둔 것을 'strNumber'라고 지을 때가 많았는데 저자는 '어차피 변수형이 String인걸 알지 않냐'면서 str을 빼라고 한다.

하지만 여기서는 str이 단순히 변수형식을 나타내는 것이라기 보다는 얘가 숫자지만 현재는 잠시 String형이라는걸 나타내는 의도가 있다.

이런 경우에도 '불용어'로 보아야 할까?

sookyeonghwang commented 3 years ago
  1. 그래프나 트리에서는 노드가 연결된 것을 fromNode, toNode라는 식으로 나타내는 사람들을 많이 봤는데, 그 이유가 두 노드를 서로 연결하는 간선을 나타내기 때문에 저렇게 쓰는 것 같아요. 그래서 이 부분은 그동안 A/B, 1,2로 표현했지만 연속된 숫자보다는 from, to가 더 최선의 방법으로 보이네요

    그렇지만 그래프, 트리말고 다른 부분에서 '가끔 어쩔 수 부분이 있지 않을까'에 대한 것은 고민해봐야 할 것 같아요

WinningBean commented 3 years ago
  1. 한방향으로 연결되는 객체의 경우 from과 to로 나뉠 수 있지만 양방향으로 연결되는 경우, 모두를 연결시키고 from to의 의미는 없기 때문에(이런 경우 오히려 from to가 그릇된 정보라고 생각) 이런 경우에는 A, B / 1, 2 등의 네이밍이 최선일 것 같다는 생각이에요. 이 방법이 꺼려진다면 List를 사용하는 방법밖에 없을 거라고 생각해요.

  2. 일단 책에서 말하는 바는 strNumber와 같이 쓰이는 의미와 자료형이 다른 경우가 아니라 NameString같이 쓰이는 의미와 그 자료형이 충분히 같다는 게 예상 가능한 경우를 말하기 때문에 좀 다른 경우라고 생각해요. strNumber는 number인데 숫자 자료형이 아닌 문자 자료형이다. 라는 정보를 담고 있다고 생각합니다.

deepredk commented 3 years ago

개인적으로 내린 결론

1. (연속된 숫자) 단방향에서는 from, to로 작명이 충분히 가능하지만 무방향에서는 nodeA, nodeB의 작명이 불가피하다.

nodeA.add(nodeB); nodeB.add(nodeA);

부족한 설명은 그 다음 코드에서 nodeA, nodeB가 사용되는 맥락이 주어지기 때문에 그렇게 나쁘지 않다고 생각됨

2. (불용어) 승빈 코멘트와 생각이 같음. 이 경우에는 필요 없는 정보가 아님

sookyeonghwang commented 3 years ago

1. 방향 그래프에서는 from, to를 쓰고 무방향 그래프인 경우는 사실 양방향으로 이동이 가능하기 때문에 js에서는

graph[fromNode].push(toNode); graph[toNode].push(fromNode);

로 양쪽 방향을 이어주는 형식으로 짜는게 맞을 것 같아요.

아무래도 트리에서는 부모 자식간의 구조만 주어지고 방향이 아예 존재하지 않기 때문에 nodeA, nodeB로 사용하는 것은 불가피한 것 같네요.

저는 그동안 트리에서는 nodeA, nodeB를 모두 연결해서 사용하는 구조로 썼기 때문에 양방향이라고 써서 더욱 헷갈린 것 같아요.

deepredk commented 3 years ago

결론

  1. 경우에 따라 불가피하게 1/2, A/B를 사용해야 할 때도 있다.
  2. strNumber는 불용어가 아니다.