본문 바로가기

전체 글

(40)
8일차 TIL 객체와 자료 구조 DAY 8 오늘의 책 읽기: 6장. 객체와 자료구조 까지 🤓 책에서 기억하고 싶은 내용 형식 논리에 치우쳐 조회 함수와 설정 함수로 변수를 다룬다고 클래스가 되지는 않는다. 그보다는 추상 인터페이스를 제공해 사용자가 구현을 모른 채 자료의 핵심을 조작할 수 있어야 진정한 의미의 클래스다. ... 자료를 세세하게 공개하기보다는 추상적인 개념으로 표현하는 편이 좋다. 119p 객체는 추상화 뒤로 자료를 숨긴 채 자료를 다루는 함수만 공개한다. 자료 구조는 자료를 그대로 공개하며 별다른 함수는 제공하지 않는다. ... 두 정의는 본질적으로 상반된다. 절차적인 코드는 기존 자료 구조를 변경하지 않으면서 새 함수를 추가하기 쉽다. 반면, 객체 지향 코드는 기존 함수를 변경하지 않으면서 새 클래스를 추가하기 쉽다...
7일차 TIL 형식 맞추기 DAY 7 오늘의 책 읽기: 5장. 형식 맞추기 까지 🤓 책에서 기억하고 싶은 내용 오늘 구현한 기능이 다음 버전에서 바뀔 확률은 높다. 그런데 오늘 구현한 코드의 가독성은 앞으로 바뀔 코드의 품질에 지대한 영향을 미친다. 오랜 시간이 지나 원래 코드의 흔적을 더 이상 찾아보기 어려울 정도로 코드가 바뀌어도 맨 처음 잡아놓은 구현 스타일과 가독성 수준은 유지보수 용이성과 확장성에 계속 영향을 끼친다. 96p 이름은 간단하면서도 설명이 가능하게 짓는다. 이름만 보고도 올바른 모듈을 살펴보고 있는지 아닌지를 판단할 정도로 신경써서 짓는다. 소스 파일 첫 부분은 고차원 개념과 알고리즘을 설명한다. 아래로 내려갈수록 의도를 세세하게 묘사한다. 마지막에는 가장 저차원 함수와 세부 내역이 나온다. 98p 일련의 행..
5, 6일차 TIL 주석 DAY 5, 6 오늘의 책 읽기: 4장. 주석 까지 🤓 책에서 기억하고 싶은 내용 코드만이 자기가 하는 일을 진실되게 말한다. 코드만이 정확한 정보를 제공하는 유일한 출처다. 그러므로 우리는 주석을 가능한 줄이도록 꾸준히 노력해야한다. 69p 이해가 안되어 다른 모듈까지 뒤져야 하는 주석은 독자와 제대로 소통하지 못하는 주석이다. 76p 모든 함수에 Javadocs를 달거나 모든 변수에 주석을 달아야 한다는 규칙은 어리석기 그지 없다. 이런 주석은 코드를 복잡하게 만들며, 거짓말을 퍼트리고, 혼동과 무질서를 초래한다. 80p 🥰 오늘의 소감 평소 코드를 짜면서 주석을 자주 사용하는 편이라 생각되어 좋은 주석을 어떻게 짜야하는 것일까 궁금했는데, 좋은 주석은 '없는 주석'이라는 것을 보고 과거를 돌아보게 ..
3, 4일차 TIL 함수 DAY 3, 4 오늘의 책 읽기: 3장. 함수 까지 🤓 책에서 기억하고 싶은 내용 작게 만들어라 함수를 만드는 첫째 규칙은 '작게'다. 함수를 만드는 둘째 규칙은 '더 작게'다. (2, 3, 4줄 정도의 함수) 블록과 들여쓰기 중첩 구조가 생길만큼 함수가 커져서는 안된다. 그러므로 함수에서 들여쓰기 수준은 1단이나 2단을 넘어서면 안된다. 함수가 확실히 '한 가지' 작업만 하려면 함수 내 모든 문장의 추상화 수준이 동일해야 한다. ...getHtml()은 추상화 수준이 아주 높다. 반면 string pagePathName=PathParser.render(pagepath)는 추상화 주순이 중간이다. 그리고 .append("\n")와 같은 코드는 추상화 수준이 아주 낮다. 46p 내려가기 규칙 코드는 위에서..
2일차 TIL 의미 있는 이름 DAY 2 오늘의 책 읽기: 2장. 의미 있는 이름 까지 🤓 책에서 기억하고 싶은 내용 의도를 분명히 밝혀라 변수나 함수 그리고 클래스의 이름은 다음과 같은 굵직한 질문에 모두 답해야한다. 변수의 존재 이유는? 수행기능은? 사용방법은? 따로 주석이 필요하다면 의도를 분명히 드러내지 못했다는 말이다. 22p 그릇된 정보를 피해라 나름대로 널리 쓰이는 의미가 있는 단어는 다른 의미로 사용해도 안된다. 유사한 개념은 유사한 표기법을 사용한다. 의미있게 구분해라 연속된 숫자를 덧붙이거나 불용어를 추가하는 방식은 적절하지 못하다. 발음하기 쉬운 이름을 사용하라 발음하기 어려운 이름은 토론하기도 어렵다. 검색하기 쉬운 이름을 사용하라 문자 하나를 사용하는 이름과 상수는 텍스트 코드에서 쉽게 눈에 띄지 않는다. 이름..
1일차 TIL 깨끗한 코드란? DAY 1 오늘의 책 읽기: 추천사 ~ 1장. 깨끗한 코드 까지 🤓 책에서 기억하고 싶은 내용 53 철학 정리: 무엇이 어디에 있는가 정돈: 예상하는 위치에 있는가 청소: 필요한 것만 있는가 청결: 일관적인 기준이 있는가 생활화: 관례를 따르고, 습관이 되어있는가 앞으로 코드가 사라질 가망은 전혀 없다. 왜? 코드는 요구사항을 상세히 표현하는 수단이니까! 어느 수준에 이르면 코드의 도움 없이 요구사항을 상세하게 표현해내기란 불가능하다. 추상화도 불가능하다. 정확히 명시하는 수밖에 없다. 기계가 실행할 정도로 상세하게 요구사항을 명시하는 작업, 바로 이것이 프로그래밍이다. 이렇게 명시한 결과가 바로 코드다. 2p 우리 모두는 자신이 짠 쓰레기 코드를 쳐다보며 나중에 손보겠다고 생각한 경험이 있다. 우리 모..
Clean Code 책 구매 인증 3주 동안 "클린 코드"책의 핵심 부분을 읽기 시작!
1장 리스트, 스택, 큐 - std::vector C스타일의 배열이 향상된 버전인 std::array에는 단점이 존재한다. std::array의 크기는 컴파일 시간에 결정되는 상수여야 한다. 따라서 프로그램 실행 중에는 변경할 수 없다. 크기가 고정되어 있어서 원소를 추가하거나 삭제할 수 없다. std::array의 메모리 할당 방법을 변경할 수 없다. 항상 스택 메모리를 사용한다. 이러한 문제를 해결하기 위해 std::array 사용할 수 있다. 가변 크기 배열 std::array는 C스타일 배열, std::array가 가지고 있는 고정 크기 배열 문제를 해결할 수 있다. std::array는 초기화 과정에서 데이터의 크기를 제공하기 않아도 된다. //크기가 0인 벡터 선언 std::vector vec; //지정한 초기값으로 이루어진 크기가 5인 벡터..