먼저, 본인 스타일대로 아무 코드나 짭니다. 버그 나오면 골치 아파지니, 일단은 간결하고 읽기 쉽게 짭시다.
이제, 만들어둔 프로그램을 백업해 놓고 리팩토링을 시작합니다. '읽기 어려운 코드 작성'의 꽃은 이름과 인자 바꾸기입니다. 어떤 식으로 이름을 바꿀까요?
아침 먹고 땡. render() 함수를 breakfast()로 바꿉니다.
점심 먹고 땡. Position 구조체를 Lunch로 바꿉니다.
창문을 열어보니 비가 오네요. clear() 함수를 raindrops()로 바꿉니다.
지렁이 세 마리가 기어갑니다. draw(x, y, size) 함수를 iloveworms(worm, bug, insect)로 바꿉니다.
아이고 무서워 해골바가지. display() 함수를 skeleton()으로 바꿉니다.
* 비쥬얼 스튜디오와 같은 IDE의 리팩토링 기능을 이용하면 버그를 최소화하여 이 과정을 진행할 수 있습니다.
이렇게만 해도 당신의 코드는 이미 한 눈에 안 들어오는 코드가 됩니다. 보통 코드 리딩은 코드에 선언된 함수의 이름을 보고 그 역할을 파악한 뒤 어떤 식으로 구현되었는지 분석하는 식으로 이루어집니다. 하지만 함수 이름이 skeleton() 따위면, 이 함수의 역할을 파악하는 데에서부터 막힙니다. 코드를 살펴보면서 뭐하는 함수인지 알아내고, 또 그것을 기억해야 하거든요. 완전 시간 낭비죠.
하지만 여기서 멈추기 싫으신 분들은 다음과 같은 방법들을 사용해 보세요.
1. 함수의 인자를 구조체나 배열 같은 걸로 묶어보세요. 구조체일 경우, 구조체 안에 쓸데없고 의미불명인 변수들을 잔뜩 선언해 놓으세요.
2. 함수를 쪼개고, 쪼개고, 미친듯이 쪼개세요. 의미없는 단어들로 점철된 코드는, 하나의 아름다운 소설을 만들어낼 겁니다. 반대로 함수를 합치고, 합치고, 미친듯이 합치는 방법도 유효하지만, 이 방법은 버그를 내기 쉬우니 삼가합시다.
3. C언어에는 #define이라는 강력한 무기가 있습니다. 함수나 변수뿐만 아니라 return과 같은 키워드까지 치환 가능하므로, 읽기 어려운 코드를 원하신다면 애용합시다.
이제, 만들어둔 프로그램을 백업해 놓고 리팩토링을 시작합니다. '읽기 어려운 코드 작성'의 꽃은 이름과 인자 바꾸기입니다. 어떤 식으로 이름을 바꿀까요?
아침 먹고 땡. render() 함수를 breakfast()로 바꿉니다.
점심 먹고 땡. Position 구조체를 Lunch로 바꿉니다.
창문을 열어보니 비가 오네요. clear() 함수를 raindrops()로 바꿉니다.
지렁이 세 마리가 기어갑니다. draw(x, y, size) 함수를 iloveworms(worm, bug, insect)로 바꿉니다.
아이고 무서워 해골바가지. display() 함수를 skeleton()으로 바꿉니다.
* 비쥬얼 스튜디오와 같은 IDE의 리팩토링 기능을 이용하면 버그를 최소화하여 이 과정을 진행할 수 있습니다.
이렇게만 해도 당신의 코드는 이미 한 눈에 안 들어오는 코드가 됩니다. 보통 코드 리딩은 코드에 선언된 함수의 이름을 보고 그 역할을 파악한 뒤 어떤 식으로 구현되었는지 분석하는 식으로 이루어집니다. 하지만 함수 이름이 skeleton() 따위면, 이 함수의 역할을 파악하는 데에서부터 막힙니다. 코드를 살펴보면서 뭐하는 함수인지 알아내고, 또 그것을 기억해야 하거든요. 완전 시간 낭비죠.
하지만 여기서 멈추기 싫으신 분들은 다음과 같은 방법들을 사용해 보세요.
1. 함수의 인자를 구조체나 배열 같은 걸로 묶어보세요. 구조체일 경우, 구조체 안에 쓸데없고 의미불명인 변수들을 잔뜩 선언해 놓으세요.
2. 함수를 쪼개고, 쪼개고, 미친듯이 쪼개세요. 의미없는 단어들로 점철된 코드는, 하나의 아름다운 소설을 만들어낼 겁니다. 반대로 함수를 합치고, 합치고, 미친듯이 합치는 방법도 유효하지만, 이 방법은 버그를 내기 쉬우니 삼가합시다.
3. C언어에는 #define이라는 강력한 무기가 있습니다. 함수나 변수뿐만 아니라 return과 같은 키워드까지 치환 가능하므로, 읽기 어려운 코드를 원하신다면 애용합시다.
아래는 이 방법들을 응용한 극단적인 코드입니다. 폰으로 짰기에 오류가 있을 수 있음을 양해해 주시고, 이 코드의 역할을 아시겠다면 역할과 그걸 알아내는데 얼마나 걸렸는지 써주세요. 이건 일종의 실험입니다.
- 엔타로 하스켈!
젊군유~
ㄴ 어립니다 - 엔타로 하스켈!
예전에 변수명 전부 Z_Z T_T O_O X_X 이딴식으로 해서 낸적있는데
xO_Ox 이런거쓰면 골때림
코세님이 젊다고 하신 이유를 알겠는데, 이 글에는 늙어서 이런 코드는 전혀 못 알아보는 사람들을 위한 방법도 제시되어 있습니다 - 엔타로 하스켈!
먼저 확장성 좋게 짠 후 치환한다, 원본 소스를 백업해둔다 등 - 엔타로 하스켈!
아닝
쓸데없는 짓에 흥미느낄수 있는게 젊음이란뜻
아항 - 엔타로 하스켈!
우리중에 난독화 코드 나보다 잘 읽는 사람 없을텐뎅
ㄴ 님은 늙어도 이런 거 잘 읽는 특이케이스 - 엔타로 하스켈!
ㄴ 2학년 - 엔타로 하스켈!
ㄴ 디미고 갈 건데요 - 엔타로 하스켈!