-
Notifications
You must be signed in to change notification settings - Fork 2
coding convention
- ν¨μμμ νλΌλ―Έν°μ μΈλλ°
_
μ§μνκΈ° - νλΌλ―Έν°λ λ°°μ΄μμ ,λ€μ νμ κ°νλ¬Έμ μ¬μ©νκΈ°
- λͺ¨λ ν¨μλ extension μ λ°λ‘ λμ΄ μ²λ¦¬νκ³ κ° κΈ°λ₯ λ³ ν¨μλ§λ€ MARK μ¬μ©νκΈ°
StyleShare ꡬμ±μλ€μ΄ Swift μ½λλ₯Ό μ΄ν΄νκΈ° μ½κ³ λͺ ννκ² μμ±νκΈ° μν μ€νμΌ κ°μ΄λμ λλ€. ꡬμ±μλ€μ μμ¬κ²°μ μ λ°λΌ μμλ‘ λ³κ²½λ μ μμ΅λλ€.
λ³Έ λ¬Έμμ λμμμ§ μμ κ·μΉμ μλ λ¬Έμλ₯Ό λ°λ¦ λλ€.
-
λ€μ¬μ°κΈ°μλ ν(tab) λμ 2κ°μ spaceλ₯Ό μ¬μ©ν©λλ€.
-
μ½λ‘ (
:
)μ μΈ λμλ μ½λ‘ μ μ€λ₯Έμͺ½μλ§ κ³΅λ°±μ λ‘λλ€.let names: [String: String]?
-
μ°μ°μ μ€λ²λ‘λ© ν¨μ μ μμμλ μ°μ°μμ κ΄νΈ μ¬μ΄μ ν μΉΈ λμ΄μλλ€.
func ** (lhs: Int, rhs: Int)
-
λΉ μ€μλ κ³΅λ°±μ΄ ν¬ν¨λμ§ μλλ‘ ν©λλ€.
-
λͺ¨λ νμΌμ λΉ μ€λ‘ λλλλ‘ ν©λλ€.
-
MARK ꡬ문 μμ μλμλ κ³΅λ°±μ΄ νμν©λλ€.
// MARK: Layout override func layoutSubviews() { // doSomething() } // MARK: Actions override func menuButtonDidTap() { // doSomething() }
λͺ¨λ μν¬νΈλ μνλ²³ μμΌλ‘ μ λ ¬ν©λλ€. λ΄μ₯ νλ μμν¬λ₯Ό λ¨Όμ μν¬νΈνκ³ , λΉ μ€λ‘ ꡬλΆνμ¬ μλνν° νλ μμν¬λ₯Ό μν¬νΈν©λλ€.
import UIKit
import SwiftyColor
import SwiftyImage
import Then
import URLNavigator
- ν΄λμ€ μ΄λ¦μλ UpperCamelCaseλ₯Ό μ¬μ©ν©λλ€.
- ν΄λμ€ μ΄λ¦μλ μ λμ¬Prefixλ₯Ό λΆμ΄μ§ μμ΅λλ€.
-
ν¨μ μ΄λ¦μλ lowerCamelCaseλ₯Ό μ¬μ©ν©λλ€.
-
ν¨μ μ΄λ¦ μμλ λλλ‘μ΄λ©΄
get
μ λΆμ΄μ§ μμ΅λλ€.μ’μ μ:
func name(for user: User) -> String?
λμ μ:
func getName(for user: User) -> String?
-
Action ν¨μμ λ€μ΄λ°μ 'μ£Όμ΄ + λμ¬ + λͺ©μ μ΄' ννλ₯Ό μ¬μ©ν©λλ€.
- *Tap(λλ λ€ λ)*μ
UIControlEvents
μ.touchUpInside
μ λμνκ³ , *Press(λλ¦)*λ.touchDown
μ λμν©λλ€. - will~μ νΉμ νμκ° μΌμ΄λκΈ° μ§μ μ΄κ³ , did~λ νΉμ νμκ° μΌμ΄λ μ§νμ λλ€.
-
should~λ μΌλ°μ μΌλ‘
Bool
μ λ°ννλ ν¨μμ μ¬μ©λ©λλ€.
μ’μ μ:
func backButtonDidTap() { // ... }
λμ μ:
func back() { // ... } func pressBack() { // ... }
- *Tap(λλ λ€ λ)*μ
- λ³μ μ΄λ¦μλ lowerCamelCaseλ₯Ό μ¬μ©ν©λλ€.
-
μμ μ΄λ¦μλ lowerCamelCaseλ₯Ό μ¬μ©ν©λλ€.
μ’μ μ:
let maximumNumberOfLines = 3
λμ μ:
let kMaximumNumberOfLines = 3 let MAX_LINES = 3
-
enumμ κ° caseμλ lowerCamelCaseλ₯Ό μ¬μ©ν©λλ€.
μ’μ μ:
enum Result { case .success case .failure }
λμ μ:
enum Result { case .Success case .Failure }
-
μ½μ΄λ‘ μμνλ κ²½μ° μλ¬Έμλ‘ νκΈ°νκ³ , κ·Έ μΈμ κ²½μ°μλ νμ λλ¬Έμλ‘ νκΈ°ν©λλ€.
μ’μ μ:
let userID: Int? let html: String? let websiteURL: URL? let urlString: String?
λμ μ:
let userId: Int? let HTML: String? let websiteUrl: NSURL? let URLString: String?
-
ν΄λμ€μ ꡬ쑰체 λ΄λΆμμλ
self
λ₯Ό λͺ μμ μΌλ‘ μ¬μ©ν©λλ€. -
ꡬ쑰체λ₯Ό μμ±ν λμλ Swift ꡬ쑰체 μμ±μλ₯Ό μ¬μ©ν©λλ€.
μ’μ μ:
let frame = CGRect(x: 0, y: 0, width: 100, height: 100)
λμ μ:
let frame = CGRectMake(0, 0, 100, 100)
-
Array<T>
μDictionary<T: U>
보λ€λ[T]
,[T: U]
λ₯Ό μ¬μ©ν©λλ€.μ’μ μ:
var messages: [String]? var names: [Int: String]?
λμ μ:
var messages: Array<String>? var names: Dictionary<Int, String>?
-
///
λ₯Ό μ¬μ©ν΄μ λ¬Έμνμ μ¬μ©λλ μ£Όμμ λ¨κΉλλ€./// μ¬μ©μ νλ‘νμ κ·Έλ €μ£Όλ λ·° class ProfileView: UIView { /// μ¬μ©μ λλ€μμ κ·Έλ €μ£Όλ λΌλ²¨ var nameLabel: UILabel! }
-
// MARK:
λ₯Ό μ¬μ©ν΄μ μ°κ΄λ μ½λλ₯Ό ꡬλΆμ§μ΅λλ€.Objective-Cμμ μ 곡νλ
#pragma mark
μ κ°μ κΈ°λ₯μΌλ‘, μ°κ΄λ μ½λμ κ·Έλ μ§ μμ μ½λλ₯Ό ꡬλΆν λ μ¬μ©ν©λλ€.// MARK: Init override init(frame: CGRect) { // doSomething() } deinit { // doSomething() } // MARK: Layout override func layoutSubviews() { // doSomething() } // MARK: Actions override func menuButtonDidTap() { // doSomething() }
-
μμλ₯Ό μ μν λμλ
enum
λ₯Ό λ§λ€μ΄ λΉμ·ν μμλΌλ¦¬ λͺ¨μλ‘λλ€. μ¬μ¬μ©μ±κ³Ό μ μ§λ³΄μ μΈ‘λ©΄μμ ν° ν₯μμ κ°μ Έμ΅λλ€.struct
λμenum
μ μ¬μ©νλ μ΄μ λ, μμ±μκ° μ 곡λμ§ μλ μλ£νμ μ¬μ©νκΈ° μν΄μμ λλ€. CGFloatLiteralκ³Ό SwiftyColorλ₯Ό μ¬μ©ν΄μ μ½λλ₯Ό λ¨μνμν΅λλ€.final class ProfileViewController: UIViewController { private enum Metric { static let profileImageViewLeft = 10.f static let profileImageViewRight = 10.f static let nameLabelTopBottom = 8.f static let bioLabelTop = 6.f } private enum Font { static let nameLabel = UIFont.boldSystemFont(ofSize: 14) static let bioLabel = UIFont.boldSystemFont(ofSize: 12) } private enum Color { static let nameLabelText = 0x000000.color static let bioLabelText = 0x333333.color ~ 70% } }
μ΄λ κ² μ μΈλ μμλ€μ λ€μκ³Ό κ°μ΄ μ¬μ©λ μ μμ΅λλ€.
self.profileImageView.frame.origin.x = Metric.profileImageViewLeft self.nameLabel.font = Font.nameLabel self.nameLabel.textColor = Color.nameLabelText
-
λμ΄μ μμμ΄ λ°μνμ§ μλ ν΄λμ€λ νμ
final
ν€μλλ‘ μ μΈν©λλ€. -
νλ‘ν μ½μ μ μ©ν λμλ extensionμ λ§λ€μ΄μ κ΄λ ¨λ λ©μλλ₯Ό λͺ¨μλ‘λλ€.
μ’μ μ:
final class MyViewController: UIViewController { // ... } // MARK: - UITableViewDataSource extension MyViewController: UITableViewDataSource { // ... } // MARK: - UITableViewDelegate extension MyViewController: UITableViewDelegate { // ... }
λμ μ:
final class MyViewController: UIViewController, UITableViewDataSource, UITableViewDelegate { // ... }
λ³Έ λ¬Έμλ ν¬λ¦¬μμ΄ν°λΈ μ»€λ¨Όμ¦ μ μμνμ 4.0 κ΅μ λΌμ΄μΌμ€μ λ°λΌ μ΄μ©ν μ μμΌλ©°, μ μκΆμ μ μμ΄κ³Ό StyleShareμκ² μμ΅λλ€.