본문 바로가기

책/클린코드

클린코드 15장 JUnit , 16장 SerialDate 리펙터링, 17장 휴리스틱 안녕하세요 남갯입니다. 오늘은 클린코드 15,16,17장에 대해 정리해보려고합니다. JUnit - JUnit은 저자가 많은 자바 테스트 프레임워크이다. 시작은 에릭감마와 켄트백이 만들었다. - 모듈을 작성시 보이스카우트 규칙을 따른다 * 보이스카우트 규칙이란? 떠날때는 찾을때보다 캠프장을 더 깨끗하게 떠나라 다시 찾아올 수 있는 사람에게 더 수월한 환경을 만들어준다는 뜻. - 테스트코드 혹은 코드 작성시 의도를 명확히 표현하려면 조건물을 캡슐화해라(메서드로 뽑아 적절하게 이름을 붙여라) 를 if (expected == null || actual == null || areStringsEqual()) return Assert.format(message, expected, actual); 이런식으로 if (s..
[클린코드] 7장 오류처리 안녕하세요 남갯입니다 오늘은 클린코드의 오류처리에 대해 포스팅 해보려고 합니다. 깨끗한 코드와 오류처리에는 연관성이 있고 상당수의 코드기반은 전적으로 오류 처리 코드에 좌우된다. 오류처리는 중요하고 오류처리로 인해 프로그램 논리를 이해하기 어려워 진다면 깨긋한 코드라 부르기 어렵다. 오류코드보다 예외를 사용하라 if문을 통해 Device의 멈춤 강태를 확인하는 코드는 복잡해진다. 함수를 호출한 즉시 오류를 확인해야 하기 때문이다. 그래서 이 단계를 잊어버리기 쉽다. 그래서 오류가 발생하면 예외를 던지는것이 낫다.그냥 try catch문을 통해 오류를 처리하는것이 낫다. public void sendShutDown() { try { tryToShutDown(); } catch (DeviceShutDownE..
[클린코드] 6장 객체와 자료구조 안녕하세요 남갯입니다 오늘은 클린코드 6장 객체와 자료구조에 대해 포스팅 해보려고 합니다. 변수를 private으로 하는 이유는 남들이 변수에 의존하지 않게 하기 위함이다. 자료의 추상화 public class Point { public double x; public double y; } public interface Point { double getX(); double getY(); void setCartesian(double x, double y); double getR(); double getTheta(); void setPolar(double r, double theta); } 위의 포인트는 직교좌표계를 사용하는것을 알지만 아래꺼는 직교좌표계인지 극좌표계인지 알 길이 없다.변수 사이에 함수라는 계..
[클린코드] 5장 형식 안녕하세요 남갯입니다 오늘은 클린코드 5장 형식에 대해 포스팅 해보려고 합니다. 형식을 맞추는 목적돌아가는 코드가 개발자의 1차적인 의무라 여길지도 모르지만 코드는 후에 코드의 품질에 영향을 미친다.따라서 오랜시간 흔적을 더 이상 찾아보기 어려울 정도로 코드가 바뀌어도 구현스타일과 가독성은 유지보수 용이성과 확장성에 영향을 미친다. 원할한 소통을 장려하는 코드형식 1. 적절한 행 길이를 유지하라. -대략적으로 500줄을 넘기지 않고 200줄 정도인 파일로도 커다란 시스템을 구축 가능하다. 2. 신문기사처럼 작성하라. - 신문기사처럼 독자가 위에서 아래로 최상단에는 요약하는 표제와 읽어가면서 디테일한 세부사항들이 나오게 한다. 이처럼 소스파일도 신문기사와 비슷하게 이름은 간단하면서 설명이 가능하도록 짓는다..
[클린코드] 4장 주석 안녕하세요 남갯입니다 오늘은 클린코드 4장 주석에 대해 포스팅 해보려고 합니다. 개발을 하면서 모두들 주석을 다실거라 생각합니다. 잘 달린 주석은 그 어떤 정보보다 유용하고 이상한 주석은 더 이해하기 어렵게 만듭니다.주석은 우리가 치밀하게 언어에 의도를 표현할 수 있다면 주석은 거의 필요없다고 말합니다. 코드를 표현할 능력이 충분하다면 주석은 거의 필요없다고 합니다. private final String HTTP_DATE_REGEXP = "[SMTWF][a-z]{2}\\,\\s[0-9]{2}\\s[J FMASOND][a-z]{2}\\sM+[0-9]{4}\\s[0-9]{2}\\:[0-9]{2}\\:[0-9]{2}\\sGMT"; private Response response; private FitNesseC..
[클린코드] 3장 함수 안녕하세요 남갯입니다 오늘은 클린코드 3장 함수에 대해 포스팅 해보려고 합니다. 프로그래밍의 초창기에는 루틴과 서브루틴으로 나누었다고 한다. 루틴은 한 함수를 동작하는것이고 서브루틴은 그 루틴에서 또 다른 루틴을 실행시킨것을 말한다. 이런 함수를 작성하면서 의도를 분명하게 표현하지 않으면 내용의 정보를 파악하기 어렵다. 어떻게 처음읽는 사람이 직관적으로 파악하게 만들 수 있을까? 작게만들어라함수를 만드는 규칙은 작고 더 작게 만드는것이다. 저자는 20~ 3000천줄의 코드를 작성해본 결과 작은함수가 좋다고 말한다.그렇다면 얼마나 짧은것이 좋다는 것일까?함수의 길이는 최대한(4줄이하) 적게 만들어라. // 함수를 작게 만들어라 public static String renderPageWithSetupsAnd..
[클린코드] 2장 의미 있는 이름 안녕하세요 남갯입니다 오늘은 클린코드 2장 의미있는이름 에 대해 포스팅 해보려고 합니다. 2장 의미있는이름 - 의도를 분명히 밝혀라의도가 분명하게 이름을 지으라고 말하기는 쉽다. 이 책에서는 의도가 분명한 이름이 중요하다고 강조하고 또 강조한다. 좋은 이름을 지으려면 시간이 걸리지만 그렇게 지어놓으면 후에 유지보수에서 시간을 절약할 수 있다. 그래서 우리는 이름을 주의깊게 살펴서 더 나은이름으로 개선해야한다. 그리고 그걸 읽는 나와 다른사람들도 행복해질 수 있다. 변수나 함수 클래스의 이름은 변수(함수 or 클래스) 의 존재이유? 수행기능? 사용방법? 에 따로 주석이 필요하다면 의도를 분명하게 드러내지 못했다는 말이다. 예들들어 val d = 0; // 경과시간 이름 d는 아무 의미도 드러나지 않는다. ..
[클린코드] 1장 깨끗한코드 안녕하세요 남갯입니다. 오늘은 클린코드를 읽고 정리한 내용을 적어보려고 합니다. 우리는 코드를 더 좋은 품질의 코드를 짜기위해 항상 고민하고 있다. 이 책의 저자는 말한다. 이 책을 읽는 이유의 두가지는1. 프로그래머라서,2. 더 나은 코드를 짜기 위해 나도 매번 내 코드를 보면서 반성하고 더 나은 코드를 짜기위해 노력한다. 이번 클린코드 스터디를 통해 더 나은 프로그래머가 되었으면 한다. 1장을 시작해 보겠습니다. 1장. 깨끗한코드 - 코드는 존재하리라.코드는 사라지지 않을것이다. 왜냐하면 코드는 요구사항을 상세히 표현 하는 수단이기 때문이다. - 나쁜코드우리는 오랫동안 나쁜코드에 시달려왔기 때문에 좋은코드가 중요하다는 사실을 안다.출시에 바빠 코드를 마구 짠 회사의 제품은 출시주기가 증가하고 버그도 ..