[clean Code] TIL(22.02.23)
*해당 내용은 <노마드 개발자 북클럽 - 클린코드 - 3주 완성반 (2기)> 기간동안 작성한 TIL 입니다.
* TIL (Today I Learned)
22.02.23
* 오늘 읽은 범위
3장 함수
📖 기억하고 싶은 내용
-
p.42 작게 만들어라! 함수를 만드는 첫째 규칙은 ‘작게!’다. 함수를 만드는 둘째 규칙은 ‘더 작게!’다.
-
p.43 블록과 들여쓰기 :
-
if/else문 ,while문 등에 들어가는 블록은 한 줄이어야 한다는 의미다. (...) 이 말은 중첩 구조가 생길만큼 함수가 커져서는 안 된다는 뜻이다.
-
p.44 한 가지만 해라! 함수는 한 가지를 해야한다. 그 한 가지를 잘 해야 한다. 그 한 가지만을 해야한다.
-
-
p.49~50 서술적인 이름을 사용하라!
- 이름이 길어도 괜찮다. 길고 서술적인 이름이 짧고 어려운 이름보다 좋다. (...) 이름을 정하느라 시간을 들여도 괜찮다.
- 이름을 붙일 때는 일관성이 있어야 한다. 모듈 내에서 함수 이름은 같은 문구, 명사,동사를 사용한다.
-
p.54 함수인수 : 단항 함수는 함수와 인수가 동사/명사 쌍을 이뤄야한다. 예를 들어 write(name)는 곧바로 이해한다. (...) 함수 이름이 키워드를 추가하는 형식이다. 예를 들어, assertEquals 보다 assertExpectedEqualsAcutal(expected,actual)이 더 좋다. 그러면 인수 순서를 기억할 필요가 없어진다.
-
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)?
- 모든 클래스는 하나의 책임만 가지며, 클래스는 그 책임을 완전히 캡슐화 해야함을 일컫는다
- 출처 : https://ko.wikipedia.org/wiki/단일책임원칙
-
OCP(Open Closed Principle)
- 소프트웨어 개체(클래스, 모듈, 함수 등등)는 확장에 대해 열려 있어야 하고, 수정에 대해서는 닫혀 있어야 한다'는 프로그래밍 원칙이다.
- 확장에 대해 열려 있다. : 이것은 모듈의 동작을 확장할 수 있다는 것을 의미한다. 애플리케이션의 요구 사항이 변경될 때, 이 변경에 맞게 새로운 동작을 추가해 모듈을 확장할 수 있다. 즉, 모듈이 하는 일을 변경할 수 있다.
- 수정에 대해 닫혀 있다 : 모듈의 소스 코드나 바이너리 코드를 수정하지 않아도 모듈의 기능을 확장하거나 변경할 수 있다. 그 모듈의 실행 가능한 바이너리 형태나 링크 가능한 라이브러리(예를 들어 윈도의 DLL이나 자바의 .jar)를 건드릴 필요가 없다.
- 출처 : https://ko.wikipedia.org/wiki/개방-폐쇄_원칙
-
객체 지향 프로그래밍
- 객체 지향 프로그래밍(Object-Oriented Programming, OOP)은 컴퓨터 프로그래밍 패러다임 중 하나이다. 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다.
- 출처 : https://ko.wikipedia.org/wiki/객체지향프로그래밍
Author And Source
이 문제에 관하여([clean Code] TIL(22.02.23)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@dwa_all/clean-Code-TIL22.02.23저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)