반응형
『Clean Code(클린 코드) 애자일 소프트웨어 장인 정신 - 로버트 C. 마틴』 을 읽고 요약한 내용입니다. 코드의 표현력과 그 코드로 이루어진 함수에 아무리 신경쓸지라도 좀 더 차원 높은 단계까지 신경 쓰지 않으면 깨끗한 코드를 얻기는 어렵다. 클래스 체계 클래스를 정의하는 표준 자바 관례 : 변수 목록 → 정적 static 공개 public 상수 → 정적 비공개private 변수 → 비공개 인스턴스 변수 → 공개 변수 (필요한 경우는 거의 없다.) 변수 목록 다음에는 공개 함수 → 비공개 함수 즉, 추상화 단계가 순차적으로 내려간다. 그래서 프로그램은 신문 기사처럼 읽힌다. 캡슐화 변수와 유틸리티 함수는 가능한 공개하지 않는 편이 낫지만 반드시 숨겨야 한다는 법칙도 없다. 때로는 변수나 유틸리티..
『Clean Code(클린 코드) 애자일 소프트웨어 장인 정신 - 로버트 C. 마틴』 을 읽고 요약한 내용입니다. 테스트 케이스를 모두 구현하고 통과한 후에는 내 코드를 사용할 사람들에게도 공개했으리라. 테스트 코드와 내 코드를 같은 소스 패키지로 확실하게 묶어 체크인했으리라. 애자일과 TDD 덕택에 단위 테스트를 자동화하는 프로그래머들이 이미 많아졌으며 점점 더 늘어나는 추세다. 하지만 우리 분야에 테스트를 추가하려고 급하게 서두르는 와중에 많은 프로그래머들이 제대로 된 테스트 케이스를 작성해야 한다는 좀 더 미묘한 (그리고 더욱 중요한) 사실을 놓쳐버렸다. TDD 법칙 세 가지 실패하는 단위 테스트를 작성할 때까지 실제 코드를 작성하지 않는다. 컴파일은 실패하지 않으면서 실행이 실패하는 정도로만 단위..
1. 옵저버 패턴 정의 💡 옵저버 패턴 (observer pattern) 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들한테 연락이가고 자동으로 내용이 갱신되는 방식으로 일대다(one-to-many) 의존성을 정의한다. 옵저버 패턴을 구현하는 방법에는 여러가지가 있지만 대부분 주제 (subject) 인터페이스와 옵저버 (observer) 인터페이스가 있는 클래스 디자인을 바탕으로 한다. 일대다(1:n) 관계는 주제와 옵저버에 의해 정의된다. 옵저버는 주제에 의존하며, 주제의 상태가 바뀌면 의존하는 옵저버에게 연락이 간다. ① subject : 상태를 저장하고 있는 주제 인터페이스를 구현한 하나의 주제객체 ② observer : 주제객체에 의존하고 있는 옵저버 인터페이스를 구현한 여러개의 옵저버객..
『Clean Code(클린 코드) 애자일 소프트웨어 장인 정신 - 로버트 C. 마틴』 을 읽고 요약한 내용입니다. 오류 처리는 중요하다. 하지만 오류 처리 코드로 인해 프로그램 논리를 이해하기 어려워진다면 깨끗한 코드라 부르기 어렵다. 오류 코드보다 예외를 사용하라. 오류가 발생하면 예외를 던지는 편이 낫다. 그러면 호출다 코드가 더 깔끔해진다. 논리가 오류 처리 코드와 뒤섞이지 않으니까. try-catch-finally문부터 작성하라. 어떤 면에서 try 블록은 트랜젝션과 비슷하다. try블록에서 무슨 일이 생기든지 catch 블록은 프로그램 상태를 일관성 있게 유지해야 한다. 그러므로 예외가 잘행할 코드를 짤 때는 try-catch-finally문으로 시작하는 편이 낫다. 그러면 try 블록에서 무슨..
💡 싱글톤 패턴 (singleton pattern) 해당 클래스의 인스턴스가 하나만 만들어지고, 어디서든지 그 인스턴스에 접근할 수 있도록 하기위한 패턴 클래스에서 자신의 단 하나뿐인 인스턴스를 관리하도록 만드는 것이다. 다른 어떤 클래스에서도 자신의 인스턴스를 추가로 만들지 못하도록 해야한다. ■ 고전적인 싱글톤 패턴 구현 public class Singleton { private static Singleton uniqueInstance; // 생성자 : 외부에서 생성하지 못하도록 private private Singleton(){} // 생성자 대신 생성할때 사용할 getInstance() 메소드 public static Singleton getInstance(){ if (uniqueInstance ..
『Clean Code(클린 코드) 애자일 소프트웨어 장인 정신 - 로버트 C. 마틴』 을 읽고 요약한 내용입니다. 변수를 비공개 private로 정의하는 이유가 있다. 남들이 변수에 의존하지 않게 만들고 싶어서다. 충동이든 변덕이든, 변수 타입이나 구현을 만대로 바꾸고 싶어서다. 그렇다면 어째서 수많은 프로그래머가 조회 get 함수와 설정 set 함수를 당연하게 공개public해 비공개 변수를 외부에 노출할까? 자료 추상화 자료를 세세하게 공개하기보다는 추상적인 개념으로 표현하는 편이 좋다. 인터페이스나 조회/설정 함수만으로는 추상화가 이뤄지지 않는다. 개발자는 객체가 포함하는 자료를 표현할 가장 좋은 방법을 심각하게 고민해야 한다. 아무 생각 없이 조회/설정 함수를 추가하는 방법이 가장 나쁘다. 자료/..