메뉴 건너뛰기

목록
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 1340 1
276 리퀘스트안할려고 다른방법찾은건데 바보 2021.08.30 33 0
275 귀찮게 왜 api2 api4 이런식으로 나눠진거임 3 바보 2021.08.11 33 0
274 삭제된 게시글입니다. 토깽이 2021.08.04 33 0
273 리눅스 shutdown 명령 전 물어보기 2 file 구리스 2021.07.22 33 0
272 인스턴스 삭제하고 새로만들엇음.. 6 file 저능아 2023.01.14 32 0
271 카라츠바 곱셈./.. 3 file 그리드 2023.01.03 32 0
270 방학에는 PS공부도 해야겠는데 5 그리드 2022.12.14 32 0
269 이것저것 쓸만한 사이트 2 5 file 저능아 2022.11.22 32 2
268 HTTP 2.0과 3.0의 차이 2 그리드 2022.11.16 32 0
267 내일도 과제를 끝내야함 1 그리드 2022.10.11 32 0
266 퇴근하고 C# 공부좀 해야겠다 마루쉐 2022.04.05 32 0
265 메인보드 전면패널 커넥터 위치 2 file 바보 2021.08.16 32 0
264 gate.io api 로 주문하기 바보 2021.08.11 32 0
263 그냥 브라우저한개만 헤드리스뺄까 5 토깽이 2021.08.03 32 0
262 함수의 포인터 라고 해야하나 3 그리드 2022.08.31 31 0
261 망했으니 ㄹㅇ 공부한다 그리드 2022.05.08 31 0
260 대충찾은거같음 2 file 바보 2021.08.23 31 0
259 아니이런씨팔 2 토깽이 2021.08.03 31 0
258 C++에서의 구조체와 클래스 사용... 나무터칭수필맨 2023.04.20 30 0
257 삭제된 게시글입니다. midori 2023.03.06 30 0
목록
Board Pagination Prev 1 ... 38 39 40 41 42 43 44 45 46 47 ... 56 Next
/ 56