전체 글(120)
-
디미터 법칙(Law of Demeter)
디미터 법칙이란? 디미터 법칙(Law of Demeter)은 데메테르 법칙이라고도 불리며 줄여서 LoD라고도 불립니다. 이 법칙은 "최소한의 지식 원칙(The Principle of Least Knowledge)"으로 알려져 있으며, 모듈은 자신이 조작하는 객체의 속사정을 몰라야 한다는 것을 의미합니다. Object-Oriented Programming: An Objective Sense of Style 에서 처음 소개되었습니다. 이 글의 저자들은 디미터라는 이름의 프로젝트를 진행하던 도중 객체지향 프로그래밍에서 객체들의 협력 경로를 제한하면 결합도를 효과적으로 낮출 수 있다는 사실을 알게 되어 디미터 법칙을 만들게 되었습니다. 디미터 법칙의 조건 아래의 내용는 오브젝트-조용호에서 나오는 내용입니다. 클..
2023.11.10 -
코드 재사용성을 높이는 방법
디자인 패턴의 아름다움이라는 책을 읽다가 코드 재사용성에 대한 이야기가 있어 정리하려고 합니다. 1. 코드의 결합도를 줄인다. 고도로 결합된 코드는 특정 기능을 재사용하거나 독립적인 모듈, 클래스, 함수로 추출하려고 할때, 일부 코드의 동작이 전체에 영향을 미치며, 일부 코드를 분리하기 위해 보다 많은 코드를 재배치해야 하는 경우가 많다. 따라서 결합도가 높은 코드는 코드의 재사용성에 영향을 미치며, 이를 피하기 위해 코드의 결합도를 최소화 할 필요가 있다. 많은 로직이 들어간 코드는 많은 곳에 영향을 미치기 때문에, 코드를 분리하려면 필요한 부분 뿐만 아니라 다른 부분의 코드를 많이 건드려야 한다. 2. 단일 책임 원칙을 충족시켜야 한다. 모듈이나 클래스의 책임이 충분히 단일하지 않은데, 설계가 거대하..
2023.08.17 -
Rust 문자열
러스트에서 문자열을 다룰 때는 String 타입 또는 &str 타입을 이용합니다. &str은 변경이 불가능 하기 때문에 함수의 반환 값으로 사용해야 할 때는 String 타입을 사용하고 있습니다. 이 둘의 차이점에 대해 먼저 알아 보겠ㅅㅂ니다. String 타입 String 타입은 벡터 타입입니다. 정확히는 vec 타입입니다. u8은 부호가 없는 8비트(1바이트) 정수이기 때문에 String 타입은 1바이트 단위로 데이터를 확장 할 수 있고, 벡터 타입은 힙 메모리에 저장됩니다. &str 타입 &str 타입은 슬라이스라고 합니다. 큰따옴표("")로 감싼 문자열이 &str이며, 러스트에서는 슬라이스인 &[u8] 타입으로 취급됩니다. &[u8] 타입인 것을 보면 참조자로만 사용 할 수 있기 때문에 소유권이 ..
2023.06.24 -
Windows11 Neovim 설치하기
개요 윈도우에서 Linux 처럼 vim을 사용해서 개발을 할 수 있습니다. 기존에는 vi, vim을 많이 사용했는데 neovim이라고 훨씬 기능이 많고 확장성이 좋은 vi가 있어 윈도우에 설치해서 사용해보려 합니다. 다운로드 [설치](Installing Neovim · neovim/neovim Wiki (github.com)) nvim-win64.msi를 다운받아 설치합니다. 확인하기 터미널을 띄워 neovim의 버전을 확인합니다. > nvim --version NVIM v0.9.1 Build type: RelWithDebInfo LuaJIT 2.1.0-beta3 Compilation: C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/..
2023.06.23 -
cargo diesel_cli 설치 에러
개요 Rust의 ORM 중 가장 유명한 diesel을 사용하고 싶어 테스트 중이 였다. DB는 Postgres며, 튜토리얼을 따라 하는데 정상적으로 diesel_cli가 설치 되지 않아 정리하려 한다. Diesel 설치 [dependencies] diesel = { version = "2.0.4", features = ["postgres"] } $ cargo install diesel_cli --no-default-features --features postgres ... ... b" "-o" "/tmp/cargo-installtmxLrL/release/deps/diesel-51c0e09b49673ddd" "-Wl,--gc-sections" "-pie" "-Wl,-z,relro,-z,now" "-Wl,-..
2023.06.22 -
환경변수 파일 읽기
개요 프로젝트를 하다보면 프로그램 내부에서 사용 할 환경 설정 파일을 따로 관리하는 경우가 있습니다. 이럴 때 우리는 .env 파일을 만들어서 사용합니다. 오늘은 .env 파일을 읽는 방법에 대해 알아보도록 하겠습니다. dotenv 추가 .env 파일을 읽고 환경변수를 가져오도록 하는 Crate 중 유용한 게 dotenv라는 crate가 있습니다. 먼저 Cargo.toml에 추가합니다. [dependencies] dotenv = "0.15.0" .env 파일 셋팅 저는 postgres에 접속 할 수 있는 Database 연결 정보를 설정해보도록 하겠습니다. NAME='TEST' AGE=13 환경변수 불러오기 환경 변수를 불러오는 방법은 간단합니다. dotenv().ok(); 를 추가만 해주면 .env 파..
2023.06.21