42서울의 카뎃이라면 열심히 코드를 작성했으나 25줄이 넘어, 이걸 어떻게 줄여야하나 머리 싸매본 경험 다들 있을거에요.
짧은 코드가 무조건 좋은건 아닙니다. 길더라도 가독성이 좋은 코드가 더 잘 짜여진 코드라고 생각합니다. 다만 42서울에서는 norminette을 준수하며 코드를 작성해야 하기에 최대한 줄 수를 줄여야 하는 상황이 발생합니다.
이번 글에서는 가독성 상관없이 오로지 무지성으로 줄 수를 줄이기 위한 방법들을 정리해보았습니다.
1. static 키워드
좌측의 코드는 변수를 선언하고 0으로 초기화 후, 그 값을 출력하는 코드입니다. norm은 변수의 선언과 초기화를 한 줄에서 하는걸 금지하고 있습니다. 그리고 변수의 선언과 초기화 사이를 띄워야하기 때문에 3줄이 필요합니다.
일반적으로 변수를 초기화하지 않을 경우 쓰레기값을 가지게됩니다. static변수의 경우, 따로 초기화를 해주지 않으면 초기값은 0입니다. 이를 이용해 변수의 선언과 0으로 초기화하는 코드를 한 줄로 대체할 수 있습니다.
2. const 키워드
const 키워드 사용시 변수의 선언과 할당을 한 줄에서 할 수 있습니다. static 키워드도 이렇게 사용 가능합니다.
변하지 않는 값을 const키워드를 통해 선언하는건 좋은 습관이라고 생각합니다. 코드의 안정성을 높여주니까요.
3. 유사(?) 삼항연산자
@jayl 카뎃님이 슬랙에 올려주신 방법입니다.
9행의 삼항연산자와 10행의 유사(?) 삼항연산자는 동일한 결과를 보여줍니다.
norm은 삼항연산자의 사용을 금지하기에 9행은 놈 에러를 발생시킵니다.
10행은 놀랍게도 놈 에러가 발생하지 않습니다.
4. 비교 연산자
비교연산자의 결과는 True또는 False라는걸 이용하는 방법입니다.
입력값이 음수인지 아닌지 확인하는 is_negative라는 함수를 구현했습니다. 왼쪽은 일반적인 방식이고 오른쪽은 비교연산자의 결과가 불리언이라는걸 활용해 구현한 코드입니다.
또 다른 예시로는 itoa함수의 구현이 있습니다.
반환할 문자열을 동적할당 할 때 입력값이 음수인 경우, 한 칸 더 할당해줘야 합니다.
왼쪽은 음수인지 아닌지 확인하는 함수를 구현해서 활용하는 코드입니다.
오른쪽은 함수대신 비교연산자를 사용했습니다. (num < 0)이 참인 경우에는 1, 거짓인 경우에는 0이 되어 왼쪽과 동일한 결과를 보입니다. 줄 수 뿐만 아니라 구현한 함수의 개수도 줄일 수 있습니다.
5. 반복문 조건에서 pre-increment operator 사용
많은 분들이 사용하고 있는 방법...