- Reference
- https://80000coding.oopy.io/f9e091ef-a2bd-4500-8e47-6e394cb66bab
(Swift) 확장성 있는 코드 만들기 연습 + 각 코드의 역할에 대해 생각하기
코드리뷰 멘토링을 받으면서, 내 코드에 아직 하드코딩으로 처리되어 있는 부분이 많다는 것을 느꼈다. 이번 기회에 오늘 피드백 받은 내용을 리팩토링 하면서 확장성있는 코드를 만드는 연습
80000coding.oopy.io
- https://tecoble.techcourse.co.kr/post/2020-05-07-avoid-hard-coding/
하드코딩을 피해라.
…
tecoble.techcourse.co.kr
# 랜덤 수를 생성하는 메서드를 구현하였는데 while문 조건에 [3] 숫자와 그 바로아래 줄 [1...9]이 하드코딩이 발생하였다고 하여 해결하는 방법에대해서 알아보았다.
[Before]
func generateRandomNumbers() -> Set<Int> {
var randomNumbers: Set<Int> = []
while randomNumbers.count < 3 {
randomNumbers.insert(Int.random(in: 1...9))
}
return randomNumbers
}
[After]
func generateRandomNumbers(range: ClosedRange<Int> = 1...9, three: Int = 3) -> Set<Int> {
var randomNumbers: Set<Int> = []
while randomNumbers.count < three {
randomNumbers.insert(Int.random(in: range))
}
return randomNumbers
}
확장성을 고려했을다면 three 대신 number나 count? 정도도 고민해볼 수 있을것같지만 저기능을 3이라는 기본값을 주어서 사용할 것ㄱ이기때문에 명확성을 주어 three로 지었다.
그러면 하드코딩이란 무엇이며 하드코딩을 왜 지양해야할까 ???
# 하드코딩이란?
프로그램의 소스 코드에서 데이터를 직접 입력해서 저장하는 것
# 하드코딩의 문제점이 무엇일까 ?
1. 의미를 파악하기가 어려워 가독성이 떨어진다.
위에 코드로 예시를 들면 [Before]while문 조건에 3이라는 숫자만 봐서는 어떤의미인지를 파악하기가 어렵다는 것이다.
2. 유지 보수하기 어렵다.
작은 함수단위로는 이해하기 부족한 내용이지만 그럼에도 설명을 해보자면 [Before]예제에서 3이라는 독립적인 숫자를 넣어놓았는데 이 숫자는 재사용성이 많이 떨어진다. 만약에 3개라는 기준에서 10개로 바뀌고 그 변경된 수와 연관되있는 함수가 100개는 있따고 가정해보자. 그렇게되면 일일이 100개를 다 수정해줄 것은 아니지않나?
고로 Type 변수 또는 Enum등을 이용하여 연관된 값들을 따로 관리하는 방법등이 있을 수 있어 참고하자.
'야곰커리어캠프_TIL' 카테고리의 다른 글
20200213 / D8 / 함수명 지을때 명사로..? (0) | 2022.02.15 |
---|---|
20200211 / D5 / 인스턴스 끼리 값할당 시 주의사항(feat. 옵셔널체이닝) (0) | 2022.02.11 |
20220210 / D4 / 컴퓨터의 구조(Feat. Cs공부방법..?) (0) | 2022.02.11 |
2022.02.08 / D2 / Set에 사용되는 메서드들 (0) | 2022.02.09 |
2022.02.07 / D1 / Mutating에대해서 (0) | 2022.02.09 |