의존성 주입(DI, Dependency Injection)
·
Software Engineering/Software Development Principles
의존성 주입(DI, Dependency Injection)소프트웨어 엔지니어링에서 의존성 주입(dependency injection)은 하나의 객체가 다른 객체의 의존성을 제공하는 기술입니다. 여기서 "의존성"은 서비스로 사용할 수 있는 객체를 의미하며 클라이언트가 어떤 서비스를 사용할 것인지 지정하는 대신, 클라이언트에게 무슨 서비스를 사용할 것인지를 말해주는 것이다. "주입"은 의존성(서비스)을 사용하려면 객체(클라이언트)로 전달하는 것을 의미합니다. 서비스는 클라이언트의 상태의 일부입니다.즉, 의존성 주입은 객체간의 의존 관계를 외부에서 주입(Inject) 하는 디자인 패턴입니다. 객체가 직접 의존성을 생성하는 것이 아니라, 외부에서 주입해주므로 결합도를 낮추고 코드의 유지보수성과 테스트 용이성을 ..
Refactoring(리팩토링)
·
Software Engineering/Software Development Principles
Refactoring리팩토링(refactoring)은 소프트웨어 공학에서 '결과의 변경 없이 코드의 구조를 재조정함'을 뜻합니다. 주로 가독성을 높이고 유지보수를 편하게 하기위함 이며, 직접적인 버그 수정이나 기능 추가가 목적은 아니지만, 간접적으로 영향을 미칠 수가 있습니다. 사용자가 보는 외부 화면은 그대로 두면서 내부 논리나 구조를 바꾸고 개선하는 유지보수 행위에 가깝습니다.가독성, 유지보수성리팩토링의 주요 목표는 가독성과 유지보수성을 개선하는 것이며, 성능 최적화나 버그 수정이 직접적인 목표는 아니지만 결과적으로 영향을 미칠 수 있습니다.협업사람이 이해하는 코드를 작성하는 것이 중요합니다, 코드 스타일 가이드, 일관된 네이밍 규칙, 주석 작성 원칙 등이 리팩토링의 요소가 될 수 있습니다.Refac..
Code Smell
·
Software Engineering/Software Development Principles
Code Smell코드 스멜(Code Smell)은 컴퓨터 프로그래밍 코드에서 심오한 문제를 일으킬 가능성이 있는 프로그램 소스 코드의 특징을 가리킵니다. 무엇이 코드 스멜인지 아닌지의 여부를 결정하는 일은 주관적인 것으로 언어와 개발자, 개발 방법에 따라서 다양하게 나타납니다. 자동으로 특정한 종류의 코드 스멜을 확인하기 위한 도구들이 있으며, 그 예로는 체크스타일, PMD, 파인드벅스 등을 들 수 있습니다.즉, 코드스멜이란 읽기 어렵거나 중복된 로직을 가진 메서드, 개발자가 이해하거나 유지보수하기 어려워 리팩토링의 대상이 되는 소스코드, 좋은 소프트웨어 개발 관행을 위반하거나 설계원칙을 어기는 코드들이라고 볼 수 있습니다.이렇기에 코드스멜은 가독성 저하, 유지보수 어려움, 성능 저하 등 부정적인 영향..
Compiler
·
Software Engineering/Software Development Principles
Compiler(컴파일러)?컴파일러란 특정 프로그래밍 언어로 쓰여 있는 문서를 저급 프로그래밍 언어(기계어, 어셈블리어) 로 옮기는 언어 번역 프로그램을 말합니다.컴파일러는 고급 프로그래밍 언어를 실행 프로그램으로 만들기 위해 저급 프로그래밍 언어(예: 어셈블리 언어, object 코드, machine code)로 바꾸는데 사용됩니다.즉, 컴파일러란 우리가 프로그래밍을 할때 사용하는 언어를 컴퓨터가 이해할 수 있도록 기계어로 번역해주는 번역가 라고 볼 수 있다. 그리고 이러한 번역을 하는 행위를 컴파일이라고 합니다.참고로 여기서 말하는 저급 언어나 고급 언어는 언어에 따른 급이 있는게 아니라 컴퓨터와 사람이 이해하기 쉬운 자연어중 더 가까운쪽을 분류해서 명칭해둔것 입니다.. 저급 언어는 컴퓨터가 이해하기..