메뉴 건너뛰기

목록
profile
조회 수 70 댓글 2 예스잼 2 노잼 0

2020-12-04_22-10-13.png

 

대충 basicSummary와 additionalSummary라는 기본설명, 추가설명을 받아서

하나의 설명으로 만드는 부분

basic과 additional을 하나의 payCardSummary로 조합하는 코드가 상당히 마음에 안들고 직관성도 떨어지는걸 볼 수 있음

오늘은 이 부분을 고쳐보자

 

일단 각각의 설명을 받아오는 함수 getPayCardBenefitSummary의 반환값은 String임

basic과 additional에 관한 설명이 없으면 nil로 반환하는 것이 아니라 빈 문자열을 반환하고

아래에서 빈문자열인지 아닌지를 if문으로 체크해서 이렇게 뭔가 맘에 들지 않는 코드가 됨

 

optional을 사용할 수 있는 swift에서

설명이 없다는 표현을 빈 문자열로 하면 나중에 꼭 문제가 되기 때문에(경험상 기획이 바뀌면 꼭 문제가 됨...다음에 시간이 되면 왜 문제가 되는지 예시를 함께 보자)

 

String반환값을 String? 으로 바꿔주고 아래에선

basic과 additional각각에 옵셔널 바인딩을 통해서 좀 더 깔끔하고 직관적인 코드로 바꿔줄 수 있을거 같음

 

그리고 else if 부분도 잘 생각해보면 이렇게 할 필요없이 if else 하나로 줄일 수 있을것 같음

 

2020-12-04_22-13-42.png

 

getPayCardBenefitSummary 반환값을 String? 으로 바꿔주고

additionalSummary와 basicSummary는 옵셔널 바인딩을 통해서 unwraping했음

additional이나 basic둘중에 하나라도 nil값이면 else구문으로 빠지고

 

?? 연산자를 사용해 nil인 값에는 공백을 넣어줘서 

자연스레 payCardSummary에는 올바른 값이 들어갈수있음

 

 

 

 

---------------아래는 읽어도 되고 안 읽어도 되고 여담-------------------

1) kotlin이였다면

 

kotlin은 if 구문이 expression이라서

2020-12-04_22-44-42.png

 

이렇게 payCardSummary에다가 if 문 안에서 return값을 바로 집어 넣을 수 있음

대신 null처리를

additional != null && basic != null

이렇게 귀찮게 해줘야 하는건 아쉬움

대신 if 조건문에서 additional과 basic이 null이 아닌걸 보장해줬기 때문에

타입추론으로 if 문 아래에 basicSummary의 타입은 String으로 들어가게 됨

그래서 basicSummary additionalSummary를 null처리 없이 바로 사용한 모습임

 

else 아래에선

null일 수도 있기 때문에 basicSummary와 additionalSummary가 null일 경우 공백을 넣어주라고

?:연산자를 사용해서 따로 처리한 모습임

 

2) 다시 swift였다면?

추가로 swift에서는 if 문 조건문에서 nil(null)이 아닌 것을 보장해줘도

아래 블럭에선 unwraping이 안되기 때문에

if additionalSummary != nil

이런식으로 조건문에서 대놓고 nil이 아니라고 말해줘도 

아래에서 additionalSummary가 unwraping이 안됐기 때문에 nil처리를 해줘야 함

 

그래서 if let additionalSummary = additionalSummary로 옵셔널바인딩을 통해서

명시적으로 unwraping을 시켜줘야 하는거

 

 

 

 

 

 

 

 

  • profile
    우지챠 2020.12.06 16:29(수정됨)
    .
  • profile
    고라니 2020.12.06 16:55
    내가 만드는 앱에서 쓰는 코드인데
    너무 대충 만들어서 나중에 대규모 수정사항 있을 때 유지보수가 힘들어질까봐
    시간 날 때마다 리팩토링 하고 있음
    안드로이드랑 iOS로 만드니까 kotlin, swift 위주로 짬 날때마다 수용소에 쓰면 좋을것 같아서
    같이 생각해볼만한 수정사항 올리는 중임
    근데 내가 글을 너무 이해 못하게 어렵게 쓴건지 앱 개발자가 없는건지 답이 없음

List of Articles
번호 제목 글쓴이 날짜 조회 수 추천
공지 수용소닷컴 이용약관 file asuka 2020.05.16 1312 1
270 삭제된 게시글입니다. 우지챠 2021.01.16 93 0
269 삭제된 게시글입니다. 우지챠 2021.01.16 108 0
268 삭제된 게시글입니다. 우지챠 2021.01.13 101 0
267 노예질 on 마루쉐 2021.01.12 89 0
266 삭제된 게시글입니다. 4 우지챠 2021.01.12 50 0
265 코딩하기 존나귀찮다 진짜 마루쉐 2021.01.11 82 0
264 삭제된 게시글입니다. 3 우지챠 2021.01.11 48 0
263 C언어 할려고 했거든 3 file 하루각하 2021.01.10 91 0
262 정보) 수용서의 기본소양 1편, 짤검색에 대해서 araboji. 8 file 하루각하 2021.01.06 246 6
261 이런곳도 있었노 2 하루각하 2021.01.06 87 0
260 오늘 한 프로젝트: 그래픽 광량 표현 12 file 우지챠 2021.01.05 245 8
259 Selenium alert_is_present 작동 원리 2 우지챠 2021.01.04 621 1
258 오늘자 리팩터링 9 file 마루쉐 2021.01.03 171 5
257 삭제된 게시글입니다. 우지챠 2021.01.03 66 0
256 오늘 코딩 안 했어! 대신 재밌는 얘기 3 마루쉐 2021.01.02 85 1
255 근황 + 오늘 생각해본 것 1 마루쉐 2020.12.30 64 0
254 삭제된 게시글입니다. 우지챠 2020.12.28 65 0
253 삭제된 게시글입니다. 우지챠 2020.12.19 101 0
252 CNN 딥러닝 후기 MDR 2020.12.17 71 0
251 여기 뭐냐ㄷㄷ ましろ 2020.12.17 87 0
목록
Board Pagination Prev 1 ... 38 39 40 41 42 43 44 45 46 47 ... 56 Next
/ 56