-
API Design Guidelines 알아보기(swift Naming)Swift 2022. 12. 21. 19:53
👩🏻💻 같이 프로젝트를 진행하는 팀원과 네이밍에 대해서 서로의 스타일이 다른 점을 발견했다.
나는 변수명이 길어지더라도 한눈에 알아보기 좋은 방식이 좋고, 팀원은 알아볼 수 있는 정도의 축약을 원했다.
처음에는 나도 정확히 알지 못하기 때문에 변수명이나 함수명이 너무 길어져서 좋은 방식이 아니라는 생각도 들었는데
https://www.swift.org/documentation/api-design-guidelines/#naming위 사이트를 참고해서 가이드라인을 만들어 봤다.
swift API Design Guidelines에 있는 naming 파트를 확인했을때는
"Clarity is more important than brevity."라고 간결함보다 명확성이 더 중요하다고 나와있다.
위 사이트의 방식을 참고해서 아래의 랜덤 번호 만들어 각각의 변수에 담아 줄 수 있는 함수를 만들어보았다!func makeRandomNumbers() -> [Int] { var randomNumbers = Array<Int>() while randomNumbers.count < 3 { randomNumbers.append(Int.random(in: 1...9)) } return randomNumbers } var computerNumbers = makeRandomNumbers() var userNumbers = makeRandomNumbers()
❓사실 아직 확신을 하기는 어려워서 makeRandNums 라던가 comNums userNums 정도의 변수나 함수를 만들기만 해도
이해 할 수 있긴 한데 makeRandomNumbers 라고까지 표현을 길게 해야하나 싶기도 하다ㅠ 불필요한 단어는 없으니 괜찮겠지?근데 쭉 읽어보니...위의 코드 함수에 이미 랜덤 숫자를 만든다고 numbers라는 숫자를 넣었고 컴퓨터숫자들, 유저의숫자들이라는 변수안에 랜덤숫자를 만들어주는 함수로 숫자를 담아주는데 그냥 아래 computer, user정도로 간단하게 표현하면 어떨까 싶다...! 뭐가 좋은걸까!
다른 코드도 많이 보고 써봐야 더 잘 알 수 있을 것 같다! ㅎㅎvar computer = makeRandomNumbers() var user = makeRandomNumbers()
🥬 최종 작성 이후에 추가적인 부분 메모
위처럼 user, computer처럼 각각의 변수가 가지고 있는 컴퓨터(컴퓨터가 가진 랜덤숫자), 유저(유저가 가진 랜덤숫자)를
생략을 해버리면 어떤 문제가 생길 수 있을까?
하나만 보고 둘은 보지 않고 생각했을 때 저렇게 이름을 지어버리면 나중에는 코드를 쓰는 나조차도 의미하는 바를 알 수 없게 된다!
만약 해당 변수가 더이상 다른 곳에서 사용되지 않고 저 이외에 user나 computer관련 변수를 만들일이 결코 발생하지 않는다면!
저렇게 사용해도 될까? 그냥 저런식의 표현은 지양해야한다.
내가 user와 computer를 가지고 예측할 수 있는건 이건 유저구나 컴퓨터구나 이정도 인 것 같다! 억지로 줄일필요는 없는 것!💡 앞으로 Naming을 하면서 참고해야할 사항들
- 이름이 사용된 코드를 읽는 사람에게 모호성을 피하기 위해 필요한 모든 단어를 포함한다.
- 불필요한 말은 생략 .이름의 모든 단어는 사용 사이트에서 중요한 정보를 전달해야 한다!
의도를 명확히 하거나 의미를 명확히 하기 위해 더 많은 단어가 필요할 수 있지만 이미 가지고 있는 정보와 중복되는 단어는 생략하기. 특히 단순히 유형 정보를 반복하는 단어는 생략하는 게 좋다. - 유형 제약 조건이 아닌 역할에 따라 변수, 매개 변수 및 관련 유형의 이름을 지정한다.
//인사를 담고 있는 변수 var greeting = "안녕하세요" var string = "Hello" (x)
참고 하면 좋을말... ⭐️
잘못된 정보를 수정해주시거나 조언해주시는 부분은 언제든 환영입니다!
'Swift' 카테고리의 다른 글
Dictionary init(uniqueKeysWithValues:) (0) 2023.01.06 Swift 구조체와 클래스 3 저장 속성, 지연 저장 속성, 계산 속성, 타입 속성, 프로퍼티 감시자 (0) 2023.01.04 Swift 구조체와 클래스 2 초기화(Initialization) (0) 2022.12.30 Swift 구조체와 클래스 1(Struct and Class) 사용이유, 공통점, 차이점, 구조체와 클래스 내의 let, var 선언 (0) 2022.12.28 Swift Optional 정의, 옵셔널 추출 방법 (0) 2022.12.22