오늘 자바를 배우면서 다양한 코드를 보고 코드를 분류하는 방법이 궁금했습니다.
객체지향이라는 개념이 있는 한 코드 분류 영역에서 규칙처럼 사용되는 것이 있을 거라 생각해서 일치하는 부분이 있을 거라 생각했는데 너무 다양한 코드들이 보여서 그에 따른 구성을 보고 보기에 모두 다릅니다.
이러한 문제를 해결하기 위해 매니저에게 물어보니 Separation of Concerns SoC라는 개념이 존재합니다.
결국 이것도 SOLID 원칙과 비슷하게 느껴지지만 각각의 경우에 있어서 가장 작은 단위는 다르게 볼 수밖에 없기 때문에 최종 목표를 염두에 두고 가장 작은 단위로 분해할 가치가 있다고 생각합니다.
따라서 하나하나 다른 방식으로 배열되어 있고, 모두 다양한 모습을 하고 있는 것 같습니다.
창업이라는 궁극적인 목표의 목표에 따라 기준을 정하고 이러한 부분들을 실천하는 것이 현시점에서 가장 좋은 방법이라고 생각합니다.
관심사 분리의 법칙 SoC
SoC는 단일 목적 및 베타여야 하는 시스템 요소입니다.
어떤 요소도 다른 요소와 책임을 공유할 수 없으며 해당 요소와 관련되지 않은 책임을 포함할 수 없습니다.
오늘 제가 자바를 배울 때 다시 한 번 짚고 넘어가야 할 부분입니다.
복싱 및 언박싱
편의상 Java 컴파일러는 boxing 및 unboxing을 제공합니다.
내부적으로 추가 계산 작업을 하기 때문에 100만 건 기준으로 약 5배의 성능 차이가 나므로 불필요한 자동 변환을 피하도록 주의해야 합니다.
끈
String은 불변성을 특징으로 하므로 변경되지 않는 문자열을 자주 읽는 경우 String을 사용하면 성능을 향상시킬 수 있습니다.
그러나 문자열 추가, 수정, 삭제 등의 작업을 자주 수행하는 알고리즘에서 문자열을 사용하면 힙 메모리에 임시 가비지가 생성되어 힙 메모리 부족으로 인해 응용 프로그램 성능이 저하될 수 있습니다.
이것을 방지하기 위함이다
StringBuffer 문자열 빌더.
.append() 및 .delete()와 같은 API를 사용하여 동일한 개체 내에서 문자열을 변경합니다.
쓰레기가 발생하지 않습니다.
StringBuffer와 StringBuilder의 차이점
동기화 여부
StringBuffer는 동기화된 키워드를 지원하여 다중 스레드 환경에서 안전하게 만듭니다.
StringBuilder는 동기화를 지원하지 않기 때문에 멀티스레딩에는 적합하지 않지만, 싱글스레딩에는 StringBuffer보다는 낫습니다.
다시 스레드 작업을 시작할 때 다시 확인해야 합니다.