메뉴 건너뛰기

목록
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 1339 1
1095 이것저것 쓸만한 사이트 4 file 저능아 2022.10.28 39 2
1094 엄청닌ㆍ기밀정보 알아왔음;;; 17 file 삼육두유 2022.01.11 136 2
1093 (충격) 오라클 Java 안쓰고 '이것' 사용해... 3 file 아메 2021.11.27 66 2
1092 APC UPS도 설치 끝났다 1 file 만년필 2021.08.29 60 2
1091 iOS개발 하지마셈 진심임 3 마루쉐 2021.08.26 105 2
1090 자바스크립트 promise race에 대해 알아보자 4 file 머스크멜론 2021.06.03 62 2
1089 어머..인사해 내 친구야... java 라고...gif file 머스크멜론 2021.03.31 93 2
1088 삭제된 게시글입니다. 1 히마와리 2021.02.21 67 2
» 오늘의 swift 코드 리팩토링 +여담 2 file 고라니 2020.12.04 70 2
1086 이번 년도 개발 목표 1 MDR 2020.12.04 72 2
1085 요새 하는짓 MDR 2020.11.26 62 2
1084 오늘의 코딩 일기 2 고라니 2020.11.18 55 2
1083 C플플 1 K컵마성의우시오 2020.11.04 48 2
1082 해피해킹 프로2 type-s 사용기 8 file 다람쥐 2020.05.24 330 2
1081 ㅈ SQLD 1 말폭도 2024.02.01 53 1
1080 한글 개좆같은옵션끄기 3 file 말랑이 2023.12.06 45 1
1079 정수를 2진수로 변환하여 출력하는 프로그램을 작성해보자 (자바) 1 말에미쳤다 2023.03.17 37 1
1078 오라클 문의메일 회신왔네 3 file 저능아 2023.02.09 49 1
1077 Microsoft Visual Studio 2022를 사용하여 첫 번째 C++ Windows Form 만들기 9 file 저능아 2023.01.15 380 1
1076 매트랩으로 하는 AI 프로젝트 0002 6 file 삼육두유 2022.12.18 54 1
목록
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 56 Next
/ 56