-
Notifications
You must be signed in to change notification settings - Fork 5
Ounce_Coding_Convention
-
Style Shareμ swift-style-guide λ¬Έμλ₯Ό μ°Έκ³ ν΄ λ§λ λ¬Έμμ λλ€.
StudySearch ꡬμ±μλ€μ΄ Swift μ½λλ₯Ό μ΄ν΄νκΈ° μ½κ³ λͺ ννκ² μμ±νκΈ° μν μ€νμΌ κ°μ΄λμ λλ€. ꡬμ±μλ€μ μμ¬κ²°μ μ λ°λΌ μμλ‘ λ³κ²½λ μ μμ΅λλ€.
λ³Έ λ¬Έμμ λμμμ§ μμ κ·μΉμ μλ λ¬Έμλ₯Ό λ°λ¦ λλ€.
-
λ€μ¬μ°κΈ°μλ ν(tab)μ μ¬μ©ν©λλ€
-
μ½λ‘ (
:
)μ μΈ λμλ μ½λ‘ μ μ€λ₯Έμͺ½μλ§ κ³΅λ°±μ λ‘λλ€.let names: [String: String]?
-
μ°μ°μ μ€λ²λ‘λ© ν¨μ μ μμμλ μ°μ°μμ κ΄νΈ μ¬μ΄μ ν μΉΈ λμ΄μλλ€.
func ** (lhs: Int, rhs: Int)
-
ν¨μ μ μκ° μ΅λ κΈΈμ΄λ₯Ό μ΄κ³Όνλ κ²½μ°μλ μλμ κ°μ΄ μ€λ°κΏν©λλ€.
func collectionView( _ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath ) -> UICollectionViewCell { // doSomething() } func animationController( forPresented presented: UIViewController, presenting: UIViewController, source: UIViewController ) -> UIViewControllerAnimatedTransitioning? { // doSomething() }
-
ν¨μλ₯Ό νΈμΆνλ μ½λκ° μ΅λ κΈΈμ΄λ₯Ό μ΄κ³Όνλ κ²½μ°μλ νλΌλ―Έν° μ΄λ¦μ κΈ°μ€μΌλ‘ μ€λ°κΏν©λλ€.
let actionSheet = UIActionSheet( title: "μ λ§ κ³μ μ μμ νμ€ κ±΄κ°μ?", delegate: self, cancelButtonTitle: "μ·¨μ", destructiveButtonTitle: "μμ ν΄μ£ΌμΈμ" )
λ¨, νλΌλ―Έν°μ ν΄λ‘μ κ° 2κ° μ΄μ μ‘΄μ¬νλ κ²½μ°μλ 무쑰건 λ΄λ €μ°κΈ°ν©λλ€.
UIView.animate( withDuration: 0.25, animations: { // doSomething() }, completion: { finished in // doSomething() } )
-
if let
κ΅¬λ¬Έμ΄ κΈΈ κ²½μ°μλ μ€λ°κΏνκ³ ν μΉΈ λ€μ¬μλλ€.if let user = self.veryLongFunctionNameWhichReturnsOptionalUser(), let name = user.veryLongFunctionNameWhichReturnsOptionalName(), user.gender == .female { // ... }
-
guard let
κ΅¬λ¬Έμ΄ κΈΈ κ²½μ°μλ μ€λ°κΏνκ³ ν μΉΈ λ€μ¬μλλ€.else
λguard
μ κ°μ λ€μ¬μ°κΈ°λ₯Ό μ μ©ν©λλ€.guard let user = self.veryLongFunctionNameWhichReturnsOptionalUser(), let name = user.veryLongFunctionNameWhichReturnsOptionalName(), user.gender == .female else { return }
-
ν μ€μ μ΅λ 99μλ₯Ό λμ§ μμμΌ ν©λλ€.
Xcodeμ Preferences β Text Editing β Editingμ 'Page guide at column' μ΅μ μ νμ±ννκ³ 99μλ‘ μ€μ νλ©΄ νΈλ¦¬ν©λλ€.
-
λΉ μ€μλ κ³΅λ°±μ΄ ν¬ν¨λμ§ μλλ‘ ν©λλ€.
-
λͺ¨λ νμΌμ λΉ μ€λ‘ λλλλ‘ ν©λλ€.
-
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() }
-
κ°λ₯νλ€λ©΄ λ³μλ₯Ό μ μν λ ν¨κ» μ΄κΈ°ννλλ‘ ν©λλ€. Thenμ μ¬μ©νλ©΄ μ΄κΈ°νμ ν¨κ» μμ±μ μ§μ ν μ μμ΅λλ€.
let label = UILabel().then { $0.textAlignment = .center $0.textColor = .black $0.text = "Hello, World!" }
-
μμλ₯Ό μ μν λμλ
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μκ² μμ΅λλ€.
-