TIL (Today I Learned)
2022.04.26.
오늘 읽은 범위
3장 함수
책에서 기억하고 싶은 내용을 써보세요.
- 함수를 만드는 첫째 규칙: 작게!
- 함수는 한 가지를 해야 한다. 그 한 가지를 잘해야 한다. 그 한 가지만을 해야한다.
- 함수에서 이상적인 인수 개수는 0개(무항)이다.
- DRY (Don't Repeat Yourself)
- 대가 master 프로그래머는 시스템을 (구현할) 프로그램이 아니라 (풀어갈) 이야기로 여긴다.
- 진짜 목표는 시스템이라는 이야기를 풀어가는데 있다는 사실을 명심하기 바란다.
오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요
함수 파트에서 작게, 한 가지만!을 계속 외치는 것을 보면서,
코드에서도 역시 비움이 미덕이겠구나를 느낍니다.
함수의 이상적인 인수 개수는 0개라니, 이것도 어느 누구도 알려주지 않은 사실입니다.
어느 분야든 어느 정도 경지에 오르면, 고수들은 한 가지 공통점으로 귀결된다는 말을
어디선가 들었던 것 같습니다. 반드시 프로그래밍이라는 분야에 국한되지 않는다고 해야할까요?
역설적이게도 대가 프로그래머들은 시스템을 '프로그램'이 아니라 '이야기'로 여긴다니,
경이로운 이야기입니다.
함수에 대해 다른 관점으로 많은 생각을 해볼 수 있었던 귀중한 시간이었습니다:)
궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.
- SRP (Single Responsibility Principle)
:a computer-programming principle that states that every module, class or function in a computer program should have responsibility over a single part of that program's functionality, and it should encapsulate that part.
로버트 마틴은 책임을 변경하려는 이유로 정의하고, 어떤 클래스나 모듈은 변경하려는 단 하나 이유만을 가져야 한다고 결론 짓는다.
https://en.wikipedia.org/wiki/Single-responsibility_principle
https://ko.wikipedia.org/wiki/%EB%8B%A8%EC%9D%BC_%EC%B1%85%EC%9E%84_%EC%9B%90%EC%B9%99
- OCP (Open Closed Principle)
: software entities (classes, modules, methods, etc.) should be open for extension, but closed for modification.
개방-폐쇄 원칙이 잘 적용되면, 기능을 추가하거나 변경해야 할 때 이미 제대로 동작하고 있던 원래 코드를 변경하지 않아도, 기존의 코드에 새로운 코드를 추가함으로써 기능의 추가나 변경이 가능하다.
https://ko.wikipedia.org/wiki/%EA%B0%9C%EB%B0%A9-%ED%8F%90%EC%87%84_%EC%9B%90%EC%B9%99
https://deviq.com/principles/open-closed-principle
- AOP (Aspect Oriented Programming)
: a technique for building common, reusable routines that can be applied applicationwide.
코드 그 자체를 수정하지 않는 대신 기존의 코드에 추가 동작(어드바이스)을 추가함으로써 수행
https://www.sciencedirect.com/topics/computer-science/aspect-oriented-programming
https://ko.wikipedia.org/wiki/%EA%B4%80%EC%A0%90_%EC%A7%80%ED%96%A5_%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D
- COP (Component Oriented Programming)
: a technique of developing software applications by combining pre-existing and new components
기존의 시스템이나 소프트웨어를 구성하는 컴포넌트를 조립해서 하나의 새로운 응용 프로그램을 만드는 소프트웨어 개발방법론
https://www.informit.com/articles/article.aspx?p=1609145&seqNum=2
https://ko.wikipedia.org/wiki/%EC%BB%B4%ED%8F%AC%EB%84%8C%ED%8A%B8_%EA%B8%B0%EB%B0%98_%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4_%EA%B3%B5%ED%95%99