메뉴 건너뛰기

목록
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 1343 1
798 공부하면서 젤 도움많이받은게 2 미니미니자궁맨 2021.09.26 70 0
797 swift enum을 활용한 코드 수정 1 file 마루쉐 2021.03.10 70 3
796 삭제된 게시글입니다. 우지챠 2021.02.24 70 0
» 오늘의 swift 코드 리팩토링 +여담 2 file 고라니 2020.12.04 70 2
794 C++을 배워야 되나 11 file 삼육두유 2022.04.03 69 0
793 포인터 이해할랑 말랑.. 2 그리드 2022.02.21 69 0
792 삭제된 게시글입니다. 우지챠 2021.05.14 69 0
791 동적 정적배열 .. 몰라 1 그라드 2020.11.14 69 0
790 삭제된 게시글입니다. 스마일 2020.09.26 69 0
789 인텔, 타이거레이크 홍보 동영상 유출 shiho 2020.09.01 69 0
788 Cry 'Havoc' and let slip? 1 말폭도 2023.08.22 68 0
787 fidgety 1 말폭도 2023.07.14 68 0
786 아두이노 공부 fnd 2편 1 file 캬루단 2022.05.29 68 0
785 프로그래밍 C 3 그리드 2022.02.20 68 0
784 자바 배우는 내내 getter setter 왜쓰는건가 싶었는데 4 file 히마와리 2022.02.09 68 0
783 웹 개발 제일 잘된 웹서비스가 뭐임? 6 file 毛簿没区 2021.12.31 68 0
782 타입스크립트 2 file 으ㅇ유ㅏ」 2021.11.21 68 0
781 텔레그램 번역봇만드는중임 8 ヽ(°〇°)ノ 2021.11.19 68 0
780 자산 관리 시스템 만들것 2 하야한아이 2021.02.14 68 0
779 과제진행중 (2) 4 그라드 2020.10.18 68 1
목록
Board Pagination Prev 1 ... 12 13 14 15 16 17 18 19 20 21 ... 56 Next
/ 56