[GIT] 간단한 코드 수정으로 expo 에 contributor 되기

expo 는 react-native 를 간편하게 개발할 수 있도록 도와주는 프레임워크이다. expo 의 관한 설명은 생략하고  expo 에 나의 PR 이 받아들여진 과정을 적어보려한다. 




오픈소스에 참여하고 컨트리뷰터가 된다는 것은 개발자의 로망으로도 볼 수 있다. 개발을 배울 때부터 오픈소스에 타이포라도 고쳐서 기여하라고 많이 들었지만 사실 타이포를 발견하기 쉽지 않다.. 가끔 PR 목록들을 보면 어색한 문장이나 더 좋은 문장으로 변경하는 경우도 많은데 이는 웬만한 영어 실력이 아니라면 쉽지 않아 더 기회를 찾기는 어렵다.


필자의 경우는 expo 를 사용하여 개발을 진행하며 커스텀 폰트를 적용해야하는 상황이 생겼다. 이를 해결할 정보를 찾다 expo 공식 문서에 커스텀 폰트 적용과 관련된 내용을 보게 되었다. 버그가 있는 것은 아니였지만 불필요하게 느껴지는 코드였다. 기존의 코드는 아래와 같았다.



위 코드는 간단히 의사코드로 표현하면 아래와 같다.

if not 폰트로드:

    return <AppLoading />

else:

    return <SomeComponent />


위 코드는 아래와 같이 개선이 가능하다.

if not 폰트로드:

    return <AppLoading />

return <SomeComponent />


이러한 리펙토링은

더스틴 보즈웰, 트레버 파우커의 읽기 좋은 코드가 좋은 코드다(The Art of Readable Code) 에서 함수 중간에서 반환하기(Returning Early from a Function) 라고 불린다. 

이와 비슷한 개념으로 마틴 파울러의 리팩토링 2판에서는 중첩 조건문을 보호 구문으로 바꾸기(Replace Nested Conditional with Guard Clauses) 이라고 불린다.


리펙토링 기법을 적용하여 PR 을 날렸다. 



몇 문장 안되지만 시간은 거의 30분 40분이 걸린 것 같다. 영어를 잘 못하기 때문에 어색한 문장이기는 하겠지만 간단하다보니 문제가 되지 않은 것 같다.


해당 PR 을 올리고 씻을려고 하는데 휴대폰에 메일이 와서 보니까 i agree :) 가 보이는데 설마했다. 일단 PR 올린지 10분도 안 지났기 때문이다. 그래서 지나가는 개발자가 단 댓글일거 같았는데 이게 또 기대감에 차니까 다시 돌아와 깃헙을 보는데 이미 approve 가 되고 merge 까지 되어있었다. 아직도 심장 뛰는 느낌을 기억하고 있다. 정말 행복하고 어디 정말 원하던 회사에 합격한 느낌이였다.


믿기지 않아서 expo commit 기록을 보니 나의 커밋이 가장 위에 있는 것을 보고 실감을 하였다.




또한 expo 공식 문서에 가보니 변경한 내용이 적용되어있는데 너무 뿌듯하고 행복감을 느꼈다.





기회가 될수록 PR 을 시도해야겠다는 의욕도 더불어 생기는 것 같다. 혹 이 글을 보는 분들 중에 내가 이 문서를 먼저 봤으면 내가 컨트리뷰터가 되는건데 이런 생각이 드시는 분이 계실 수 있다고 생각한다. 그 생각이 정말 정확하다고 생각하기 때문에 꼭 여러 오픈소스 컨트리뷰터가 되시기를 바랍니다.










댓글

이 블로그의 인기 게시물

[INTELLIJ] 인텔리제이 폴더 안 보이고 파일만 보이는 버그 해결 방법

[생활] 짝눈(부동시)로 신체검사 4급(공익) 받은 방법.

[스프링부트] @Mapper import 실패시(빨간줄) 해결 방법