Archive/패캠(초격차) 16

part4 (ch1). MyAssets 코드리뷰(feat. SwiftUI)

MyAssets 코드리뷰(feat. SwiftUI) ✅ 공부를 했으니 코드 리뷰도 진행해보자. SwiftUI를 보면서 든 생각인데, Obj-c가 swift로 넘어왔고, 언젠가는 SwiftUI로 전부 다 넘어가지 않을까 싶다. 우선 첫번째로, 선언형 프로그래밍 방식이 UI구성이 엄청나게 간단하고, 개발 속도가 엄청나게 빨라질 것 같다는 생각이 들었다. SwiftUI를 Tutorial로 더 공부하고나서 코드 리뷰를 더 자세히 해보자~! ✅ 폴더의 구조 ✅ ContentView.swift // // ContentView.swift // MyAssets // // Created by Hamlit Jason on 2022/02/22. // import SwiftUI struct ContentView: View {..

part5 (ch1). FindCVS UnitTest 코드리뷰 (feat. Stubber)

FindCVS UnitTest 코드리뷰 ✅ 개발을 완료했으면 코드리뷰를 하는건 당연. 테스트를 하면서 처음으로 XCTest와 관련한 외부 라이브러리를 사용해봐서 더욱 집중해서 보게 되었음. 그리고 개발자마다 다른 스타일을 갖고 있던데, 보면서 어떤 점이 더 나은지 스스로 계속 생각하게 되는 시간이라 좋았다. UI테스트는 진행하지 않았음. ✅ 테스트코드 파일 구조 🟠 LocationInformationModelTest.swift // // LocationInformationModelTest.swift // FindCVSTests // // Created by Hamlit Jason on 2022/02/18. // import XCTest import Nimble @testable import FindCVS..

part5 (ch1). FindCVS 코드리뷰

FindCVS 코드리뷰 코드리뷰 ㄱㄱ ✅ 파일의 구조도 🟠 LocalAPI.swift // // LocalAPI.swift // FindCVS // // Created by Hamlit Jason on 2022/02/19. // import Foundation struct LocalAPI { static let scheme = "https" static let host = "dapi.kakao.com" static let path = "/v2/local/search/category.json" func getLocation(by mapPoint: MTMapPoint) -> URLComponents { var components = URLComponents() components.scheme = LocalA..

part5 (ch6). KeywordNews XCTest 코드리뷰

✅ 코드 리뷰는 언제나 포스팅과 함께한다. 이 부분은 다른 누군가가 볼 것 같지는 않고 나 혼자 쓰는 말이라서 더 편한데 곧 네이버 블로그에 일상이나 담아봐야겠다. 그래서 이런거 왜쓰냐면 내가 깃허브에 파일 따로 올려 정리하는게 나한테는 좋은 학습으로 다가오지 않아서, 블로그에 글을 올리면서 다시 보는게 더욱 좋더라 ✅ 파일의 구조 ✅ 만났던 문제 하나. 2022.02.15 - [project30-비공개] - [iOS] 🧑🏻‍💻 Xcode 기존 프로젝트에 XCTest 작성 파일 추가하기! [iOS] 🧑🏻‍💻 Xcode 기존 프로젝트에 XCTest 작성 파일 추가하기! ✅ 에러에 대해서 알아보자. 🟠 Library not loaded: @rpath/XCTest.framework/XCTest Xcode 파일..

part5 (ch6). KeywordNews 코드리뷰

✅ 코드 리뷰를 해보자. 그냥 다른 사람 좋은 코드를 보는 것만으로도 실력 많이 느는거 같아 ㅎㅅㅎ 나중에 MVVM과 Rx로 바꾸는 방법도 고민해보자. ✅ String+ // // String+.swift // KeywordNews // // Created by Hamlit Jason on 2022/02/08. // import Foundation extension String { // html을 string으로 변환해주는 코드 var htmlToString: String { guard let data = self.data(using: .utf8) else { return "" } do { return try NSAttributedString( data: data, options: [ .documentT..

part5 (ch6). 🪛 CI/CD란? (feat. bitrise)

