아삭아삭 iOS 개발

[코드리뷰] 2022.07.13 (2) 본문

카테고리 없음

[코드리뷰] 2022.07.13 (2)

바닐라머스크 2022. 7. 14. 02:05

 

SeSAC 멘토님에게 피드백 받은 사항들을 잊지 않기위해 정리합니다!

아래 내용들 외에도 추가 개선할 사항이 있다면 댓글로 알려주세요~ :)

 

1. Bool 값에 따른 조건문의 경우 줄일 수 있음 (방안1 - 삼항연산자, 방안2 - toggle)

2. == true 를 생략할 수 있을 경우 생략가능

3. 배열안에 이미지들이 다수 들어가는 방법은 추천하지 않음


 

 

LED 보드 app

1. Bool 값에 따른 조건문의 경우 줄일 수 있음 (방안1 - 삼항연산자, 방안2 - toggle)

  • 아래 조건문에서 searchView.isHidden 값에 따라 true ↔ false로 바꿔주고자 했다.
    → 심지어 주석에는 toggle로직이라고 적어두고 친숙한 if문으로 코딩하다니 허ㅏ허 다음부턴 비슷한 경우에 toggle잘 기억하고 쓰자~!

2. == true 를 생략할 수 있을 경우 생략가능

  • 이건 조금 창피한 수정사항이긴 했지만, 앞으로는 주의할 내용이다.
    if구문내 조건문란에 searchView.isHidden 자체로 Bool값 판단이 가능하기 때문에 뒤에 '== true'는 생략 가능하다!

<AS-IS>

@IBAction func tapGestureClicked(_ sender: UITapGestureRecognizer) {
    view.endEditing(true)
    
    // view의 숨김여부에 따른 view 표기여부 toggle 로직
    if (searchView.isHidden == true) {
        searchView.isHidden = false
    } else {
        searchView.isHidden = true
    }
}

 

<TO-BE>

// 방안1. 삼항연산자를 사용
        searchView.isHidden ? (searchView.isHidden = false) : (searchView.isHidden = true)

// 방안2. toggle을 사용
        searchView.isHidden.toggle()

 

(전체코드 보러가기 : https://github.com/minhye9731/LEDBoard)

 


감정 다이어리 app

3. 배열안에 이미지들이 다수 들어가는 방법은 추천하지 않음

  • 감정다이어리에서 클릭할 감정들 정보(이미지, 감정문구)를 배열(emotionDataArray)에 한번에 담아두고서 필요한 경우에 꺼내서 쓰고 싶었다.
    → 배열에 이미지가 다수 들어가는 것은 무거울 수 있으므로 이번 과제에서 주어진 Asset 활용시에는 차라리
    1) 데이터배열에 감정문구들만 String 타입으로 배열로 담고
    2) 이미지들 이름이 다 'sesac_slime1.png', 'sesac_slime2.png, 'sesac_slime3.png''이런 양식인 점 참고해서 수정해보는 것 추천하신다고 했다.

<AS-IS>

var emotionDataArray: [Emotion] = [
        Emotion(emotionalSlime: UIImage(named: "sesac_slime1.png")!, emotions: "행복해"),
        Emotion(emotionalSlime: UIImage(named: "sesac_slime2.png")!, emotions: "사랑해"),
        Emotion(emotionalSlime: UIImage(named: "sesac_slime3.png")!, emotions: "좋아해"),
        Emotion(emotionalSlime: UIImage(named: "sesac_slime4.png")!, emotions: "분노해"),
        Emotion(emotionalSlime: UIImage(named: "sesac_slime5.png")!, emotions: "심심해"),
        Emotion(emotionalSlime: UIImage(named: "sesac_slime6.png")!, emotions: "지루해"),
        Emotion(emotionalSlime: UIImage(named: "sesac_slime7.png")!, emotions: "당황해"),
        Emotion(emotionalSlime: UIImage(named: "sesac_slime8.png")!, emotions: "서운해"),
        Emotion(emotionalSlime: UIImage(named: "sesac_slime9.png")!, emotions: "슬퍼해")
    ]

// 생략

override func viewDidLoad() {
        super.viewDidLoad()
        for i in 0...8 {
            slimeImages[i].setImage(emotionDataArray[i].emotionalSlime, for: .normal)
            emotionLabels[i].text = #"\#(emotionDataArray[i].emotions) "0""#
        }
    }

 

<TO-BE>

// 우선 별도 생성했던 아래 데이터 구조 삭제
struct Emotion {
    var emotionalSlime: UIImage
    let emotions: String
}

// 이미지가 들어갔던 데이터 배열에서 이미지는 삭제하고 텍스트만 남김
var emotionDataArray: [String] = ["행복해", "사랑해", "좋아해", "분노해", "심심해", "지루해", "당황해", "서운해", "슬퍼해"]

// for문의 바구니객체 표현식 수정
// 감정텍스트 끌어오는 문자보간법 수정
// 감정이미지는 이미지명의 숫자를 활용하여 적용
override func viewDidLoad() {
    super.viewDidLoad()
    for i in 0...(emotionArray.count - 1) {
        let image = UIImage(named: "sesac_slime\(i + 1).png")
        slimeImages[i].setImage(image!, for: .normal
        emotionLabels[i].text = #"\#(emotionDataArray[i]) "0""#
    }
}

 

(전체코드 보러가기 : https://github.com/minhye9731/EmotionalDiaryProject)