부스트코스 프로젝트D MyAlbum 리뷰
리뷰내용
변수명 수정
UI 컴포넌트의 경우에는 타입을 같이 적어주는 경우도 있다. (passwordLabel)
데이터를 표현하는 변수명의 경우는 array를 붙이는 것보다 assetCollectionArray로 적어준 것을 assetCollections 와 같이 복수형으로 네이밍하는 경우가 더 많다.
guard 활용
// PHFetchResult<PHAssetCollection> 을 배열에 넣는 중에
if fetchResult.count == 0 {
return
}
// 앨범에 사진이 하나도 없을 경우에 빠져나오도록 만들어줬었다.
// 하지만 이렇게 Early Exit 하는 경우에는 보통 guard 문을 많이 사용한다고 알려주셨다.
// 가독성에 도움이 더 많이 되는 측면이 있다고 하셨다.
guard fetchResult.count != 0 else {
return
}
Bool 타입 권장 네이밍 컨벤션
단정문으로 네이밍하는 것이다. (isHidden, shouldEnter, canDelete 등)
var chooseModeBool: Bool = false
// ->
var canChoose: Bool = false
네이밍 수정
var isSelectedArray = [Int]()
// ->
// Index 복수형 = Indices
var selectedIndices = [Int]()
선태,취소 버튼 switch 분기 수정
switch chooseBarButton.title {
case "선택":
case "취소":
}
// ->
// title로 정하는 것보다 위에서 canChoose 를 활용하는 것이 좋다.
// title 같은 변수는 앱 사용하는 사용자에 따라 외국어가 될수도 있고 String 타입이다보니 상태를 나타내는 변수로 쓰기에는 버그에 취약할 수 있다.
switch canChoose {
case true:
case false:
}
argument label 드러내기
func makeFetchOptions(_ status: Bool) -> PHFetchOptions {
let fetchOptions = PHFetchOptions()
fetchOptions.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: status)]
return fetchOptions
}
// ->
func makeFetchOptions(ascending status: Bool) -> PHFetchOptions {
let fetchOptions = PHFetchOptions()
fetchOptions.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: status)]
return fetchOptions
}
self.fetchResult = PHAsset.fetchAssets(in: assetCollection, options: makeFetchOptions(true))
// ->
// 아래에서 makeFetchOptions를 사용하는데 ascending을 그대로 활용해서 true, false가 어떤 의미인지 표현하는 것이 더 좋을 것 같다.
self.fetchResult = PHAsset.fetchAssets(in: assetCollection, options: makeFetchOptions(ascending: true))
하나의 함수는 한 가지의 역할
collectionView 업데이트
self.collectionView.reloadSections(IndexSet(0...)) 로 모두 업데이트하는 것보다 변화된 부분만 추적해서 업데이트하는 것이 좋다.
https://developer.apple.com/documentation/photokit/phphotolibrarychangeobserver
해당 링크를 참고해서 작성했을 때는 정상적으로 동작했다.
네이밍 수정
var favoriteCheck: Bool = false
// ->
var isFavorite: Bool = false
iCloud 업로드 사진
// image request 코드에 추가해줘야 iCloud에도 적절하게 잘 보안다.
let options = PHImageRequestOptions()
options.isNetworkAccessAllowed = true
Author And Source
이 문제에 관하여(부스트코스 프로젝트D MyAlbum 리뷰), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@hhhan0315/부스트코스-프로젝트D-MyAlbum-리뷰저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)