본문 바로가기

전체글148

[클린코드] 9장. 단위 테스트 9장. 단위 테스트 단위 테스트란 자기 프로그램이 '돌아간다'는 사실만 확인하는 일회성 코드에 불과했다. (90년대까지만 해도..) 현재는 단위 테스트를 자동화하는 경우까지 생기면서 단위 테스트의 중요성이 점점 커지는 추세다. 하지만 단순히 테스트 케이스를 작성한다고 되는 것이 아니라 제대로 작성하는 것이 중요하다. TDD 법칙 세 가지 TDD는 실제 코드를 작성하기 전에 테스트부터 짜는 것을 말하는데, 정확히는 아래 세 가지 법칙이 있다. 실패하는 단위테스트를 작성할 때까지 실제 코드를 작성하지 않는다. 컴파일은 실패하지 않으면서 실행이 실패하는 정도로만 단위테스트를 작성한다. 현재 실패하는 테스트를 통과할 정도로만 실제 코드를 작성한다. 이렇게 일하면 매일 수십, 수백, 수천 개에 달하.. 2024. 4. 23.
[클린코드] 8장. 경계 8장. 경계 시스템에 들어가는 모든 소프트웨어를 직접 개발하는 경우는 드물다. 때로는 패키지를 사고, 오픈 소스를 이용하고, 라이브러리를 이용한다. 때로는 사내 다른 팀이 제공하는 컴포넌트를 사용한다. 어떤 식으로든 이 외부 코드를 우리 코드에 깔끔하게 통합해야만 한다. 외부 코드 사용하기 인터페이스 제공자와 인터페이스 사용자 사이에는 특유의 긴장이 존재한다. 제공자는 적용성을 최대한 넓히려 애쓴다. 더 많은 환경에서 돌아가야 더 많은 고객이 구매하기 때문이다. 반면에 사용자는 자신의 요구에 집중하는 인터페이스를 바란다. 예를 들어, Map은 저장할 때 객체 유형을 제한하지 않는다. 따라서 Map이 반환하는 Object를 올바른 유형으로 변환할 책임은 Map을 사용하는 클라이언트에 있다. 또한 Map을 .. 2024. 4. 22.
[클린코드] 7장. 오류 처리 7장. 오류 처리 오류처리는 프로그램에 반드시 필요한 요소 중 하나이다. 오류처리는 프로그램 내의 코드가 여기저기 흩어져 있으면 실제 코드가 하는 일을 파악하기가 거의 불가능하다. 따라서 오류 처리 코드로 인해 프로그램 논리를 이해하기 어렵다면 클린코드라 부르기 어렵다. 오류코드보다 예외를 사용하라 오류코드를 사용하면 호출자 코드가 복잡해진다. 함수를 호출한 즉시 오류를 확인해야 하기 떄문이다. 그래서 오류가 발생하면 예외를 던지는 편이 낫다. (자바에서 예외처리는 던지거나(throws) 잡을 수 있다.(try-catch)) Try-Catch-Finally 문부터 작성하라 Try-Catch-Finally문을 통해 try 블록에서 무슨 일이 생기든지 호출자가 기대하는 상태를 정의하기 쉬워진다. 자바에서는 .. 2024. 4. 19.
[클린코드] 6장. 객체와 자료구조 6장. 객체와 자료구조 변수를 왜 private으로 접근을 막는지 이유를 알 것이다. 자료 추상화 추상 인터페이스를 제공해 사용자가 구현을 모른 채 자료의 핵심을 조작할 수 있어야 진정한 의미의 클래스다. 개발자는 객체가 포함하는 자료를 표현할 가장 좋은 방법을 심각하게 고민해야 한다. 아무 생각 없이 조회/설정 함수를 추가하는 방법이 가장 나쁘다. 자료/객체 비대칭 객체는 추상화 뒤로 자료를 숨긴 채 자료를 다루는 함수만 공개한다. 자료구조는 자료를 그대로 공개하면 별다른 함수는 제공하지 않는다. 두 개념은 사실상 정반대다. 복잡한 시스템을 짜다 보면 새로운 함수가 아니라 새로운 자료 타입이 필요한 경우가 생긴다. 이때는 클래스와ㅏ 객체 지향 기법이 가장 적합하고, 새로운 자료 타입이 아니라 새로운 함.. 2024. 4. 18.
[클린코드] 5장. 형식 맞추기 5장. 형식 맞추기 프로그래머라면 형식을 깔끔하게 맞춰 코드를 짜야 한다. 팀으로 일한다면 팀이 합의해 규칙을 정하고 모두가 그 규칙을 따라야 한다. 형식을 맞추는 목적 코드 형식은 중요하다! 코드 형식은 의사소통의 일환이다. 의사소통은 전문 개발자의 일차적인 의무다. 돌아가게만 만든 코드가 절대 아니다. 오늘 구현한 코드의 가독성은 앞으로 바뀔 코드의 품질에 지대한 영향을 미친다. 적절한 행 길이를 유지하라 신문 기사처럼 작성하라: 이름만 보고도 올바른 모듈을 살펴보고 있는지 아닌지를 판단할 정도로 신경써서 짓는다. 무작위로 작성하면 신문도 잘 안보게 된다. 개념은 빈 행으로 분리하라: 각 행은 수식이나 절을 나타내고, 일련의 행 묶음은 완결된 생각 하나를 표현한다. 즉, 생각 사이는 빈 행을 넣어 분.. 2024. 4. 17.
[클린코드] 4장. 주석 4장. 주석 나쁜 코드에 주석을 달지 마라. 새로 짜라. 경솔하고 근거없는 주석은 코드를 이해하기 더 어렵게 만들지만, 잘 달린 주석을 그 어떤 정보보다 유용하다. 주석은 오래될수록 코드에서 멀어진다. 그 이유는 주석까지 유지보수하기란 현실적으로 불가능하다. 즉, 코드는 변화하지만 주석은 변화하는 코드를 따라가지 못한다. 주석은 나쁜 코드를 보완하지 못한다. 코드에 주석을 추가하는 일반적인 이유는 코드 품질이 나쁘기 때문이다. 코드를 알아보기 힘드니 주석으로 대체하는 것이다. 코드로 의도를 표현하라 좋은 코드일수록 주석은 줄어든다. 좋은 주석 그렇다면 주석이 필요한 경우는 언제일까? 법적인 주석: ex) 저작권 정보 or 소유권 정보, 라이센스 정보를 제공하는 주석: 기본적인 정보를 주석으로 제공하면 펀.. 2024. 4. 16.