클린코드 책 읽기를 마무리하며 2024.09.12 클린 코드 책 읽기 스터디를 마무리하면서 클린코드 10장까지 읽고 나서이 클린코드라는 책을 읽기 전에도 가독성이 좋고 유지보수하기 좋은 코드를 작성해야 한다는 원칙은 익히 들어 알고 있었지만 그 세세한 방법에 대해서는 알지 못했었다. 하지만 책을 절반가량 읽고 난 후 프로그래밍을 할 때 어떠한 마음가짐을 가지고 코드를 작성해야 할지, 좋은 코드란 무엇인지, 어떻게 하면 좋은 코드를 작성할 수 있을지까지 깨달을 수 있었다. 변수 이름 하나하나, 들여 쓰기 하나하나, 함수와 변수의 위치 등등 세세한 부분까지 고려해 가면서 코딩을 해야 된다는 깨우침을 얻었다. 객체지향 프로그래밍을 위해서라도 클린 코드는 필수적이다. 나는 아직 제대로 된 객체 지향 프로그래밍을 해본 적은 없다. 남들이 객체..
클린 코드 10장 클래스 클래스를 제대로 활용하는 방법2024.09.09 클린 코드 제10장 클래스를 읽고 나서책으로부터 배운 내용제10장 클래스 챕터에서는 클래스 내부에 변수를 생성하고, 메서드를 생성할 때 어떠한 방식으로 구현해야 하는지를 설명하고 있다. 클래스의 크기클래스를 만들 때 가장 중요한 규칙은 클래스의 크기이다. 대략적인 메서드의 개수는 5개가 정도가 적당하다. 무조건 5개여야만 한다는 소리는 아니다. 메서드 수가 적더라도 각각의 메서드가 담당하고 있는 책임이 너무 많다면 해당 메클래스는 작은 크기가 아니다. 먼저 클래스의 이름부터 손보자. 클래스의 이름은 해당 클래스의 책임을 기술해야 한다. 모호한 단어는 쓰지 말고 if, and, or, but 등 책임을 나누거나 여러 개를 주면 안 된다. 단일 책임 원칙단일 ..
클린 코드 8장 경계, 9장 단위 테스트 형식에 맞춰 코드 작성하기2024.09.05 클린 코드 제8장 경계와 9장 단위 테스트를 읽고 나서책으로부터 배운 내용제9장 경계 챕터에서는 외부 라이브러리 사용 시 어떤 형식으로 개발을 진행해야 하는지를 설명하고 있다. 외부 라이브러리는 직접 수정하지 못하기 때문에 소프트웨어의 경계선에서 어떻게 행동해야 하는지를 알려주는 것 같다. 내용은 다음과 같다.경계 인터페이스를 바로 사용하도록 허용하지 말고 직접 생성한 클래스로 캡슐화를 하자. 필수적으로 하라는 것이 아니고 경계 인터페이스를 여기저기서 사용하도록 허용하면 안 된다는 의미이다.외부 라이브러리 사용시에도 사용법을 익히기 위해서 간단한 테스트 코드를 작성하자.버그 발생시에 라이브러리 코드의 버그인지 아니면 내가 만든 코드의 버그인지 디버깅을 하자.제..
클린 코드 7장 오류 처리 형식에 맞춰 코드 작성하기2024.09.04 클린 코드 제7장 오류 처리를 읽고 나서책으로부터 배운 내용제7장 오류 처리챕터에서는 프로그램에서 반드시 필요한 요소 중 하나인 오류 처리에 대해서 다루고 있다. 프로그래머에게는 오류를 바로 잡을 책임이 있다. 책에서는 오류 처리의 기법과 고려 사항을 소개하고 있다.오류 코드를 그대로 반환하는 것보다는 예외를 활용하는 것이 좋다. 오류 코드를 직접 작성하면 코드가 복잡해진다. 코드의 논리 구조와 오류 처리 코드를 분리하는 것이 바람직하다.오류가 발생할만한 코드는 try - catch - finally 문으로 감싸서 작성하도록 하자.미확인 예외를 사용하도록 하자. 미확인 예외란 컴파일 시점에 검사되지 않고, 런타임(프로그램 실행 중)에 발생할 수 있는 예외를 의..
클린 코드 6장 객체와 자료구조 형식에 맞춰 코드 작성하기2024.09.02 클린 코드 제6장 객체와 자료구조를 읽고 나서책으로부터 배운 내용제6장 객체와 자료구조 챕터에서는 객체와 자료구조란 무엇이고 어떤 상황에서 어떻게 프로그래밍을 해야 하는지를 알려주고 있다.변수를 private으로 설정하고 그걸 조회하는 함수를 생성한다고 해서 객체 지향 프로그래밍이 구현되는 건 아니다. 직접적인 추상화가 필요하다. 사용자가 구현체를 모르고 자료를 조작할 수 있어야 진정한 클래스라고 볼 수 있다.절차적인 코드는 기존 자료구조를 변경하지 않으면서 함수를 추가하기가 쉽다. 객체 지향적인 코드는 기존 함수를 변경하지 않으면서 새로운 클래스를 추가하기가 쉽다.반대로 절차적인 코드는 새로운 자료구조를 추가하려면 모든 함수를 수정해야 한다. 객체 지향적인 ..
클린 코드 5장 형식 맞추기 형식에 맞춰 코드 작성하기2024.08.31 클린 코드 제5장 형식 맞추기를 읽고 나서책으로부터 배운 내용제5장 형식 맞추기 챕터에서는 코드를 작성할 때는 일정한 형식에 맞추어서 작성해야 하며, 그 형식에 대해서 설명하고 있다. 형식에 맞추어서 코드를 작성해야 하는 이유우선 코드를 작성하면서 형식을 맞춰야 하는 이유는 무엇일까? 프로젝트 코드의 처음 스타일링과 가독성에 의해서 추후 코드의 확장성과 유지보수의 용이성이 결정된다. 또 코드를 읽는 독자에게도 제대로 된 정보를 전달하기 위해서 형식에 맞춘 코드 작성은 필수적이다. 형식에 맞는 코드를 작성하는 방법신문 기사처럼 잘 읽히는 코드를 작성하자. 기승전결이 올바르게 이루어진 코드를 작성하자.각각의 개념들은 빈 행으로 구분하자. 클래스와 메서드, 메서드와..
클린 코드 4장 TIL 주석 주석을 잘 작성하는 방법2024.08.27 클린 코드 제4장 주석을 읽고 나서책으로부터 배운 내용제3장 주석에서 책은 주석은 안 쓰는 게 최선책이라고 강조한다.주석은 나쁜 코드를 보완하지 못한다. 오히려 더 악화시킨다. 따라서 나쁜 코드를 주석으로 보완하려 하지 말고, 코드 그 자체를 더 좋은 코드로 리팩토링 하려고 노력해라. 그럼에도 불구하고 주석에는 오로지 나쁜 주석만이 존재하지는 않는다고 한다. 좋은 주석이 무엇인지를 한번 살펴보자.법적인 내용을 명시하는 주석 :법적으로 작성해야 만 하는 주석은 달만하다. 소유권 정보, 저작권 정보 등등 코드와 전혀 관련이 없고 법적문제를 위한 주석은 작성가능하다.의미를 명료하게 밝히는 주석 :  코드가 어떤 의도로 작성이 되었는지를 적거나, 해당 주석을 통해서 무..
클린 코드 3장 TIL 함수 TIL (Today I learned)2024.08.26 3장 함수읽으면서 기록하고 싶었던 내용3장. 함수를 읽고서 기록하고픈 내용은 다음과 같다.함수는 최대한 짧게 작성하자. if/else, while 문 블록 내부에 들어가는 코드는 한 줄이 이상적이다. 중첩 if문 같이 중첩되면 안 좋다는 뜻이다.함수는 한 가지 작업만을 수행해야 한다. 그러기 위해서 추상화 수준을 낮추어야 한다.이번 함수 챕터에서도 책에서는 서술적인 이름 짓기의 중요성을 다시 한번 강조한다.함수의 인수는 아예 없는 것이 최선이고, 차선책으로 1개, 2개까지는 가능하다. 3개까지가 마지노선이며, 그 이후는 코드를 읽는 독자가 이해하기 매우 어려워진다. 상황에 따라서 인수를 몇 개 작성할지 고려해 보자.함수의 입력 인수가 변환작업이 이..
클린 코드 2장 TIL 의미 있는 이름 TIL (Today I learned)2024.08.25 2장 의미 있는 이름읽으면서 기록하고 싶었던 내용2장. 의미 있는 이름 챕터는 변수나 메서드의 이름을 짓는 방식에 대해서 설명하고 있다. 해당 챕터를 읽고서 기록하고픈 내용은 다음과 같다.코드를 읽는 독자가 명확하게 의미를 파악할 수 있도록 이름을 짓도록 하자. 대충 축약어로 짓게 되면 독자가 도대체 해당 변수나 메서드가 무슨 동작을 하는지 무슨 값을 담고 있는지 알 수 없다. int d = 4; // 파악하기 매우 어려움 int day = 4; // 날짜정보를 담고 있는 변수라고 이해할 수 있음비슷한 값이나 기능을 수행할 때 일관성 있게 이름을 짓도록 하자. 실제로 List 형태가 아니면 변수명에 list라는 이름도 가급적 사용하지 않도록 한다...
클린 코드 1장 TIL 깨끗한 코드 TIL (Today I learned)2024.08.24 1장 깨끗한 코드읽으면서 기록하고 싶었던 내용1장. 깨끗한 코드를 읽고서 기록하고픈 내용은 다음과 같다.코드(Code)란 요구사항을 컴퓨터가 이해할 수 있도록 상세하게 표현하는 것이다.나쁜 코드를 작성하게 되면 초반에는 생산속도가 높을 수 있겠지만, 결과적으로는 결국 생산성이 0으로 수렴하게 된다.좋은 코드를 사수하는 것은 의사가 수술에 들어가기 전 손을 씻는 것과 마찬가지로 프로그래머가 가져야 할 책임이다.깨끗한 코드란 무엇인가를 여러 유명 프로그래머들의 발언에 빗대어 설명한다. 그중 가장 내게 와닿은 내용은 다음과 같다.깨끗한 코드는 세세한 사항까지 처리하는 코드, 한가지 작업에만 집중하는 코드이다. 그래서 타인이 코드를 볼 때 딱히 수정사항이..
자바의 객체 지향 프로그래밍 객체 지향 프로그래밍 자바는 클래스(class)와 객체(object)로 이루어져 있습니다. 소프트웨어를 개발할 때, 부품에 해당하는 객체들을 먼저 생성하고, 이 객체들을 하나씩 조립하여 프로그램을 완성시키는 방법을 객체 지향 프로그래밍이라고 말합니다. 자바에서 프로그래밍도 대표적인 객체 지향 프로그래밍에 속합니다. 객체 지향 프로그래밍은 쉽게 말해 프로그래밍을 명령어의 모음이라고 보는 시각에서 벗어나 실제 객체들의 모음이라고 보는 시각의 프로그래밍이라고 이해하면 편합니다.     객체란 무엇일까?먼저 객체란, 물리적이거나 개념적으로 존재하는 것 중에서, 다른 것들과 구별이 가능한 것을 말합니다. 예를 들자면, 물리적으로 존재하는 것들은 책, 사람, 화장품, 시계, 지갑 등을 뜻하며, 개념적인 것들은 주문..
자바의 상속(inheritance) 자바의 상속 실제 상속은 부모가 자식에게 재산을 물려주는 행위를 말합니다. 자바에서의 상속의 개념은 기존 클래스의 필드와 메서드를 새로운 클래스에서 재사용하게 해 줍니다. 이름 그대로 기존 클래스의 속성과 기능을 그대로 물려받을 수 있습니다. 먼저 상속 관련 용어에 대해서 알아보도록 하겠습니다. 부모 클래스(슈퍼 클래스) : 상속을 통해서 자신의 필드와 메서드를 다른 클래스에게 제공하는 클래스를 의미합니다. 자식 클래스(서브 클래스) : 부모 클래스(슈퍼 클래스)로부터 필드와 메서드를 상속받는 클래스를 의미합니다. 상속을 통해, 기존에 존재하는 잘 개발된 클래스를 재사용해서 새로운 클래스를 생성하고 몇 가지 기능들만 추가할 수 있고, 부모 클래스를 수정하게 되면 상속 관계에 있는 자식 클래스들도 수정되어..