처음에는 스택, 힙, 리스트 같은 그런 자료구조를 말하는줄 알았지만, 클린 코드에서 말하는 자료구조는 다른 개념입니다.
자료구조
자료구조는 가지고 있는 변수를 그대로 노출시킵니다. 이를테면
struct Animal {
var kind: String
var age: Int
}
이런 구조가 자료구조가 될 수 있겠네요.
또 이런경우도 자료구조라 할 수 있습니다.
class Animal {
private var kind: String
private var age: Int
init(kind: String, age: Int) {
self.kind = kind
self.age = age
}
func getKind()->String{
return kind
}
func getAge()->Int{
return age
}
}
kind, age가 private로 숨겨져 있지만, 외부에서 getters 혹은 setters로 내부 구조에 접근 할 수 있습니다. 이렇게 자료구조는 내부 구조를 외부에서 접근하거나 알수 있는것을 의미합니다.
객체
클린 코드에서의 객체란 내부 구조를 숨긴채, 동작을 공개하는것을 의미합니다. swift에서는 protocol로 이를 구현 할 수 있습니다.
protocol Barkable {
func bark()
}
class Cat: Barkable {
let catBarkSound = "야옹"
func bark() {
print(catBarkSound)
}
}
class Dog: Barkable {
let dogBarkSound = "멍멍"
func bark() {
print(dogBarkSound)
}
}
class AnimalBarkSpeaker {
var animal: Barkable
init(animal : Barkable) {
self.animal = animal
}
func play(){
animal.bark()
}
}
이런식으로 내부 자료를 숨긴채로 추상화된 동작만을 제공하는것을 객체라고 합니다.
'클린 코드' 카테고리의 다른 글
한가지 작업이란? (0) | 2022.09.01 |
---|---|
의미있는 이름 정하기 (0) | 2022.08.30 |