💡 TDD를 활용한 개발의 장점을 알고, 리팩토링하는 과정을 학습하였습니다.TDD테스트 주도 개발로 코드를 작성하기 전에 테스트를 먼저 작성하는 개발 방법론입니다.아래와 같은 작업을, 매우 짧은 사이클로 반복한다는 특징이 있습니다.[빨강] 실패하는 작은 테스트 작성[초록] 최대한 빠른 테스트 통과[파랑] 리팩터링 과정을 통해서 중복 & 코드 개선TDD의 목적은 코드가 테스트에 지정한 요구 사항을 충족하는지 확인하고, 코드를 리팩토링하기 쉽게 수정하는 것입니다.TDD 원칙실패하는 단위 테스트를 작성할 때까지 구현 코드를 작성하지 않습니다.컴파일은 실패하지 않지만, 실행이 실패하는 정도로만 코드를 작성합니다.현재 실패하는 테스트를 통과할 정도로만 실제 코드를 작성합니다.Kotlin에서의 TDDKotlin은..
💡 리뷰 활동을 하면서 디미터의 법칙을 상기시켜보라는 리뷰를 받게 되었습니다. 객체 지향 프로그래밍에서 중요하게 적용되는 디미터의 법칙에 대하여 학습하였습니다. 디미터의 법칙?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): 인터페이스 분리 원..
💡 객체지향 & 소프트웨어에서 중요한 응집도와 결합도에 대하여 학습하였습니다.소프트웨어 모듈 독립성소프트웨어에서 크고 복잡한 문제가 발생했을 때, 문제를 작은 부분으로 쪼개어서 하나씩 풀어나가야 합니다.이런 경우 큰 문제를 작은 부분으로 쪼개어 해결하는 것을 모듈화라고 하며, 소프트웨어를 각 기능별로 나누어진 소스 단위를 뜻합니다.독립적으로 컴파일 가능한 프로그램 혹은 하나의 함수나 클래스도 모듈이 될 수 있습니다.좋은 소프트웨어 일수록 모듈의 독립성이 높다라고 표현할 수 있습니다.좋은 모듈화는 목적에 맞는 기능만으로 모듈을 나누게 됩니다.각각의 모듈은 주어진 기능만을 독립적으로 수행하기 때문에 재사용성이 높고 코드의 이해와 수정이 용이합니다.해당 모듈을 수정하더라도 다른 모듈에 끼치는 영항이 적으며,..
명령형 프로그래밍 대표적으로 절차지향, 객체지향 프로그래밍이 있으며, 프로그램에서 값이나 상태의 변화를 중요하게 생각합니다. 컴퓨터가 수행할 명령들을 순서대로 작성한 것이며, 어떻게 그것을 해결할 것인가에 관심을 둔 프로그래밍 기법입니다. 시간 순서대로 문제를 해결하며 알고리즘을 명시하지만, 목표를 명시하지 않는다는 특징이 있습니다. 절차지향 프로그래밍 (명령형) 객체 지향 프로그래밍과 비교되며, 무엇을 어떤 절차로 할 것인가에 중점을 두고 있습니다. 순차적인 처리가 중요하며 프로그램 전체가 유기적으로 연결되도록하는 프로그래밍 패러다임 입니다. 물이 위에서 아래로 흐르는 것처럼 순차적인 처리를 중요시하는 프로그래밍 기법으로 C언어가 대표적입니다. 실행속도가 빠르지만, 코드의 순서가 바뀌면 동일한 결과를 ..