본문 바로가기

클린코드

(6)
[클린코드 독서] 5장 - 형식 맞추기 EFUB에서 맛집전공을 개발하면서 절실하게 느꼈던 부분이다. 나는 항상 그전까지는 팀프로젝트를 진행하더라도 별다른 코드컨밴션 없이 진행하곤했는데, EFUB에서 처음으로 팀끼리 코드컨벤션(코드 짜는 형식맞추기)를 진행했었다. 이런 부분을 미리 합의하고 들어가니까 서로의 코드를 이해하기도 쉽고, 한사람은 카멜체로 한사람은 팟홀체로 적는 불상사가 없었다 ^0^/ 하지만 코드컨벤션을 맞춰보는게 처음이라 어떤 형식이 좋은형식인지에 대해 무지했었는데, 클린코드를 통해서 좀더 감을 잡을 수 있었다 1. 적절한 행 길이 소스 코드는 얼마나 길어야 적당할까? - 프로젝트마다 다르지만, 가능하다면 적게 유지하는것이 좋음.(200줄) 소스 코드 순서는 어떻게 해야할까? - 고차원에서 저차원 함수로 자연스럽게 읽히도록 구성 ..
[클린코드 독서] 6장 - 객체와 자료구조 변수를 비공개(private)로 설정하는 이유는 남들이 변수에 의존하지 않게 하고싶어서이다. 그렇다면 왜 많은 프로그래머들은 get set함수를 당연하게 public으로 공개해서 private변수를 외부에 노출할까? (참고로, 아무리 변수가 private이어도 getset함수가 public이면 그건 외부로 변수를 노출하는것이다) → 아무생각없이 get set함수를 설정하곤 하는데 이렇게 코드를 짜는것은 매우 나쁨. 개발자는 객체가 포함하는 자료를 표현할 가장 좋은 방법을 항상 고민해야함. 자료추상화 한마디로 interface로 만드는것! get set과 같은 함수를 변수사이에 넣는다해도 구현이 감춰지지않음. 구현을 감추려면 추상화가 필요 자료/객체 비대칭 절차적인 클래스와, 객체지향적인 클래스는 서로 상..
[클린코드 독서] 4장 - 주석 첫페이지부터 글쓴이는 강하게 이야기했다. 주석은 순수하게 선하지 못하다. 주석은 필요악이다. 이전에 자주 함수의 기능을 설명하기 위해 주석을 달곤했는데, 클린코드는 정말 많은 가르침을 주는거같다. 주석은 필요악이다 주석이 필요한 상황에 처하면 코드로 의도를 표현할 방법을 찾자 주석은 나쁜 코드를 보완하지 못한다. 주석으로 달려는 설명을 함수로 만들어 표현하자 좋은 주석이란? 법적 저작권 정보나 소유권 정보 정보 제공 이것도 웬만하면 코드로 설명하기 정규표현식이 무슨뜻인지 설명할때 정도는 사용해도되지만, 정규표현식을 사용하여 데이터를 처리하는 클래스를 만들어서 그쪽으로 코드를 옮긴다면 더 깔끔하다. //kk:mm:ss EEE, MMM dd, yyyy 형식이다. Pateern timeMatcher = Pat..
[클린코드 독서] 3장 - 함수 함수를 복잡하고 중복적이고, 이상한 자료유형을 쓰는거만큼 거지같은게 없다 이건 나도 항상 느끼는 바이다. 구현에 급급해서 대충 함수를 만들면 거의 패치워크로 만든 옷같아서...어느 부분이 어느 기능을 담는지 알아보기어렵다. 메소드 몇개를 추출하고, 이름을 변경하고, 구조를 조금만 손봐도 깔끔해진다. 근데 자꾸...귀찮아서 리팩토링을 안한다... 열심히 살자 작게, 한기능만 하게 만들어라 제일 중요한 규칙 거의 3-5줄 정도밖에 안되게 줄여야함 즉, if/else/while에 들어가는 블록이 한줄정도여야한다는거임 이럴려면, 중첩구조가 생길만큼 함수를 크게 키우지 말아야한다 들여쓰기가 1단, 2단을 넘어서면 안됨 예시로 줬던 첫 목록은 세가지 일을함 (페이지가 테스트인지 확인 / 그러면 설정&해체 페이지 넣..
[클린코드 독서] 2장 - 의미 있는 이름 2장 - 의미 있는 이름을 짓자 소프트웨어에서 이름은 어디나 쓰인다. 변수, 함수, 인수와 클래스, 패키지에도 이름을 붙인다. 이런 이름을 잘 지으면 여러모로 편하다. 그래서 이 장에서는 이름을 잘 짓는 규칙을 소개한다. 1. 의도를 분명히 밝혀라 이름을 지을때 생각해야 하는 부분들 변수의 존재 이유는? 수행 기능은? 사용 방법은? 이것을 생각하고 이름을 짓는다면 주석이 필요하지 않다. 예시 /*BAD*/ public List getThem() { //무엇을 get하는 함수인지 알수없음 List list1 = new ArrayList(); for (int[] x : theList) //theList가 무엇을 담는지 알수없음 if (x[0] == 4) list1.add(x); return list1; } ..
[클린코드 독서] 1장 - 깨끗한 코드 사놓고 박아뒀던 클린코드를 드디어 읽기 시작했다. 두께가 굉장하고 다소 딱딱하게 생겨서 재미가 없을거라 생각했는데 보기와 달리 책의 문체는 유쾌했다! 특히 이 구절에서 양심이 찔렸다.. 우리 모두는 자신이 짠 쓰레기 코드를 쳐다보며 나중에 손보겠다고 생각한 경험이 있다. 우리 모두는 대 충 짠 프로그램이 돌아간다는 사실에 안도감을 느끼며 그래도 안 돌아가는 프로그램보다 돌아가는 쓰레기가 좋다고 스스로를 위로한 경험이 있다. 다시 돌아와 나중에 정리하겠다고 다짐했었다. 물론 그때 그 시절 우리는 르블랑의 법칙을 몰랐다. 나중은 결코 오지 않는다. ㅎㅎ..개발자라면 모두들 동감할것이다. 헬리콥터처럼 날아가는 비둘기짤이 유명해진데에는 다 이유가 있다. 나도 저런 경험을 많이 했고 그렇기에 좋은 코드를 짜는게 ..