Search
Duplicate
🚨

동료들 뒷목 잡게 만드는 나쁜 프로그래밍 습관

간단소개
동료들의 코드 보는 안목을 위해 길러야할 가독성 나쁜 코드를 작성하는 법(FAKE NEWS)
팔만코딩경 컨트리뷰터
ContributorNotionAccount
주제 / 분류
잡지식
개발방법론
Scrap
태그
주니어개발자
9 more properties

무한 루프 즐기기

루프가 정말 종료되었는지 미리 검증할 일반적인 방법이 없다. 이것은 이미 1937년 앨런 튜링이 발견했다. 따라서 동료가 코드에 무한 루프가 있다고 의심한다면, 이는 당연하다며 앨런 튜링을 언급하며 디펜스한다.

무한 루프 문제 예방에 대한 디펜스

앨런 튜링을 언급했는데도 동료가 코드를 고치기를 원한다면 이렇게 해라.
int i = 0; int year = 2016; while (i != 50) { if (isLeapYear(year + i)) { printf("%d is a leap year", i); } i++; }
C
복사
위 코드로 고치고 윤년은 4년마다 반복되므로 아래처럼 최적화를 하겠다고 해라. 그러면 무한루프를 즐길 수 있다.
int i = 0; int year = 2016; while (i != 50) { if (isLeapYear(year + i)) { printf("%d is a leap year", i); } i += 4; }
C
복사
(TRUE NEWS) : while (i < 50) 처럼 범위로 종료조건을 검사하는게 안전하다.

반복문 탈출을 여러곳으로 만들기

문이 여러개인 방이, 문이 한 개인 방보다 접근성이 좋은것은 자명하다. 우리의 반복문도 접근성이 좋은것이 당연히 좋다. 반복문 안에서 탈출조건을 여러개 만들자.

반복문 길게 만들기

방탈출을 돈 내고 즐기게 된다면, 당연히 같은 돈이라면 콘텐츠가 긴게 좋다. 우리의 동료가 내가 만든 함수를 충분히 즐길 수 있도록 반복문을 길게 만들자.

서부루틴이 하는 일을 다양하게 만들기

야생에서 살아남아야 한다면, 하나의 얇은 날을 가진 칼과 다목적 스위스 군용 칼 중 무엇을 선택하겠는가? 당연히 여러개의 기능을 할 수 있는게 좋다. 우리의 서브루틴도 여러 기능을 할 수 있게 만들자.

방어적으로 선언하지 마라

방어는 승자의 단어가 아니다. 동료가 방어적으로 작성해야한다고 한다면, 동료에게 그건 나약한 패배자의 생각이라고 하자. 카이사르가 예언자에게 3월의 이데스를 조심하라는 소리를 들었을 때 조심했을까? 아니다. 그는 혼자서 원로원으로 향했다.(물론 그때 그가 죽었지만, 이는 중요하지 않다.)
void printMessage(char* message) { if (!message) { printf("방어적 코드는 패자의 언어다.(FAKE NEWS)"); return ; } printf("%s", message); }
C
복사

NULL을 반환하자

방어가 패배자의 단어라고 했지만, 여전히 방어를 중시하는 동료가 있다면, 반환값에 null을 넣어서, 동료의 방어능력향상을 위해 노력하는 동료가 되자.
위에 써있는 내용을 진지하게 받아들이는 독자가 없기를 바란다. 위에 내용과 반대로 해야 사랑받는 동료가 될 수 있다.
아래의 책을 참고하여 일부 각색하여 작성됨, 자세한 내용은 해당책 참조