728x90
반응형

개발 36

파이브 라인스 오브 코드 - 긴 코드 조각내기

규칙 - 왜 다섯 줄인가? 이 책에서는 근본적인 규칙으로 다섯 줄 제한을 소개합니다. 메서드는 {와 }를 제외하고 5줄 이상이 되면 안된다고 이야기 합니다. 아래 isTrue() 메서드는 4줄 입니다. function isTrue(bool: boolean) { if (bool) return true; else return false; } 메서드가 길면 한 번에 긴 메서드의 모든 논리를 머릿속에 담아야하기 때문에 작업하기가 어렵습니다. 또한 메서드 이름만 보고 어떤 역할을 하는지 유추가 되기 때문에 주석을 넣는 것과 같은 효과를 낼 수 있습니다. draw() 메서드는 매우 길지만 내부를 잘 보면 map을 그리는 영역과 player를 그리는 영역이 존재하고 있습니다. 우리는 메서드 추출 이라는 리팩터링을 통..

개발/리팩터링 2023.07.03

파이브 라인스 오브 코드 - 리팩터링 깊게 들여다보기

리팩터링이란 코드가 하는 일을 변경하지 않고 더 나은 코드를 만드는 것 입니다. 코드 개선 더 나은 코드를 만들기 위해 코드를 개선해야 하는데 가독성과 유지보수성을 잘 챙겨야 좋은 코드라고 할 수 있습니다. 가독성 가독성은 의도를 전달하기 위한 코드의 성질로 가독성을 잘 챙긴 코드는 읽기 쉽고 작성자의 의도를 잘 파악하기가 쉽습니다. 유지보수성 유지보수성은 얼마나 많은 후보를 조사해야 하는지를 나타내는 성질입니다. 여기서 말하는 후보는 버그를 고치거나 기능을 추가하기 위해 어떤 코드가 어디에 있는지, 새로운 코드를 어디에 배치해야하는지에 대한 context를 말합니다. 유지보수성이 좋으면 조사해야 하는 context가 줄어들고 놓치는 부분이 없어서 또 다른 버그를 발생시키는 위험을 줄여줍니다. 일반적인 ..

개발/리팩터링 2023.06.19

(Test) Junit에서 isEqualTo 와 isSameAs

Kotlin에서 JUnit을 사용할 때 isEqualTo와 isSameAs 메서드의 차이점은 Java에서와 동일합니다. isEqualTo 메서드는 두 개의 객체가 내용(content) 면에서 동일한지 확인하는 데 사용됩니다. 객체의 값(value)을 비교하기 위해 equals 메서드를 사용합니다. 예를 들어, obj1과 obj2라는 두 개의 객체가 있다면, assertThat(obj1).isEqualTo(obj2)를 사용하여 obj1이 obj2와 동일하다고 단언할 수 있습니다. isSameAs 메서드는 반면에 두 개의 객체가 메모리 상에서 정확히 동일한 인스턴스를 참조하는지 확인합니다. 객체의 참조(reference)를 비교합니다. 예를 들어, obj1과 obj2라는 두 개의 객체가 있다면, assert..

개발/코틀린 2023.06.17

(Coroutine) Flow flatMapConcat, flatMapLatest, flatMapMerge

flatMapConcat, flatMapLatest, 그리고 flatMapMerge는 모두 Kotlin의 코루틴 라이브러리에서 제공하는 Flow 연산자들입니다. 이들 연산자들은 각각 다른 방식으로 upstream Flow의 각 요소를 다른 Flow로 변환하고, 이렇게 생성된 여러 Flow들을 하나의 결과 Flow로 연결합니다. flatMapConcat: flatMapConcat 연산자는 upstream Flow의 각 요소를 Flow로 변환하고, 이를 순차적으로 연결하여 결과 Flow를 생성합니다. 즉, 한 번에 하나의 내부 Flow만 처리하며, 새로운 내부 Flow는 이전의 내부 Flow가 완전히 수집된 후에만 수집됩니다. flatMapMerge: flatMapMerge 연산자도 upstream Flow..

개발/코틀린 2023.06.14

파이브 라인스 오브 코드 - 리팩터링 리팩터링하기

높은 품질의 코드는 유지 보수 비용을 줄이고, 오류를 줄이며, 개발자의 만족도를 향상시키고 리팩터링을 통해 높은 품질을 유지 할 수 있습니다. 리팩터링을 하기 위해선 스킬, 문화, 도구가 충분해야 합니다. 스킬은 코드의 문제점을 파악하기 위해 필요하고, 문화는 리팩터링에 대해 권장하는 것이고, 도구는 작업에 대한 안정성을 보장하는 무언가 입니다. 리팩터링이란 무엇인가? 리팩터링은 기능을 변경하지 않고 코드를 변경하는 것 입니다. 리팩터링을 해야 하는 이유는 이러합니다. 코드를 더 빠르게 만들기 위해 더 작은 코드를 만들기 위해 코드를 더 일반적이거나 재사용 가능하게 하기 위해 코드의 가독성을 높이고 유지보수를 용이하게 하기 위해 이를 다시 정리하면 좋은 코드란 사람이 읽기 쉽고, 유지보수가 용이하며, 의..