✅ 이번 시간에는 CI/CD에 대해서 알아봅시다. CI : 지속적 통합, 빌드, 테스트 CD: 지속적 배포 ✅ 그림으로 한번 보자..! 개발자들이 공동 작업을 하는데 깃허브로 푸시하자. CI/CD(로봇 부분)에서 개발자가 미리 해둔 설정에 따라 빌드 or 테스트가 자동으로 실행된다. 만약 실행된 빌드 or 테스트 결과에 따른 동작을 실행시킴 그림을 보면 문제가 없다면 앱 커넥트에 올려서 배포 만약 실패한다면 메일이나 슬랙으로 어디가 문제가 있는지 알려준다. CI는 개발자들의 코드를 지속적으로 통합하고 빌드하고 테스트하고 CD는 지속적으로 배포하게 된다. 그렇다면 CI/CD는 어디서 설정할까? 바로 Jenkins, Bitrise, CircleCI 등이 존재한다. 🟠 깃허브(버전관리 툴) 를 통해 Xcode..

part5 (ch6). MovieReview XCTest 코드리뷰

✅ 이번 시간에는 테스트코드 리뷰 고고 🟠 UITest코드인데 BDD를 기반으로 작성한 코드도 있어 // // MovieReviewUITests.swift // MovieReviewUITests // // Created by Hamlit Jason on 2022/01/17. // import XCTest // UITest의 경우에는 현업에서는 네트워크에 연결되어있어야 앱이 구동되는점, 또한, 여러번 클릭해서 그 지점으로 가서 사용해야하는 단점으로 인해 Unit테스트만 주로 사용한다. class MovieReviewUITests: XCTestCase { var app: XCUIApplication! override func setUp() { super.setUp() continueAfterFailure =..

part5 (ch6). BDD의 개념에 대해서 알아보기

✅ 이번 시간에는 BDD에 대해서 알아보자. 시나리오 기반이란? 주열님께서는 Given , When, Verify라고 하셨는데, 이 방법이었구나! 네트워크 통신을 가정하면 Given : 네트워크 통신이 실패하는 상태에서 When : 유저가 새로고침 버튼을 탭했을 때 Then : 유저에게 에러 메시지를 보며준다. 혹은 Given : 네트워크 통신이 실패하는 상태에서 When : 유저가 새로고침 버튼을 탭하지 않으면 Then : 유저에게 에러 메시지를 보여주면 안된다.

part5 (ch6) UI Test

✅ 이번 시간에는 UI Test에 대해서 알아볼 예정이야. 유닛 테스트와 UI 테스트의 차이 유닛 테스트는 클래스에 대해서 진행하고, UI 테스트는 앱 자체를 런치 시켜서 사용한다. XCUIApplication을 문서에서 살펴보면 하나의 클래스이다! 녹화버튼을 이용해 코드를 작성할 수도 있다. 다만, 네트워크가 있어야 하거나, 여러번의 탭을 통해 이동한 화면 등 어려움이 존재하여, Unit Test를 더 활용한다. 또한 녹화 버튼을 통하면 어떻게 쿼리를 작성해야하는지 쉽게 파악할 수 있으니 참고하자. 🟠 아래는 예시코드 // // MovieReviewUITests.swift // MovieReviewUITests // // Created by Hamlit Jason on 2022/01/17. // imp..

part5 (ch6). MovieReview 코드리뷰

✅MovieReview 코드리뷰 고고 MVP방식으로 작성되었고 쉽진 않았지만 그래도 두번째라 그런지 잘 이해할 수 있었음. 다만 강의의 코드에서 약간의 문제점이 발생하였는데, 컬렉션 뷰에서 didSelect를 통해서 Detail로 이동시 rightBarButton이 그대로 노출되어 있어서 중복 구독이 가능해진다는 점이었는데, 생각해보니까 강의에서 remove를 불완전하게 구현하신 듯 하다. ✅폴더 구조 우선 폴더 구조가 이렇게 되어 있어서 이에 맞게끔 코드 리뷰를 진행해볼 예정 ✅Scene - MovieList 🟠 MovieListViewController.swift // // ViewController.swift // MovieReview // // Created by Hamlit Jason on 20..