💡 함수형 프로그래밍의 개념과 장점을 이해하고 다른 프로그래밍 방식과 차이를 이해하였습니다 ! 함수형 프로그래밍함수형 프로그래밍은 대부분의 문제를 순수 함수로 나누어 해결하는 기법입니다.작은 문제를 해결하기 위한 함수를 작성하여 가독성을 높이고 유지보수를 용이하게 해줍니다.클린 코드의 저자 Robert C.Martin은 함수형 프로그래밍을 대입문이 없는 프로그래밍으로 정의하였습니다.명령형 프로그래밍 기반으로 개발할 때 소프트웨어의 크기가 커짐에 따라 발생하는 스파게티 코드의 유지보수 어려움을 해결하기 위해 사용되었습니다.선언형 프로그래밍의 방식입니다.명령형 프로그래밍무엇(What)을 할 것인지 나타내기보다 어떻게(How)를 할 것인지 설명하는 방식입니다.아래 두 가지로 구분 됩니다.절차지향 프로그래밍:..
💡 우아한테크코스 과정에서 학습했던 점진적 리팩터링에 대해 복습하였습니다! 레거시 코드 리팩토링레거시 코드 리팩토링은 기존의 코드베이스를 개선하는 과정입니다.주된 목적은 코드의 기능을 변경하지 않으면서 코드의 구조를 더 깔끔하게하고 유지보수가 용이하게 만드는 것입니다.보통 오래된 시스템에서 작성된 코드에 필요합니다.레거시 코드읽기 어려움코드가 복잡하거나 문서화가 부족하여 이해하기 어렵다유지보수 어려움코드의 수정이나 기능 추가가 힘들고 버그가 발생하기 쉽다테스트 부족충분한 테스트가 없어서 코드 변경 시 예상치 못한 문제를 일으킬 수 있다점진적인 리팩터링한 번에 많은 코드를 바꾸는 것이 아닌, 여러 작은 단계로 나누어 변경하는 방법입니다.기존의 테스트 코드가 깨지지 않는 상태로 리팩터링을 실행합니다.컴파일..
💡 리뷰 활동을 하면서 디미터의 법칙을 상기시켜보라는 리뷰를 받게 되었습니다. 객체 지향 프로그래밍에서 중요하게 적용되는 디미터의 법칙에 대하여 학습하였습니다. 디미터의 법칙?Law of Demeter어떤 객체가 다른 객체에 대해 지나치게 많이 알다보니, 결합도가 높아지고 좋지 못한 설계가 발생합니다.이를 개선하고자 객체에게 내부 값을 숨기는 대신 함수를 공개하도록 하는 것이 디미터의 법칙입니다.다른 객체가 어떠한 내부 값을 가지고 있는지 속사정을 몰라아 햔다는 뜻으로, 아래와 같이 불리기도 합니다.Don’t Talk to Stranger (낯선 이에게 말하지 마라)Principle of lesat knowledge (최소 지식 원칙)또한 직관적인 이해를 위해서 여러 개의 .(도트)를 사용하지 않도록 ..
💡 프로그래밍 언어, 특히 Java 언어에서 사용되는 Compile, Decompile에 대한 내용과 코틀린 코드를 자바 코드로 Decompile하는 과정을 실습하였습니다. Compile?사람이 이해하는 언어를 컴퓨터가 이해하는 언어로 바꾸는 과정을 컴파일이라고 합니다.0과 1로 모든 명령어를 이해할 수 있는 컴퓨터에게 언어를 이해 시켜줄 수 있도록 번역해주는 과정을 거칩니다.또한 원시코드를 목적코드를 바꿔주는 과정을 컴파일이라 합니다.원시코드 : 인간이 알아볼 수 있는 코드 (.java..)목적코드 : 컴퓨터가 이해하는 코드, 기계어 (.class..)컴파일 과정이 필요한 이유JVM에서는 byte code(.class)를 실행할 때 compile 과정에서 진행한 일을 다시 진행하는 과정 없이 실행만 ..
💡 객체 지향 프로그래밍의 5가지 핵심 원칙인 SOLID에 대하여 학습하였습니다.객체지향 프로그래밍 5 설계 원칙 (SOLID)SOLID란 객체 지향 프로그래밍을 하면서 지켜야하는 5대 원칙으로 SRP, OCP, LSP, DIP, ISP의 앞글자를 따서 만들었습니다.SOLID 원칙을 철저히 지키면서 시간이 지나도 변경에 용이하고, 유지보수와 확장성이 쉬운 소프트웨어를 개발하는 것이 중요합니다!SRP(Single Responsibility Principle): 단일 책임 원칙OCP(Open Closed Principle): 개방 폐쇄 원칙LSP(Listov Substitution Principle): 리스코프 치환 원칙ISP(Interface Segregation Principle): 인터페이스 분리 원..
💡 객체지향 & 소프트웨어에서 중요한 응집도와 결합도에 대하여 학습하였습니다.소프트웨어 모듈 독립성소프트웨어에서 크고 복잡한 문제가 발생했을 때, 문제를 작은 부분으로 쪼개어서 하나씩 풀어나가야 합니다.이런 경우 큰 문제를 작은 부분으로 쪼개어 해결하는 것을 모듈화라고 하며, 소프트웨어를 각 기능별로 나누어진 소스 단위를 뜻합니다.독립적으로 컴파일 가능한 프로그램 혹은 하나의 함수나 클래스도 모듈이 될 수 있습니다.좋은 소프트웨어 일수록 모듈의 독립성이 높다라고 표현할 수 있습니다.좋은 모듈화는 목적에 맞는 기능만으로 모듈을 나누게 됩니다.각각의 모듈은 주어진 기능만을 독립적으로 수행하기 때문에 재사용성이 높고 코드의 이해와 수정이 용이합니다.해당 모듈을 수정하더라도 다른 모듈에 끼치는 영항이 적으며,..