개발/리팩터링 2023.06.11

(Plugin) Open current Activity

이번 포스팅에서는 제가 유용하다고 생각하는 플러그인중 하나인 Open current Activity 플러그인을 소개하고자 합니다. 특정 서비스를 오래동안 개발 하다보면 화면만 봐도 이게 어떤 Activity인지 이름을 바로 떠오르고 찾을 수 있을 것 입니다. 하지만 회사에 들어온지 얼마 안됐거나 다른사람이 작성한 화면인 경우 이 화면이 어떤 Activity인지 찾을 수 없습니다. 제가 이 플러그인을 알기 전에는 화면에 보이는 문구 하나를 골라서 전체 탐색하고 관련 Activity를 추적했습니다. 이러한 과정은 정말 불편하고 개발 생산성을 무척 떨어트리게 됩니다. Open current Activity 플러그인은 Mac 기준으로 command + f10, Windows 기준으로 Ctrl + f10 단축키를..

정수형 변수 스왑하기

public static void main(String[] args) { int a = 3; int b = 5; System.out.println(String.format("a: %d, b: %d", a, b)); // a: 3, b: 5 } 만약 이렇게 a가 3이고 b가 5인 변수에서 a와 b의 값을 스왑하기 위해서 어떻게 해야 할까요? temp 변수 사용하기 public static void main(String[] args) { int a = 3; int b = 5; int temp = a; a = b; b = temp; System.out.println(String.format("a: %d, b: %d", a, b)); // a: 5, b: 3 } 보통은 이렇게 temp 변수를 두고 1. temp..

개발/이것저것 2023.05.07

(Git) Git ignore 파일 생성기

이번 포스팅에서는 Git ignore 파일을 자동으로 생성해 주는 gitignore.io 사이트를 소개하려고 합니다.Git ignore 사용하는 이유Git ignore는 Git 저장소에서 추적하지 않을 파일이나 디렉터리를 지정하는 데 사용됩니다. Git ignore를 사용하면 Git 저장소에서 불필요한 파일이나 디렉터리를 제외할 수 있습니다. 보통 프로젝트에는 소스 코드 외에도 빌드 출력물, 로그 파일, 캐시 파일 등이 포함됩니다. 이러한 파일들은 보통 Git 저장소에 포함되지 않아야 합니다. Git ignore를 사용하면 이러한 파일들을 자동으로 Git 저장소에서 제외시킬 수 있습니다. 이렇게 하면 Git 저장소가 더욱 깨끗하고 관리하기 쉽게 유지됩니다. 또한 Git ignore는 프로젝트를 공유할 때..

개발/Git 2023.05.07

(Git) GitKraken에서 여러 계정 사용하기

안녕하세요. 이번 포스팅에서는 GitKraken을 사용할 때 git 계정을 여러 개 사용하는 방법에 대해 알아보려고 합니다.GitKrakenGitKraken은 Git gui tools로 git을 사용할 때 유용하게 사용할 수 있는 좋은 도구입니다.저는 2017년도부터 꾸준히 GitKraken을 사용해 왔는데 아직까지 크게 불편한 것이 없어서 계속 사용 중입니다.이와 유사한 도구로 SourceTree, Github Desktop, Fork 등이 있습니다.여러 계정이 왜 필요하지?개발자로 취업하고 주로 회사 맥북을 들고 다니다 보니 제 개인 맥북을 사용할 일은 거의 없어지게 되었습니다.그렇다 보니 공부를 하거나 개인 작업을 할 때도 회사 맥북을 이용하는데 commit author나 committer가 회사 ..

개발/Git 2023.05.07

(코틀린) Testing with Kotest

테스트 프레임워크는 개발 생명 주기 전반에서 품질을 유지할 수 있도록 도움을 주고, 재사용 가능한 코드 작성을 돕는 중요한 역할을 합니다. Kotest 명세 Kotest를 설정하는 방법과 테스트 하는 방법에 대해 알아봅니다. Kotest 시작하기 Kotest를 하려면 프로젝트 의존성에 Kotest를 추가해야 합니다. testImplementation "io.kotest:kotest-runner-junit5:4.5.0" Kotest와 IntelliJ의 통합해주기 위해 제공되는 플러그인이 있습니다. import io.kotest.core.spec.style.StringSpec import io.kotest.matchers.shouldBe class NumbersTest : StringSpec({ "2 + 2..

개발/코틀린 2022.12.18
728x90
반응형