부스트코스 프로젝트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

좋은 웹페이지 즐겨찾기