Categories
Programming

Early Returns

오늘은 Early Returns 에 관하여 이야기 해보려 한다. 한국어로는 조기리턴 이라고도 한다.

Early Returns 란 쉽게 말해서 조건이 맞을시, 바로바로 리턴 해버리는 패턴을 이야기한다.

예를 들어보자. 언어는 Go 이다. 주어진 연도가 윤년인지 아닌지 구분하는 함수이다.

// Early Return 사용한 예
func isLeapYear(year int) bool {
	if year % 4 == 0 && year % 100 != 0 {
		return true
	}
	if year % 400 == 0 {
		return true
	}
	return false
}

위 코드는 분명 이렇게도 쓸수있다.

// Early Return 사용 하지 않은 예
func isLeapYear(year int) bool {
	if (year % 4 == 0 && year % 100 != 0) || year % 400 == 0 {
		return true
	} else {
		return false
	}
}

언뜻 보면 별 차이 없어 보이고 코드도 Early Return 을 사용하지 않은 예가 라인 수도 더 적다. 하지만 Early Returns 는 다음과 같은 장점을 갖는다.

  1. return false 코드를 보면 한칸 덜 들여쓰기 되어있다. 즉 그만큼 코드가 더 간결해진다.
  2. 만약 return false 같은 간결한 구문이 아니고 여러가지 연산이 필요한 코드라면 그 위의 조건들에 부합한다면 그 다음 코드가 사용되지 않는다는 확신을 쉽게 가질수 있다.
  3. 위 이유만큼 간결해 지면서 이에 대한 테스트 또한 쓰기 쉬워진다.

이러한 컨셉은 루프문에서도 사용가능하다. 주어진 기간 동안의 윤년들을 리턴하는 함수이다

func getLeapYears(start int, end int) []int {
	leapYears := []int{}
	for year := start; year <= end; year++ {
		if !isLeapYear(year) {
			continue
		}
		leapYears = append(leapYears, year)
	}
	return leapYears
}

위 예에서 보다시피 isLeapYear(year)false 리턴시 바로 continue 를 해버림으로써 Early Returns 와 같은 효과를 볼 수 있다.

사실 Early Returns 는 어디까지나 개발자의 취향이다. 나는 개인적으로 많이 선호하는 편이나 별로 좋아하지 않은 사람들도 있다. 가장 중요한건 읽기 쉬운 코드를 작성하는 것이라 본다.

Categories
Linux Manjaro

Manjaro 한글 입력 설정

최근 Manjaro Linux로 넘어왔고 너무 마음에 든다.
Arch Linux 기반이기에 Rolling Release가 구현되어있고 Arch Linux에 비해 접근성도 좋다.
내가 사용한 한글 입력기 설정 방법을 소개한다.
나는 Ubuntu를 사용하다 넘어와서 익숙한 IBus를 이용해봤다.

이 글은 Manjaro XFCE 20.0.3을 기반으로 작성하였다.

1. Locale 설정

$ sudo nano /etc/locale.gen

nano 외에 더 선호하는 에디터가 있다면 그걸 사용해도 좋다
en_US.UTF-8ko_KR.UTF-8을 찾아서 그 앞의 #를 제거 후 저장

작성시 en_US.UTF-8은 176번째줄, ko_KR.UTF-8은 312번째줄에있다.

nano 이용시:
Ctrl+Shift+-를 누르면 원하는 줄로 이동할수 있다
Ctrl+X, Y, Enter를 차례대로 누르면 저장하고 나갈수 있다

$ sudo locale-gen

2. Input Method 설정

$ sudo pacman -S ibus ibus-hangul

필요한 패키지를 설치한다

$ nano ~/.bashrc

ibus-daemon을 설정하기 위해 .bashrc를 수정하자

export GTK_IM_MODULE=ibus
export XMODIFIERS=@im=ibus
export QT_IM_MODULE=ibus
ibus-daemon -drx

위 4줄을 추가해준다

Log Out 후 다시 Log In 해서 IBus를 설정하자

$ ibus-setup

만약 ibus-daemon이 실행 안되었다는 에러가 뜬다면 위 4줄을 ~/.xprofile, ~/.xinitrc, 또는 ~/.zshrc에 추가해보자

Input Method => Add => 점세개 클릭 => Korean 검색 => Korean => Hangul => Add 를 차례로 눌러준다

그리고 English - English (US) 클릭 후 Remove를 눌러 없애준다

3. 설정 완료

한글 입력이 되는지 확인하자
나는 한/영키가 없어서 Shift+Space로 한/영 전환한다

참조

https://wiki.archlinux.org/index.php/IBus
https://wiki.archlinux.org/index.php/Localization/Korean