![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bzx712/btsIhwii1fI/604oIO7jxibMKrHKxoq0vk/img.png)
서브루틴은 프로그래밍에서 자주 사용하는 개념으로, 코드의 특정 기능을 수행하기 위해 독립적으로 작성된 코드 블록을 의미합니다. 서브루틴은 일반적으로 하나의 프로그램 내에서 여러 번 호출될 수 있으며, 코드의 재사용성과 가독성을 높이는 데 도움을 줍니다. 서브루틴의 다른 이름으로는 함수(function), 메서드(method), 프로시저(procedure) 등이 있습니다.서브루틴의 주요 특징독립성: 서브루틴은 독립적인 코드 블록으로 작성되어, 특정 작업을 수행하는 데 집중합니다.재사용성: 한 번 작성된 서브루틴은 프로그램 내에서 여러 번 호출할 수 있어, 코드의 중복을 줄이고 유지보수를 용이하게 합니다.매개변수: 서브루틴은 입력값(매개변수)을 받을 수 있으며, 이를 통해 다양한 상황에서 동작할 수 있습니다..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/Ahx7Z/btsIiyMYhAz/3RZeigv6MT0FktmkA30hBk/img.png)
정수형을 가지고 계산기를 만들어 보겠습니다. 1. 덧셈테스트를 먼저 작성합니다.@Testpublic void 정수형_두_개로_덧셈을_한다_1(){ int result = new Calculator().add(3, 4); assertEquals(7, result);}@Testpublic void 정수형_두_개로_덧셈을_한다_2(){ int result = new Calculator().add(8, 4); assertEquals(12, result);} 개발 순서는 _1 작성 -> 소스 코드 작성 -> 테스트 성공 -> _2 작성 -> 테스트 실패 -> 소스 코드 리팩터링 -> 테스트 성공 입니다. 완성된 소스 코드는 아래와 같습니다. public int add(int a, int b)..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/Fy3zQ/btsIhLlU3M3/PJgqgaJRCqkKGFHl2dLk60/img.png)
동작 파라미터화 코드 전달하기동작 파라미터화에서는 메서드 내부적으로 다양한 동작을 수행할 수 있도록 코드를 메서드 인수로 전달(일급 객체)동작 파라미터화를 이용하면 변화하는 요구사항에 더 잘 대응할 수 있는 코드를 구현할 수 있으며 나중에 엔지니어링 비용을 줄일 수 있음코드 전달 기법을 이용하면 동작을 메서드의 인수로 전달 가능 (ex, Predicate, Function, Supply, Consumer) 람다 표현식동작 파라미터화를 이용하면 더 유연하고 재사용할 수 있는 코드를 만들 수 있음람다 표현식은 메서드로 전달할 수 있는 익명 함수를 단순화한 것보통의 메서드와 달리 이름이 없으므로 익명이라 표현람다는 메서드처럼 특정 클래스에 종속되지 않으므로 함수라고 부름람다 표현식을 메서드 인수로 전달하거나 ..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/wfFMS/btsIhfU9TcR/km7eX4XJsDNhikjkhr56LK/img.png)
프로그래밍에서 "오버헤드(Overhead)"는 시스템 자원을 추가로 소비하게 되는 부가 비용을 의미합니다. 이러한 오버헤드는 여러 형태로 나타날 수 있으며, 성능 저하의 원인이 될 수 있습니다. 오버헤드는 주로 시간, 메모리, CPU 등의 자원 소비와 관련됩니다.오버헤드의 주요 유형시간 오버헤드(Time Overhead): 특정 작업이나 기능을 수행하는 데 추가적으로 소요되는 시간입니다. 예를 들어, 함수 호출, 컨텍스트 스위칭, 동기화 메커니즘 사용 등에서 발생할 수 있습니다.메모리 오버헤드(Memory Overhead): 추가적인 메모리 사용을 의미합니다. 예를 들어, 객체를 생성할 때 할당되는 메모리, 데이터 구조의 오버헤드, 런타임에서의 메모리 관리 등이 해당됩니다.CPU 오버헤드(CPU Over..