[인터뷰질문 024] 컴파일러 조건인 canImport()은 어떤 역할을 하나요?

이미지
활용방법 #if문 의 state문 중 하나입니다. canImport() 안에 는 모듈이름이 들어가고, import 할 수 있으면 true를 반환합니다. 특정 코드에서 사용하는 모듈들이 조금씩 다를 때 분기를 해줍니다. 예를 들면 iOS에서는 UIKit을 사용하고, macoS에서는 AppKit을 사용한다면 분기를 해주어야겠죠? 사용에제는 아래와 같습니다. # if canImport(UIKit) import UIKit # endif # if canImport(AppKit) import AppKit # endif

iOS 개발할 때 영어로 변수 이름 잘 짓는 방법

이미지
개발을 하면서 개발자가 가장 많은 시간을 쓰는게 변수 명을 짓는 것 이라는 이야기가 있습니다. 이게 그냥 우스갯소리로 나온 것이 아니라, 제 개인적인 경험만 돌아봐도 개발시간의 많은 부분을 변수를 짓고 변수를 어떻게 지어야 하나 고민했습니다. 그 이유는 변수 명에 따라 그 이후의 개발 속도가 달라지기 때문입니다. 그래서 지금 짓는 변수에 많은 고민을 하고 시간을 소요하게 되었습니다. 글로는 알기 어려우니 예를 들어서 코드로 설명해 보겠습니다. 불명확한 이름이 가져오는 참사 틀리지는 않았지만 불명확한 이름이 가져오는 참사는 다음과 같습니다. let numbers = [ 1 , 2 , 3 , 4 , 7 ] let number = getSomeNumber( with : numbers) 함수의 이름이 getSomeNumber 이라서 어떤 숫자가 반환될지 알기가 어렵습니다. 그래서 우리는 이 함수가 어떻게 생겼는지 알아보러 가야합니다. let numbers = [ 1 , 2 , 3 , 4 , 7 ] let number = getSomeNumber(with: numbers) func getSomeNumber (with numbers: [Int]) -> Int ? { // ..... some code return numbers.first } 이렇게 보았을 때, 함수가 어떻게 동작하는지 내가 분석을 하고 반환값을 보고 나서야 변수 이름을 지을 수 있습니다. let numbers = [ 1 , 2 , 3 , 4 , 7 ] let firstNumber = getSomeNumber(with: numbers) func getSomeNumber (with numbers: [Int]) -> Int ? { // ..... some code return numbers.first } 영어 문법에 맞는 이름 변수 이름을 영어로 짓기 때문에, 문법에 맞지 않는 이름은 의미가 불명확하게 전달 될 수 있습니다. 그렇기 때문

[인터뷰질문 023] assert() 함수는 무엇을 하나요?

이미지
관련주제 : Swift 난이도 : 하 디버깅 디버깅 모드에서 내 코드가 정상동작하는지 확인하기 위한 함수 입니다. 예를 들면, average = total / count 가 있을 때 count 가 0이 될 수 있다면 문제가 발생합니다. 그 상황을 디버깅 하기 위해서 물론 출력을 해도 됩니다. if count == 0 { print("0이 되었습니다") } 하지만 너무나 불편하기 때문에, assert(count != 0, "0이 되었습니다") 로 좀 더 의도를 명확히 할 수 있습니다. assert 함수를 어떻게 쓸 수 있는지는 공식 문서 를 참고하는 편이 명확합니다. 간단히 설명드리면 assert(조건, "조건문이 false 일 때 출력할 메시지") 입니다.

[인터뷰질문 022] #if 문은 언제 사용되나요?

이미지
관련주제 : Swift 난이도 : 하 코딩을 하다가 보면 자주 보던 코드인데 언제 쓰는지 정리해 보도록 하겠습니다. #if 는 컴파일 이전에 처리되는 전처리문 입니다. 즉 컴파일되기 전에 참, 거짓을 판별해서 거짓으면 컴파일이 되지 않는다는 뜻이죠. Compiler Control Statements 주로 보던 코드는 #if DEBUG , #if os 와 같은 코드였습니다. 한 번도 찾아본적이 없어서 #if 다음에는 어떤 문구가 들어갈 수 있는지 찾아보았습니다. 링크 Swift 버전이 다른 문법을 하나의 파일에서 처리하거나, 운영체제 버전이 다른 분기를 만들어 사용할 때 주로 사용합니다. 참고 : https://docs.swift.org/swift-book/ReferenceManual/Statements.html#grammar_conditional-compilation-block

[인터뷰질문 021] 컴파일러용 #error 지시문은 어떤 용도인가요?

이미지
관련주제 : Swift 난이도 : 하 개발을 하다가보면, 먼저 구조만 잡아두고 나중에 구현을 해야하는 경우가 종종 있습니다. 이 때 저는 주로 //TODO: 혹은 //FIXME: 를 적어놓습니다. 그러면 Xcode에서 도큐먼트 메뉴에서 시각적으로 확인 할 수 있습니다. 자주사용하던 기능이었는데, 불편한 점이 하나 있어습니다. TODO:는 문자열 찾기로 찾아갈 수는 있는데, 구현을 까먹었을 때 이를 확일할 만한 방법이 없었습니다. 왜냐하면 컴파일에 영향을 주지 않기 때문이죠. 나 자신의 실수를 막기 위해서 사용하는 안전장치가 필요했습니다. MustTODO와 같은 기능이죠. 그래서 그 뒤로는 꼭 다시 돌아와야 하는 경우에는 컴파일러용 지시문을 사용합니다. 컴파일러용 지시문 #warning("message") 와 #error("message") 를 사용합니다. 그러면 컴파일을 했을경우 경고문이나, 에러문구가 Xcode의 왼쪽 네비게이터 중 에러 쪽에서 메시지가 출력됩니다. 아 이 부분을 꼭 구현했어야 했지 처럼 컴파일에 경고를 띄워주거나, 에러를 일부러 발생시킬 필요가 있을 때 사용하면 됩니다.

개발을 시작할 때 git을 꼭 같이 시작했으면 하는 이유

이미지
개발을 시작하면 반드시 접하게되는 단어들이 있습니다. 그 중 하나는 git 입니다. 그렇다면 git을 왜 써야하고, 어느정도까지 써야하는 걸까요? 그에 대한 생각을 간단히 적어보겠습니다. git은 왜 써야 할까요? git은 크게 2가지의 이유로 사용한다고 생각합니다. 버젼관리 협업도구 그래서 우리는 우리의 코드가 잘 못 되었거나 과거의 코드로 되돌릴 때, git을 씁니다. 예를 들면, 내가 작성했던 코드가 문제가 생겼을 때 과거로 돌아갈 수 있다면 얼마나 좋을까요? 하나하나 되돌리기를 하는 것이 아니라 특정의 시점으로 돌아갈 수 있다면 나의 실수를 만회하기에 좋겠죠? 여러분의 실수를 되돌리기 위해 git의 사용방법을 익혀두세요! 다른 개발자와 협업을 해야할 때 협업의 도구로서 git을 사용합니다. 개발을 혼자하는 개발자도 있지만 많은 개발자들이 하나의 프로덕트를 만들기 위해 협업을 하고 있습니다. 서로 일할 범위를 나누고 따로 작업한 다음에 하나로 합친다면, 일을 효율적으로 할 수 있고, 결과물도 더 빠르게 만들 수 있겠죠? 생산성을 높이기 위해 git을 사용하세요! git 어느정도까지 써야하는 걸까요? 왜 써야하는지 알았으니 그러면 얼마나 써야하는지 이야기 해봅시다. 먼저 버전관리를 하기 위해서라면, commit을 꼼꼼히 하고 해당 커밋 때로 돌아가는 방법을 알면 좋을 것 입니다. 아니면 다른 사람이 작업한 내용 중 일부 혹은 내가 과거에 작업한 내용을 살리기 위한 cherry-pick 등과 같은 기능들을 알면 유용하겠죠? 다른 사람들과 협업을 하려면, git-flow는 이헤하고 사용해야 합니다. 나 혼자 git에 commit, push, pull을 한다고 git을 사용할 줄 안다고 생각한다면, 실제 협업을 하면서 많은 어려움이 있을 것 입니다. 어느 브랜치에서 개발을 해야하고, 어느 브랜치로 merge를 해줘야 하는지 알고 있어야 합니다. 더 나은 개발을 위해서 개발자로 시작하면서 git을 왜 해야하는지, 얼마나 해야하는지는 잘 공감

Leeo Con

이미지
  Welcome to the LeeoCon. world! Just click for Drag & Drop the LeeoCon You can use several LeeoCons