[공부] 독서(53)
-
[2019.02.09] 클린 코드 (시스템, 창발성)
시스템 시스템 생성과 시스템 사용을 분리하라아래는 이것을 실제로 적용하기 위한 기법들이다. 1. 초기화 지연public SystemService getSystemService(){if(systemService == null)systemService = new SystemServiceImpl();return systemService;}+ 객체가 필요할 때까지 객체 생성을 미룰 수 있다.+ null을 반환하지 않는다.- SystemServiceImpl 생성자에 의존적이다.- SystemServiceImpl 가 적절한 기본값인지 모른다.- 환경에 따라 SystemService를 다르게 줄경우 SRP 원칙에 위배된다. 2. Main 분리하기*메인 함수는 시스템에 필요한 객체를 생성만한다.*애플리케이션은 이 객체..
2019.02.09 -
[2019.02.09] 클린 코드 (TDD, 클래스)
TDD 테스트 코드 = 함수 이름 앞에 test를 붙여서 명명 TDD 법칙1. 실패하는 단위 테스트를 찾을 때까지 코드를 작성하지 않는다.2. 컴파일은 성공하면서 실행이 실패하는 단위테스트를 작성한다.3. 현재 실패를 통과할 정도로의 코드를 작성한다. 테스트를 실제 코드 작성전에 작성해야하는 이유는 실제 코드가 테스트 불가능하게 설계될 위험이 있기 때문이다. 테스트 코드도 깨끗해야한다.테스트 코드들이 중복이 심하다면 이를 엮을 방법을 생각해라.예를들어 Build-operate-check 패턴을 적용하면 중복을 없앨 수 있다.마찬가지 Template-Method 패턴을 적용하면 중복을 없앨 수 있다. 테스트당 assert 문은 하나만 넣어라. 테스트 작성법public void test~(){given~()..
2019.02.09 -
[2019.02.09] 클린코드 (오류, 경계)
오류 if문에 의한 오류처리를 피해라.try catch finally를 이용해라. try catch finally는 일종의 트랜잭션처럼 여겨야한다.try 에서 뭔짓을 하던 오류가나면 catch에서 롤백해줘야한다, 미확인 예외 처리를 안하면 OCP를 위반한다미확인 예외 처리도 해줘라. 오류처리 메카니즘이 동일한 오류들이 있다면 이를 Wrapper 클래스로 묶는 것을 고려해라 특정 객체를 조회해서 받아와야하는 함수가 있을 때 오류가 발생하면 null 을 반환하게 하지마라null 을 반환하게해서 오류처리하는 것보다는 empty 객체를 반환해서 정상동작은 되게해라이렇게 만들어진 empty 객체는 특수 사례 객체라고 부른다. 마찬가지로 null을 전달하지마라if(object1 == null)throw Invali..
2019.02.09 -
[2019.02.06] 클린 코드 (형식, 객체)
형식 코드가 200줄 안인 작은 파일이 이해하기 쉽다.마찬가지로 한줄이 짧을 수록 이해하기 쉽다. 함수사이는 개행을 한줄 넣어서 분리하라 밀접한 개념은 가까이 둬라 protected 변수는 피해라밀접한 개념이 한 파일에 속하지 못하게 한다. 상수는 사용하는 지점에 바로 사용할 경우 너무 저차원에 배치되어 묻히는 경우가 있을 수 있다.그러므로 적절한 수준에 두고 사용이 필요한 함수로 상수를 넘겨주는 방식이 더 좋다. 지역변수 선언은 사용하는 위치의 최대한 가까이에 둔다.멤버변수 선언은 클래스 맨 처음에 두며 개행으로 변수간에 거리를 두지않는다.종속함수는 A함수가 B함수를 선언하는 경우 B함수를 말하는데 호출 순서에 맞춰 배치하라 띄어쓰기를 이용해서 요소를 분명히 나눠라function( A, B ) -> f..
2019.02.06 -
[2019.02.04] 클린 코드 (변수,함수,주석)
깨끗한 코드의 중요성 코드는 그 자체로 훌륭한 요구명세가 되여야한다. 르블랑의 법칙 : 나중은 절대 오지 않는다. 그러므로 코드는 진지하게 짜야한다. 전문가 = 나쁜 코드의 위험을 인지하고 코드 개선을 위한 시간이 필요함을 주장할 수 있는 사람 코드는 사실 기반의 필요한 내용만 있어야한다. 보이스카우트 규칙 : 캠프장에 처음 왔을 때보다 더 깨끗하게 해놓고 떠나라그러므로 코드를 수정하면 깨끗한 코드로 정리해놓고 떠나라 변수 이름 진짜 리스트가 아니라면 변수 이름에 list가 들어가는 것을 피해라 ( list -> group ) 발음하기 쉬운 변수 이름을 사용해라 ( ymdt -> tiemstamp ) 문자 하나를 사용하는 상수와 이름을 피해라 나중에 검색할 때 찾기 힘들다.단 for문에 들어가는 i,j,..
2019.02.06