개발자 99% 커뮤니티에서 수다 떨어요!
오늘 읽은 범위
3장 함수
📖 기억하고 싶은 내용
p.42 작게 만들어라! 함수를 만드는 첫째 규칙은 ‘작게!’다. 함수를 만드는 둘째 규칙은 ‘더 작게!’다.
p.44 한 가지만 해라! 함수는 한 가지를 해야한다. 그 한 가지를 잘 해야 한다. 그 한 가지만을 해야한다.
p.49~50 서술적인 이름을 사용하라!
이름이 길어도 괜찮다. 길고 서술적인 이름이 짧고 어려운 이름보다 좋다. (...) 이름을 정하느라 시간을 들여도 괜찮다.
이름을 붙일 때는 일관성이 있어야 한다. 모듈 내에서 함수 이름은 같은 문구, 명사,동사를 사용한다.
p.60 반복하지마라! : 어쩌면 중복은 소프트웨어에서 모든 악의 근원이다.
p.61 소프트웨어를 짜는 행위는 여느 글짓기와 비슷하다. 논문이나 기사를 작성할 때는 먼저 생각을 기록한 후 읽기 좋게 다듬는다.
p.62 진짜 목표는 시스템이라는 이야기를 풀어가는 데 있다는 사실을 명심하기 바란다.
✍️ 읽은 소감
1장에서 이름에 대해 읽은 후, 작업시 최대한 확실하게 지으려고 하다보니 이름이 길어져서 이게 맞는 건가 고민을 했는데 이번 장에서 그 고민에 대한 답을 받은 것 같아 마음이 편해졌다.
지난 번 2장 읽을 때 좋은 코드를 짜기 위한 과정들이 글쓰기 같다는 평을 남겼는데, 비슷하지만 다른 결의 관점에서 글쓰기와 소프트웨어 작성 행위의 유사점을 작가가 제시해 굉장히 흥미로웠다.
🧐 궁금한 내용, 잘 이해되지 않는 내용
프로그래밍에서의 추상화?
추상화란 복잡한 소프트웨어 시스템을 효율적으로 설계하고 구현할 수 있는 방법.
데이터나 프로세스를 의미, 수행과정이 비슷한 개념으로 묶어 정의(선언)하는 것이 추상화.
예시
class ImplementAbstraction {
// method to set values of internal members
set(x, y) {
this.a = x;
this.b = y;
}
display() {
console.log('a = ' + this.a);
console.log('b = ' + this.b);
}
}
const obj = new ImplementAbstraction();
obj.set(10, 20);
obj.display();
// a = 10
// b = 20
SRP(Single Responsibility)?
모든 클래스는 하나의 책임만 가지며, 클래스는 그 책임을 완전히 캡슐화 해야함을 일컫는다
OCP(Open Closed Principle)
소프트웨어 개체(클래스, 모듈, 함수 등등)는 확장에 대해 열려 있어야 하고, 수정에 대해서는 닫혀 있어야 한다'는 프로그래밍 원칙이다.
확장에 대해 열려 있다.
: 이것은 모듈의 동작을 확장할 수 있다는 것을 의미한다. 애플리케이션의 요구 사항이 변경될 때, 이 변경에 맞게 새로운 동작을 추가해 모듈을 확장할 수 있다. 즉, 모듈이 하는 일을 변경할 수 있다.
수정에 대해 닫혀 있다
: 모듈의 소스 코드나 바이너리 코드를 수정하지 않아도 모듈의 기능을 확장하거나 변경할 수 있다. 그 모듈의 실행 가능한 바이너리 형태나 링크 가능한 라이브러리(예를 들어 윈도의 DLL이나 자바의 .jar)를 건드릴 필요가 없다.