From 8d7aa9dc41bbd1e1765d1e33262d886a6aeeeeed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=B0smail=20KILI=C3=87?= Date: Mon, 15 Jan 2024 05:46:12 -0800 Subject: [PATCH 01/50] Update code_style_guideline.md --- code_style_guideline/code_style_guideline.md | 70 +++++++++++++++++++- 1 file changed, 68 insertions(+), 2 deletions(-) diff --git a/code_style_guideline/code_style_guideline.md b/code_style_guideline/code_style_guideline.md index 06ff976..47b2fb6 100644 --- a/code_style_guideline/code_style_guideline.md +++ b/code_style_guideline/code_style_guideline.md @@ -177,21 +177,87 @@ private func nextButtonAction(_ sender: UIButton) { // ... However, if the return value might be useful in some specific situations, it doesn't force one to use it (the `@discardableResult` annotation serves this purpose). Though, such return values are not encouraged. An engineer shall follow the principle of [the command-query separation](https://en.wikipedia.org/wiki/Command–query_separation). -### Delegates +--- -When creating custom delegate methods, an unnamed first parameter should be the delegate source. (UIKit contains numerous examples of this.) +### Delegates +Methods on delegate protocols and delegate-like protocols (such as data sources) are named using the linguistic syntax described below, which is inspired by Cocoa’s protocols. + +> The term “delegate’s source object” refers to the object that invokes methods on the delegate. For example, a `UITableView` is the source object that invokes methods on the `UITableViewDelegate` that is set as the view’s `delegate` property. + +All methods take the delegate’s source object as the first argument. + +For methods that take the delegate’s source object as their **only** argument: + +- If the method returns `Void` (such as those used to notify the delegate that an event has occurred), then the method’s base name is the **delegate’s source type** followed by an **indicative verb phrase** describing the event. The argument is **unlabeled.** + + ```swift + func scrollViewDidBeginScrolling(_ scrollView: UIScrollView) + ``` + +- If the method returns `Bool` (such as those that make an assertion about the delegate’s source object itself), then the method’s name is the **delegate’s source type** followed by an **indicative or conditional verb phrase** describing the assertion. The argument is **unlabeled.** + + ```swift + func scrollViewShouldScrollToTop(_ scrollView: UIScrollView) -> Bool + ``` + +- If the method returns some other value (such as those querying for information about a property of the delegate’s source object), then the method’s base name is a **noun phrase** describing the property being queried. The argument is **labeled with a preposition or phrase with a trailing preposition** that appropriately combines the noun phrase and the delegate’s source object. + + ```swift + func numberOfSections(in scrollView: UIScrollView) -> Int + ``` + + +For methods that take **additional** arguments after the delegate’s source object, the method’s base name is the delegate’s source type **by itself** and the first argument is **unlabeled.** Then: + +- If the method returns `Void`, the second argument is **labeled with an indicative verb phrase** describing the event that has the argument as its **direct object or prepositional object,** and any other arguments (if present) provide further context. + + ```swift + func tableView( + _ tableView: UITableView, + willDisplayCell cell: UITableViewCell, + forRowAt indexPath: IndexPath) + ``` + +- If the method returns `Bool`, the second argument is **labeled with an indicative or conditional verb phrase** that describes the return value in terms of the argument, and any other arguments (if present) provide further context. + + ```swift + func tableView( + _ tableView: UITableView, + shouldSpringLoadRowAt indexPath: IndexPath, + with context: UISpringLoadedInteractionContext + ) -> Bool + ``` + +- If the method returns some other value, the second argument is **labeled with a noun phrase and trailing preposition** that describes the return value in terms of the argument, and any other arguments (if present) provide further context. + + ```swift + func tableView( + _ tableView: UITableView, + heightForRowAt indexPath: IndexPath + ) -> CGFloat + ``` + + +Apple’s documentation on [delegates and data sources](https://developer.apple.com/library/content/documentation/General/Conceptual/CocoaEncyclopedia/DelegatesandDataSources/DelegatesandDataSources.html) also contains some good general guidance about such names. + +#### Examples: **Preferred**: ```swift func namePickerView(_ namePickerView: NamePickerView, didSelectName name: String) func namePickerViewShouldReload(_ namePickerView: NamePickerView) -> Bool +func namePickerViewNumberOfSections(in scrollView: UIScrollView) -> Int +func namePickerViewRefreshOrdersAndFocus(on orderParentId: String) ``` **Not Preferred**: ```swift func didSelectName(namePicker: NamePickerViewController, name: String) func namePickerShouldReload() -> Bool +func numberOfSections(scrollView: UIScrollView) -> Int +func viewRefreshOrdersAndFocus(on orderParentId: String) ``` +--- ### Interface From 07bba83b221f77e06c48183f8f198398981b378c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=B0smail=20KILI=C3=87?= Date: Mon, 15 Jan 2024 06:10:39 -0800 Subject: [PATCH 02/50] Update code_style_guideline.md --- code_style_guideline/code_style_guideline.md | 35 +++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/code_style_guideline/code_style_guideline.md b/code_style_guideline/code_style_guideline.md index 06ff976..bdbd555 100644 --- a/code_style_guideline/code_style_guideline.md +++ b/code_style_guideline/code_style_guideline.md @@ -199,7 +199,7 @@ Classes and structures are named using noun phrases, as well as protocols descri Types implementing design patterns are usually named with the pattern name at the end (e.g., ViewBuilder, `DisplayingStrategy`). -No prefixes shall be used (e.g., just `PriceCalculator` instead of `XYZPriceCalculator`), since there's no necessity for that in Swift (other than, maybe, to maintain consistency with Objective-C libraries and components). +No prefixes shall be used (e.g., just `PriceCalculator` instead of `XYZPriceCalculator`), since there's no necessity for that in Swift **Preferred**: ```swift @@ -213,6 +213,39 @@ protocol EngineProtocol { } struct Engine: EngineProtocol { } ``` +If we want use as Interface as ViewInterface, We should use "Interface" postfix end of the protocol. If depents on the design pattern; + +**Preferred**: +```swift +protocol AccountRouterInterface { } +struct AccountRouter: AccountRouterInterface { } + +private let router: AccountRouterInterface +``` + +**Not Preferred**: +```swift +protocol AccountRouter { } +protocol AccountRouterProtocol { } + +private let router: AccountRouter +``` + +Which introduced support for using the AnyObject keyword as a protocol constraint, recommends preferring AnyObject over class: + +> This proposal merges the concepts of class and AnyObject, which now have the same meaning: they represent an existential for classes. To get rid of the duplication, we suggest only keeping AnyObject around. To reduce source-breakage to a minimum, class could be redefined as typealias class = AnyObject and give a deprecation warning on class for the first version of Swift this proposal is implemented in. Later, class could be removed in a subsequent version of Swift. + +**Preferred**: +```swift +protocol Foo: class { } +``` + +**Not Preferred**: +```swift +protocol Foo: AnyObject { } +``` +--- + ### Use Type Inferred Context Use compiler inferred context to write shorter, clear code. (Also see [Type Inference](#type-inference).) From 162bb3f1c6640fadf8cb1b3c1f1cb096fa3977f5 Mon Sep 17 00:00:00 2001 From: Batuhan Saka Date: Wed, 17 Jan 2024 12:17:54 +0100 Subject: [PATCH 03/50] reorganize style guide template for Trendyol --- code_style_guideline/code_style_guideline.md | 371 +++++++++++++++---- 1 file changed, 303 insertions(+), 68 deletions(-) diff --git a/code_style_guideline/code_style_guideline.md b/code_style_guideline/code_style_guideline.md index 06ff976..e3ee008 100644 --- a/code_style_guideline/code_style_guideline.md +++ b/code_style_guideline/code_style_guideline.md @@ -1,7 +1,6 @@ -# The Official Kodeco Swift Style Guide. -### Updated for Swift 5 +# Trendyol iOS Style Guide -This style guide is different from others you may see, because the focus is centered on readability for print and the web. We created this style guide to keep the code in our books, tutorials, and starter kits nice and consistent — even though we have many different authors working on the books. +Tailored exclusively for the Trendyol app, this Swift Style Guide prioritizes code readability within Trendyol's unique development environment. Crafted to ensure consistency across diverse contributors, the guide serves as a dedicated resource for maintaining a cohesive and clear codebase. Our overarching goals are clarity, consistency and brevity, in that order. @@ -113,19 +112,21 @@ For the above example using `UIGestureRecognizer`, 1 is unambiguous and preferre **Pro Tip:** You can use Xcode's jump bar to lookup methods with argument labels. If you’re particularly good at mashing lots of keys simultaneously, put the cursor in the method name and press **Shift-Control-Option-Command-C** (all 4 modifier keys) and Xcode will kindly put the signature on your clipboard. -![Methods in Xcode jump bar](screens/xcode-jump-bar.png) - - ### Class Prefixes Swift types are automatically namespaced by the module that contains them and you should not add a class prefix such as RW. If two names from different modules collide you can disambiguate by prefixing the type name with the module name. However, only specify the module name when there is possibility for confusion, which should be rare. +
+Examples + ```swift import SomeModule let myClass = MyModule.UsefulClass() ``` +
+ ### Methods Methods without side-effects have names in the form of what: `let size = view.originalSize()`. @@ -138,6 +139,9 @@ Parameter names follow rules for variable names. An engineer shall make use of S Factory method names start with the word "make". Both factory methods and initializers have their parameters as a list of items, they are not required to form phrases. +
+Examples + **Preferred**: ```swift init(name: String, id: Int) @@ -149,8 +153,13 @@ func makeView(position: CGPoint, size: CGSize) -> UIView init(withName name: String, andID id: Int) ``` +
+ It's very common to force engineers to put an object of delegation as the first argument of delegation methods. This is not strictly necessary and is used only in cases when it makes sense. +
+Examples + **Preferred**: ``` func buttonTapped(_ button: UIButton) @@ -161,8 +170,13 @@ func buttonTapped(_ button: UIButton) func screen(_ screen: UIViewController, hasButtonTapped button: UIButton) ``` +
+ UIKit's UIControl actions are called with the control's name in the beginning and the "action" word in the end: +
+Examples + **Preferred**: ``` @objc @@ -175,12 +189,61 @@ private func nextButtonTapped(_ sender: UIButton) { // ... private func nextButtonAction(_ sender: UIButton) { // ... ``` +
+ +Omit unused parameters. + +
+Examples + +**Preferred**: +```swift +func calculateSum(_ a: Int, _ b: Int) -> Int { + return a + b +} +``` + +**Not Preferred**: +```swift +func calculateSum(_ a: Int, _ b: Int, _ c: Int) -> Int { + return a + b // The parameter 'c' is unused +} +``` + +
+ +Omit `Void` return types from function definitions. + However, if the return value might be useful in some specific situations, it doesn't force one to use it (the `@discardableResult` annotation serves this purpose). Though, such return values are not encouraged. An engineer shall follow the principle of [the command-query separation](https://en.wikipedia.org/wiki/Command–query_separation). +Long function invocations should also break on each argument. Put the closing parenthesis on the last parameter of the invocation. + +
+Examples + +**Preferred**: +```swift +let result = calculateTotal( + initialValue: 10, + additionalValue: 5, + multiplier: 2 +) +``` + +**Not Preferred**: +```swift +let result = calculateTotal(initialValue: 10, additionalValue: 5, multiplier: 2) +``` + +
+ ### Delegates When creating custom delegate methods, an unnamed first parameter should be the delegate source. (UIKit contains numerous examples of this.) +
+Examples + **Preferred**: ```swift func namePickerView(_ namePickerView: NamePickerView, didSelectName name: String) @@ -193,6 +256,8 @@ func didSelectName(namePicker: NamePickerViewController, name: String) func namePickerShouldReload() -> Bool ``` +
+ ### Interface Classes and structures are named using noun phrases, as well as protocols describing what an object is. Protocols which add abilities are named descriptively (e.g., `Sortable`). Protocols should not have the word `Protocol` at the end of the name. Instead, conforming types should have a specifying word in the name, because protocols are general, but classes and structures are specific. @@ -201,6 +266,9 @@ Types implementing design patterns are usually named with the pattern name at th No prefixes shall be used (e.g., just `PriceCalculator` instead of `XYZPriceCalculator`), since there's no necessity for that in Swift (other than, maybe, to maintain consistency with Objective-C libraries and components). +
+Examples + **Preferred**: ```swift protocol Engine { } @@ -213,10 +281,15 @@ protocol EngineProtocol { } struct Engine: EngineProtocol { } ``` +
+ ### Use Type Inferred Context Use compiler inferred context to write shorter, clear code. (Also see [Type Inference](#type-inference).) +
+Examples + **Preferred**: ```swift let selector = #selector(viewDidLoad) @@ -233,10 +306,15 @@ let toView = context.view(forKey: UITransitionContextViewKey.to) let view = UIView(frame: CGRect.zero) ``` +
+ ### Generics Generic type parameters should be descriptive, upper camel case names. When a type name doesn't have a meaningful relationship or role, use a traditional single uppercase letter such as `T`, `U`, or `V`. +
+Examples + **Preferred**: ```swift struct Stack { ... } @@ -251,10 +329,15 @@ func write(to target: inout target) func swap(_ a: inout Thing, _ b: inout Thing) ``` +
+ ### Language Use US English spelling to match Apple's API. +
+Examples + **Preferred**: ```swift let color = "red" @@ -265,6 +348,8 @@ let color = "red" let colour = "red" ``` +
+ ## Code Organization Use extensions to organize your code into logical blocks of functionality. Each extension should be set off with a `// MARK: -` comment to keep things well-organized. @@ -273,6 +358,9 @@ Use extensions to organize your code into logical blocks of functionality. Each In particular, when adding protocol conformance to a model, prefer adding a separate extension for the protocol methods. This keeps the related methods grouped together with the protocol and can simplify instructions to add a protocol to a class with its associated methods. +
+Examples + **Preferred**: ```swift class MyViewController: UIViewController { @@ -297,6 +385,8 @@ class MyViewController: UIViewController, UITableViewDataSource, UIScrollViewDel } ``` +
+ Since the compiler does not allow you to re-declare protocol conformance in a derived class, it is not always required to replicate the extension groups of the base class. This is especially true if the derived class is a terminal class and a small number of methods are being overridden. When to preserve the extension groups is left to the discretion of the author. For UIKit view controllers, consider grouping lifecycle, custom accessors, and IBAction in separate class extensions. @@ -307,6 +397,9 @@ Unused (dead) code, including Xcode template code and placeholder comments shoul Aspirational methods not directly associated with the tutorial whose implementation simply calls the superclass should also be removed. This includes any empty/unused UIApplicationDelegate methods. +
+Examples + **Preferred**: ```swift override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { @@ -332,10 +425,16 @@ override func tableView(_ tableView: UITableView, numberOfRowsInSection section: } ``` + +
+ ### Minimal Imports Import only the modules a source file requires. For example, don't import `UIKit` when importing `Foundation` will suffice. Likewise, don't import `Foundation` if you must import `UIKit`. +
+Examples + **Preferred**: ```swift import UIKit @@ -363,15 +462,18 @@ import UIKit var deviceModels: [String] ``` +
+ ## Spacing * Indent using 2 spaces rather than tabs to conserve space and help prevent line wrapping. Be sure to set this preference in Xcode and in the Project settings as shown below: -![Xcode indent settings](screens/indentation.png) - * Method braces and other braces (`if`/`else`/`switch`/`while` etc.) always open on the same line as the statement but close on a new line. * Tip: You can re-indent by selecting some code (or **Command-A** to select all) and then **Control-I** (or **Editor ▸ Structure ▸ Re-Indent** in the menu). Some of the Xcode template code will have 4-space tabs hard coded, so this is a good way to fix that. +
+Examples + **Preferred**: ```swift if user.isHappy { @@ -392,12 +494,17 @@ else { } ``` +
+ * There should be one blank line between methods and up to one blank line between type declarations to aid in visual clarity and organization. Whitespace within methods should separate functionality, but having too many sections in a method often means you should refactor into several methods. * There should be no blank lines after an opening brace or before a closing brace. * Closing parentheses should not appear on a line by themselves. +
+Examples + **Preferred**: ```swift let user = try await getUser( @@ -413,8 +520,13 @@ let user = try await getUser( ) ``` +
+ * Colons always have no space on the left and one space on the right. Exceptions are the ternary operator `? :`, empty dictionary `[:]` and `#selector` syntax `addTarget(_:action:)`. +
+Examples + **Preferred**: ```swift class TestDatabase: Database { @@ -429,6 +541,8 @@ class TestDatabase : Database { } ``` +
+ * Long lines should be wrapped at around 70 characters. A hard limit is intentionally not specified. * Avoid trailing whitespaces at the ends of lines. @@ -459,6 +573,9 @@ Indicating a method's time complexity in documentation generally is a good idea, The basic structure of multi-line descriptions: +
+Examples + **Preferred**: ```swift /// Summary. @@ -487,6 +604,8 @@ Detailed description. */ ``` +
+ Though, if a method has any parameters, they are necessary to be documented. A single parameter must be documented as - Parameter: Description. Multiple parameters shall be documented by the help of - Parameters: syntax. If the method has functions as parameters, their arguments must have labels and be documented, as well. If a method's return value type is not Void, it should be documented. @@ -495,6 +614,9 @@ If a method throws an exception, the exception is documented with Throws. Two HeaderDoc parts are divided by a single blank line. However, if there's no description, blank lines are omitted: +
+Examples + **Preferred**: ```swift // Summary. @@ -514,6 +636,8 @@ Two HeaderDoc parts are divided by a single blank line. However, if there's no d // - Throws: Exception description. ``` +
+ ## Classes and Structures ### Which one to use? @@ -528,6 +652,9 @@ Sometimes, things should be structs but need to conform to `AnyObject` or are hi Here's an example of a well-styled class definition: +
+Examples + ```swift class Circle: Shape { var x: Int, y: Int @@ -566,6 +693,8 @@ extension Circle: CustomStringConvertible { } ``` +
+ The example above demonstrates the following style guidelines: + Specify types for properties, variables, constants, argument declarations and other statements with a space after the colon but not before, e.g. `x: Int`, and `Circle: Shape`. @@ -586,6 +715,9 @@ Use self only when required by the compiler (in `@escaping` closures, or in init For conciseness, if a computed property is read-only, omit the get clause. The get clause is required only when a set clause is provided. +
+Examples + **Preferred**: ```swift var diameter: Double { @@ -602,6 +734,8 @@ var diameter: Double { } ``` +
+ ### Final Marking classes or members as `final` in tutorials can distract from the main topic and is not required. Nevertheless, use of `final` can sometimes clarify your intent and is worth the cost. In the below example, `Box` has a particular purpose and customization in a derived class is not intended. Marking it `final` makes that clear. @@ -641,6 +775,9 @@ func reticulateSplines( Don't use `(Void)` to represent the lack of an input; simply use `()`. Use `Void` instead of `()` for closure and function outputs. +
+Examples + **Preferred**: ```swift @@ -661,6 +798,8 @@ func updateConstraints() -> () { typealias CompletionHandler = (result) -> () ``` +
+ ## Function Calls Mirror the style of function declarations at call sites. Calls that fit on a single line should be written as such: @@ -682,6 +821,9 @@ let success = reticulateSplines( A method declaration is placed on a single line if it can fit most display screen widths without a carry-over. Otherwise, each parameter is placed on its own line and matches the beginning of the previous one. Return type carries on to the last parameter's line. +
+Examples + **Preferred**: ```swift @@ -705,10 +847,15 @@ func fetchResults(from endpoint: URL, transferringTo device: Device, compressed: Bool, completionHandler: (() -> Void)?) –> [Data] ``` +
+ ## Closure Expressions Use trailing closure syntax only if there's a single closure expression parameter at the end of the argument list. Give the closure parameters descriptive names. +
+Examples + **Preferred**: ```swift UIView.animate(withDuration: 1.0) { @@ -735,8 +882,13 @@ UIView.animate(withDuration: 1.0, animations: { } ``` +
+ For single-expression closures where the context is clear, use implicit returns: +
+Examples + ```swift attendeeList.sort { a, b in a > b @@ -754,8 +906,13 @@ array.filter { $0 > 0 } .sort { $0 > $1 }.map { Int($0) } ``` +
+ Chained methods using trailing closures should be clear and easy to read in context. Decisions on spacing, line breaks, and when to use named versus anonymous arguments is left to the discretion of the author. Examples: +
+Examples + ```swift let value = numbers.map { $0 * 2 }.filter { $0 % 3 == 0 }.index(of: 90) @@ -765,10 +922,15 @@ let value = numbers .map {$0 + 10} ``` +
+ ## Types Always use Swift's native types and expressions when available. Swift offers bridging to Objective-C so you can still use the full set of methods as needed. +
+Examples + **Preferred**: ```swift let width = 120.0 // Double @@ -787,6 +949,8 @@ let width: NSNumber = 120.0 // NSNumber let widthString: NSString = width.stringValue // NSString ``` +
+ In drawing code, use `CGFloat` if it makes the code more succinct by avoiding too many conversions. ## Initialization @@ -795,6 +959,9 @@ If the initial or constant value of a property doesn't depend on the initializer `.init()` is not used for initialization: +
+Examples + **Preferred**: ```swift let color = UIColor(displayP3Red: 1.0, green: 0.0, blue: 0.0, alpha: 1.0) @@ -805,6 +972,8 @@ let color = UIColor(displayP3Red: 1.0, green: 0.0, blue: 0.0, alpha: 1.0) let color: UIColor = .init(displayP3Red: 1.0, green: 0.0, blue: 0.0, alpha: 1.0) ``` +
+ ### Constants Constants are defined using the `let` keyword and variables with the `var` keyword. Always use `let` instead of `var` if the value of the variable will not change. @@ -813,6 +982,9 @@ Constants are defined using the `let` keyword and variables with the `var` keywo You can define constants on a type rather than on an instance of that type using type properties. To declare a type property as a constant simply use `static let`. Type properties declared in this way are generally preferred over global constants because they are easier to distinguish from instance properties. Example: +
+Examples + **Preferred**: ```swift enum Math { @@ -823,6 +995,8 @@ enum Math { let hypotenuse = side * Math.root2 ``` + + **Note:** The advantage of using a case-less enumeration is that it can't accidentally be instantiated and works as a pure namespace. **Not Preferred**: @@ -833,6 +1007,8 @@ let root2 = 1.41421356237309504880168872 let hypotenuse = side * root2 // what is root2? ``` +
+ ### Static Methods and Variable Type Properties Static methods and type properties work similarly to global functions and global variables and should be used sparingly. They are useful when functionality is scoped to a particular type or when Objective-C interoperability is required. @@ -871,6 +1047,9 @@ When naming optional variables and properties, avoid naming them like `optionalS For optional binding, shadow the original name whenever possible rather than using names like `unwrappedView` or `actualLabel`. +
+Examples + **Preferred**: ```swift var subview: UIView? @@ -907,8 +1086,13 @@ UIView.animate(withDuration: 2.0) { [weak self] in } ``` +
+ If you don't plan on actually using the value stored in an optional, but need to determine whether or not this value is `nil`, explicitly check this value against `nil` as opposed to using `if let` syntax. +
+Examples + **Preferred**: ```swift if someOptional != nil { @@ -924,8 +1108,13 @@ if let _ = someOptional { } ``` +
+ Use XCTUnwrap instead of forced unwrapping in tests. +
+Examples + **Preferred**: ```swift let product = try XCTUnwrap(priceComparisonResponse.stores?.first?.products?.first) @@ -936,10 +1125,15 @@ let product = try XCTUnwrap(priceComparisonResponse.stores?.first?.products?.fir let product = priceComparisonResponse.stores!.first!.products!.first! ``` +
+ ### Lazy Initialization Consider using lazy initialization for finer grained control over object lifetime. This is especially true for `UIViewController` that loads views lazily. You can either use a closure that is immediately called `{ }()` or call a private factory method. Example: +
+Examples + ```swift lazy var locationManager = makeLocationManager() @@ -952,6 +1146,8 @@ private func makeLocationManager() -> CLLocationManager { } ``` +
+ **Notes:** - `[unowned self]` is not required here. A retain cycle is not created. - Location manager has a side-effect for popping up UI to ask the user for permission so fine grain control makes sense here. @@ -961,6 +1157,9 @@ private func makeLocationManager() -> CLLocationManager { Prefer compact code and let the compiler infer the type for constants or variables of single instances. Type inference is also appropriate for small, non-empty arrays and dictionaries. When required, specify the specific type such as `CGFloat` or `Int16`. +
+Examples + **Preferred**: ```swift let message = "Click the button" @@ -976,10 +1175,15 @@ let currentBounds: CGRect = computeViewBounds() var names = [String]() ``` +
+ #### Type Annotation for Empty Arrays and Dictionaries For empty arrays and dictionaries, use type annotation. (For an array or dictionary assigned to a large, multi-line literal, use type annotation.) +
+Examples + **Preferred**: ```swift var names: [String] = [] @@ -992,10 +1196,15 @@ var names = [String]() var lookup = [String: Int]() ``` +
+ **NOTE**: Following this guideline means picking descriptive names is even more important than before. Array literals shall not contain spaces after the left square bracket and before the right one. The included items shall be listed one below another, aligned at the same level of indentation. The first element shall be on the declaration's line. The closing bracket shall go on the same line with the last item. However, if items are short and their sequence can be read easily (e.g., integer literals) it's acceptable to have them all on the one line. +
+Examples + **Preferred**: ```swift var numbers = [1, 2, 3] @@ -1017,6 +1226,8 @@ var numbers = [ let airVehicles = [helicopter, airLiner, carrierRocket, wings] ``` +
+ The option with braces on separate lines is used when elements don't fit the line width: **Preferred**: @@ -1031,6 +1242,9 @@ let airVehicles = [ Prefer the shortcut versions of type declarations over the full generics syntax. +
+Examples + **Preferred**: ```swift var deviceModels: [String] @@ -1045,12 +1259,17 @@ var employees: Dictionary var faxNumber: Optional ``` +
+ ## Functions vs Methods Free functions, which aren't attached to a class or type, should be used sparingly. When possible, prefer to use a method instead of a free function. This aids in readability and discoverability. Free functions are most appropriate when they aren't associated with any particular type or instance. +
+Examples + **Preferred** ```swift let sorted = items.mergeSorted() // easily discoverable @@ -1063,6 +1282,8 @@ let sorted = mergeSort(items) // hard to discover launch(&rocket) ``` +
+ **Free Function Exceptions** ```swift let tuples = zip(a, b) // feels natural as a free function (symmetry) @@ -1077,6 +1298,9 @@ Code (even non-production, tutorial demo code) should not create reference cycle Extend object lifetime using the `[weak self]` and `guard let self = self else { return }` idiom. `[weak self]` is preferred to `[unowned self]` where it is not immediately obvious that `self` outlives the closure. Explicitly extending lifetime is preferred to optional chaining. +
+Examples + **Preferred** ```swift resource.request().onComplete { [weak self] response in @@ -1106,6 +1330,8 @@ resource.request().onComplete { [weak self] response in } ``` +
+ ## Access Control Full access control annotation in tutorials can distract from the main topic and is not required. Using `private` and `fileprivate` appropriately, however, adds clarity and promotes encapsulation. Prefer `private` to `fileprivate`; use `fileprivate` only when the compiler insists. @@ -1114,6 +1340,9 @@ Only explicitly use `open`, `public`, and `internal` when you require a full acc Use access control as the leading property specifier. The only things that should come before access control are the `static` specifier or attributes such as `@IBAction`, `@IBOutlet` and `@discardableResult`. +
+Examples + **Preferred**: ```swift private let message = "Great Scott!" @@ -1132,10 +1361,15 @@ class TimeMachine { } ``` +
+ ## Control Flow Prefer the `for-in` style of `for` loop over the `while-condition-increment` style. +
+Examples + **Preferred**: ```swift for _ in 0..<3 { @@ -1172,10 +1406,15 @@ while i < attendeeList.count { } ``` +
+ ### Ternary Operator The Ternary operator, `?:` , should only be used when it increases clarity or code neatness. A single condition is usually all that should be evaluated. Evaluating multiple conditions is usually more understandable as an `if` statement or refactored into instance variables. In general, the best use of the ternary operator is during assignment of a variable and deciding which value to use. +
+Examples + **Preferred**: ```swift @@ -1192,8 +1431,13 @@ result = isHorizontal ? x : y result = a > b ? x = c > d ? c : d : y ``` +
+ The ternary operator `?`-`:` shall not be used where the single `if`-check is sufficient, because although it can save lines, it makes the intention unclear and spawns extra entities (empty tuples or functions). +
+Examples + **Preferred**: ```swift if error == nil { @@ -1208,11 +1452,16 @@ error == nil : () ``` +
+ ### Switch Statements One level of indentation is used inside a `switch`'s parentheses and for `case` implementations. All statements inside the cases of a `switch` statement start on separate lines. +
+Examples + **Preferred**: ```swift @@ -1236,10 +1485,15 @@ switch direction { } ``` +
+ ## Golden Path When coding with conditionals, the left-hand margin of the code should be the "golden" or "happy" path. That is, don't nest `if` statements. Multiple return statements are OK. The `guard` statement is built for this. +
+Examples + **Preferred**: ```swift func computeFFT(context: Context?, inputData: InputData?) throws -> Frequencies { @@ -1272,8 +1526,13 @@ func computeFFT(context: Context?, inputData: InputData?) throws -> Frequencies } ``` +
+ When multiple optionals are unwrapped either with `guard` or `if let`, minimize nesting by using the compound version when possible. In the compound version, place the `guard` on its own line, then indent each condition on its own line. The `else` clause is indented to match the `guard` itself, as shown below. Example: +
+Examples + **Preferred**: ```swift guard @@ -1303,9 +1562,13 @@ if let number1 = number1 { } ``` -In any `guard`-statement, the `else` (and its left brace) goes on the same line after the last condition. +
+In any `guard`-statement, the `else` (and its left brace) goes on the same line after the last condition. +
+Examples + **Preferred**: ```swift guard !array.isEmpty else { @@ -1319,6 +1582,8 @@ guard !array.isEmpty // ... ``` +
+ ### Failing Guards Guard statements are required to exit in some way. Generally, this should be simple one line statement such as `return`, `throw`, `break`, `continue`, and `fatalError()`. Large code blocks should be avoided. If cleanup code is required for multiple exit points, consider using a `defer` block to avoid cleanup code duplication. @@ -1329,6 +1594,9 @@ Swift does not require a semicolon after each statement in your code. They are o Do not write multiple statements on a single line separated with semicolons. +
+Examples + **Preferred**: ```swift let swift = "not a scripting language" @@ -1339,12 +1607,17 @@ let swift = "not a scripting language" let swift = "not a scripting language"; ``` +
+ **NOTE**: Swift is very different from JavaScript, where omitting semicolons is [generally considered unsafe](https://stackoverflow.com/questions/444080/do-you-recommend-using-semicolons-after-every-statement-in-javascript) ## Parentheses Parentheses around conditionals are not required and should be omitted. +
+Examples + **Preferred**: ```swift if name == "Hello" { @@ -1359,17 +1632,27 @@ if (name == "Hello") { } ``` +
+ In larger expressions, optional parentheses can sometimes make code read more clearly. +
+Examples + **Preferred**: ```swift let playerMark = (player == current ? "X" : "O") ``` +
+ ## Multi-line String Literals When building a long string literal, you're encouraged to use the multi-line string literal syntax. Open the literal on the same line as the assignment but do not include text on that line. Indent the text block one additional level. +
+Examples + **Preferred**: ```swift @@ -1402,11 +1685,15 @@ let message = "You cannot charge the flux " + "which costs 10 credits. You currently " + "have \(credits) credits available." ``` +
## Line breaks Long expressions are broken into several parts on different lines so that the symbol that connects two parts of expression starts the new line. Each new line is indented with one additional indentation level. Having a special character starting a new line avoids creating the illusion that a new line is a new statement. +
+Examples + **Preferred**: ```swift let a = (a + b) @@ -1419,10 +1706,15 @@ let a = (a + b) + (a + c) ``` +
+ ## Pre-processor Directives Any macros shall not be indented, the surrounded code shall be formatted as if the macro doesn't exist. +
+Examples + **Preferred**: ```swift func handleLogin() { @@ -1443,6 +1735,8 @@ func handleLogin() { } ``` +
+ ## No Emoji Do not use emoji in your projects. For those readers who actually type in their code, it's an unnecessary source of friction. While it may be cute, it doesn't add to the learning and it interrupts the coding flow for these readers. @@ -1451,65 +1745,6 @@ Do not use emoji in your projects. For those readers who actually type in their Likewise, do not use Xcode's ability to drag a color or an image into a source statement. These turn into #colorLiteral and #imageLiteral, respectively, and present unpleasant challenges for a reader trying to enter them based on tutorial text. Instead, use `UIColor(red:green:blue)` and `UIImage(imageLiteralResourceName:)`. -## Organization and Bundle Identifier - -Where an Xcode project is involved, the organization should be set to `Kodeco` and the Bundle Identifier set to `com.yourcompany.TutorialName` where `TutorialName` is the name of the tutorial project. - -![Xcode Project settings](screens/project_settings.png) - -## Copyright Statement - -The following copyright statement should be included at the top of every source -file: - -```swift -/// Copyright (c) 2023 Kodeco Inc. -/// -/// Permission is hereby granted, free of charge, to any person obtaining a copy -/// of this software and associated documentation files (the "Software"), to deal -/// in the Software without restriction, including without limitation the rights -/// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -/// copies of the Software, and to permit persons to whom the Software is -/// furnished to do so, subject to the following conditions: -/// -/// The above copyright notice and this permission notice shall be included in -/// all copies or substantial portions of the Software. -/// -/// Notwithstanding the foregoing, you may not use, copy, modify, merge, publish, -/// distribute, sublicense, create a derivative work, and/or sell copies of the -/// Software in any work that is designed, intended, or marketed for pedagogical or -/// instructional purposes related to programming, coding, application development, -/// or information technology. Permission for such use, copying, modification, -/// merger, publication, distribution, sublicensing, creation of derivative works, -/// or sale is expressly withheld. -/// -/// This project and source code may use libraries or frameworks that are -/// released under various Open-Source licenses. Use of those libraries and -/// frameworks are governed by their own individual licenses. -/// -/// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -/// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -/// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -/// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -/// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -/// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -/// THE SOFTWARE. -``` - -## Smiley Face - -Smiley faces are a very prominent style feature of the [Kodeco](https://www.kodeco.com/) site! It is very important to have the correct smile signifying the immense amount of happiness and excitement for the coding topic. The closing square bracket `]` is used because it represents the largest smile able to be captured using ASCII art. A closing parenthesis `)` creates a half-hearted smile, and thus is not preferred. - -**Preferred**: -``` -:] -``` - -**Not Preferred**: -``` -:) -``` - ## References * [The Swift API Design Guidelines](https://swift.org/documentation/api-design-guidelines/) From be8aa334975dc512fdb588b194feafb6496b1a2d Mon Sep 17 00:00:00 2001 From: Batuhan Saka Date: Wed, 17 Jan 2024 12:19:20 +0100 Subject: [PATCH 04/50] remove unreferred items from table of contents --- code_style_guideline/code_style_guideline.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/code_style_guideline/code_style_guideline.md b/code_style_guideline/code_style_guideline.md index e3ee008..a45f0cb 100644 --- a/code_style_guideline/code_style_guideline.md +++ b/code_style_guideline/code_style_guideline.md @@ -55,9 +55,6 @@ Our overarching goals are clarity, consistency and brevity, in that order. * [Pre-processor Directives](#pre-processor-directives) * [No Emoji](#no-emoji) * [No #imageLiteral or #colorLiteral](#no-imageliteral-or-colorliteral) -* [Organization and Bundle Identifier](#organization-and-bundle-identifier) -* [Copyright Statement](#copyright-statement) -* [Smiley Face](#smiley-face) * [References](#references) From edfb7ff618af38e6b539b67db5446dc498846404 Mon Sep 17 00:00:00 2001 From: Batuhan Saka Date: Wed, 17 Jan 2024 12:20:01 +0100 Subject: [PATCH 05/50] remove redundant definition for long function invocation --- code_style_guideline/code_style_guideline.md | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/code_style_guideline/code_style_guideline.md b/code_style_guideline/code_style_guideline.md index a45f0cb..f117c41 100644 --- a/code_style_guideline/code_style_guideline.md +++ b/code_style_guideline/code_style_guideline.md @@ -213,25 +213,6 @@ Omit `Void` return types from function definitions. However, if the return value might be useful in some specific situations, it doesn't force one to use it (the `@discardableResult` annotation serves this purpose). Though, such return values are not encouraged. An engineer shall follow the principle of [the command-query separation](https://en.wikipedia.org/wiki/Command–query_separation). -Long function invocations should also break on each argument. Put the closing parenthesis on the last parameter of the invocation. - -
-Examples - -**Preferred**: -```swift -let result = calculateTotal( - initialValue: 10, - additionalValue: 5, - multiplier: 2 -) -``` - -**Not Preferred**: -```swift -let result = calculateTotal(initialValue: 10, additionalValue: 5, multiplier: 2) -``` -
### Delegates From 51b81b80c3f0a98e20d50e54a053c05f330d6d67 Mon Sep 17 00:00:00 2001 From: Batuhan Saka Date: Wed, 17 Jan 2024 12:27:24 +0100 Subject: [PATCH 06/50] wrap examples with details tag --- code_style_guideline/code_style_guideline.md | 51 +++++++++++++++++++- 1 file changed, 49 insertions(+), 2 deletions(-) diff --git a/code_style_guideline/code_style_guideline.md b/code_style_guideline/code_style_guideline.md index f117c41..cce8387 100644 --- a/code_style_guideline/code_style_guideline.md +++ b/code_style_guideline/code_style_guideline.md @@ -718,6 +718,9 @@ var diameter: Double { Marking classes or members as `final` in tutorials can distract from the main topic and is not required. Nevertheless, use of `final` can sometimes clarify your intent and is worth the cost. In the below example, `Box` has a particular purpose and customization in a derived class is not intended. Marking it `final` makes that clear. +
+Examples + ```swift // Turn any generic type into a reference type using this Box class. final class Box { @@ -728,18 +731,28 @@ final class Box { } ``` +
+ ## Function Declarations Keep short function declarations on one line including the opening brace: +
+Examples + ```swift func reticulateSplines(spline: [Double]) -> Bool { // reticulate code goes here } ``` +
+ For functions with long signatures, put each parameter on a new line and add an extra indent on subsequent lines: +
+Examples + ```swift func reticulateSplines( spline: [Double], @@ -751,6 +764,8 @@ func reticulateSplines( } ``` +
+ Don't use `(Void)` to represent the lack of an input; simply use `()`. Use `Void` instead of `()` for closure and function outputs.
@@ -782,12 +797,20 @@ typealias CompletionHandler = (result) -> () Mirror the style of function declarations at call sites. Calls that fit on a single line should be written as such: +
+Examples + ```swift let success = reticulateSplines(splines) ``` +
+ If the call site must be wrapped, put each parameter on a new line, indented one additional level: +
+Examples + ```swift let success = reticulateSplines( spline: splines, @@ -796,6 +819,7 @@ let success = reticulateSplines( comment: "normalize the display") ``` +
A method declaration is placed on a single line if it can fit most display screen widths without a carry-over. Otherwise, each parameter is placed on its own line and matches the beginning of the previous one. Return type carries on to the last parameter's line. @@ -1001,26 +1025,43 @@ Don't use as! or try!. When accessing an optional value, use optional chaining if the value is only accessed once or if there are many optionals in the chain: +
+Examples + ```swift textContainer?.textLabel?.setNeedsDisplay() ``` +
+ Use optional binding when it's more convenient to unwrap once and perform multiple operations: +
+Examples + ```swift if let textContainer = textContainer { // do many things with textContainer } ``` + +
+ **Notes:** Swift 5.7 introduced new shorthand syntax for unwrapping optionals into shadowed variables: +
+Examples + ```swift if let textContainer { // do many things with textContainer } ``` +
+ + When naming optional variables and properties, avoid naming them like `optionalString` or `maybeView` since their optional-ness is already in the type declaration. For optional binding, shadow the original name whenever possible rather than using names like `unwrappedView` or `actualLabel`. @@ -1204,8 +1245,6 @@ var numbers = [ let airVehicles = [helicopter, airLiner, carrierRocket, wings] ``` -
- The option with braces on separate lines is used when elements don't fit the line width: **Preferred**: @@ -1216,6 +1255,8 @@ let airVehicles = [ ] ``` + + ### Syntactic Sugar Prefer the shortcut versions of type declarations over the full generics syntax. @@ -1263,11 +1304,17 @@ launch(&rocket) **Free Function Exceptions** + +
+Examples + ```swift let tuples = zip(a, b) // feels natural as a free function (symmetry) let value = max(x, y, z) // another free function that feels natural ``` +
+ ## Memory Management Code (even non-production, tutorial demo code) should not create reference cycles. Analyze your object graph and prevent strong cycles with `weak` and `unowned` references. Alternatively, use value types (`struct`, `enum`) to prevent cycles altogether. From 9649d42465c40ca6f45a57c1b1bc6e1fb03e6e64 Mon Sep 17 00:00:00 2001 From: Batuhan Saka Date: Wed, 17 Jan 2024 12:29:10 +0100 Subject: [PATCH 07/50] update Using SwiftLint section --- code_style_guideline/code_style_guideline.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code_style_guideline/code_style_guideline.md b/code_style_guideline/code_style_guideline.md index cce8387..bf09040 100644 --- a/code_style_guideline/code_style_guideline.md +++ b/code_style_guideline/code_style_guideline.md @@ -64,7 +64,7 @@ Strive to make your code compile without warnings. This rule informs many style ## Using SwiftLint -When writing for Kodeco, you are strongly encouraged — perhaps even required, depending on your team — to use our SwiftLint configuration. See the [SwiftLint Policy](SWIFTLINT.markdown) for more information. +When developing for Trendyol, it is highly recommended — and may even be mandatory, depending on your team — to incorporate our SwiftLint configuration. Please refer to the [SwiftLint Policy](SWIFTLINT.markdown) for detailed information. ## Naming From 688cb63851da9d0e739f6005171d85ffde2224a6 Mon Sep 17 00:00:00 2001 From: Batuhan Saka Date: Wed, 17 Jan 2024 12:32:39 +0100 Subject: [PATCH 08/50] add examples for omitting void return types --- code_style_guideline/code_style_guideline.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/code_style_guideline/code_style_guideline.md b/code_style_guideline/code_style_guideline.md index bf09040..65357af 100644 --- a/code_style_guideline/code_style_guideline.md +++ b/code_style_guideline/code_style_guideline.md @@ -211,6 +211,25 @@ func calculateSum(_ a: Int, _ b: Int, _ c: Int) -> Int { Omit `Void` return types from function definitions. +
+Examples + +**Preferred**: +```swift +func performTask() { + // Implementation +} +``` + +**Not Preferred**: +```swift +func performTask() -> Void { + // Implementation +} +``` + +
+ However, if the return value might be useful in some specific situations, it doesn't force one to use it (the `@discardableResult` annotation serves this purpose). Though, such return values are not encouraged. An engineer shall follow the principle of [the command-query separation](https://en.wikipedia.org/wiki/Command–query_separation). From ab4eaaa44881537e3ea047afc199c6d132145c40 Mon Sep 17 00:00:00 2001 From: Batuhan Saka Date: Wed, 17 Jan 2024 12:38:36 +0100 Subject: [PATCH 09/50] Update code_style_guideline.md --- code_style_guideline/code_style_guideline.md | 1 + 1 file changed, 1 insertion(+) diff --git a/code_style_guideline/code_style_guideline.md b/code_style_guideline/code_style_guideline.md index 65357af..a5dc8c0 100644 --- a/code_style_guideline/code_style_guideline.md +++ b/code_style_guideline/code_style_guideline.md @@ -85,6 +85,7 @@ Descriptive and consistent naming makes software easier to read and understand. - boolean types should read like assertions - protocols that describe _what something is_ should read as nouns - protocols that describe _a capability_ should end in _-able_ or _-ible_ +- omitting all labels when arguments can't be usefully distinguished _e.g. min(number1, number2), zip(sequence1, sequence2)_ - using terms that don't surprise experts or confuse beginners - generally avoiding abbreviations - using precedent for names From 54f15388289bd8a2b7b09822f385a3e37d67ec81 Mon Sep 17 00:00:00 2001 From: Batuhan Saka Date: Wed, 17 Jan 2024 12:53:29 +0100 Subject: [PATCH 10/50] add airbnb style guide to references --- code_style_guideline/code_style_guideline.md | 1 + 1 file changed, 1 insertion(+) diff --git a/code_style_guideline/code_style_guideline.md b/code_style_guideline/code_style_guideline.md index a5dc8c0..f60454d 100644 --- a/code_style_guideline/code_style_guideline.md +++ b/code_style_guideline/code_style_guideline.md @@ -1796,3 +1796,4 @@ Likewise, do not use Xcode's ability to drag a color or an image into a source s * [The Swift Programming Language](https://developer.apple.com/library/prerelease/ios/documentation/swift/conceptual/swift_programming_language/index.html) * [Using Swift with Cocoa and Objective-C](https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/BuildingCocoaApps/index.html) * [Swift Standard Library Reference](https://developer.apple.com/library/prerelease/ios/documentation/General/Reference/SwiftStandardLibraryReference/index.html) +* [Airbnb Swift Style Guide](https://github.com/airbnb/swift) From e3ce4abd74b13a2cb2872a68021e0f56e1efddc7 Mon Sep 17 00:00:00 2001 From: Batuhan Saka Date: Fri, 19 Jan 2024 08:58:15 +0100 Subject: [PATCH 11/50] add long function invocations item to under methods --- code_style_guideline/code_style_guideline.md | 54 ++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/code_style_guideline/code_style_guideline.md b/code_style_guideline/code_style_guideline.md index f60454d..62a1380 100644 --- a/code_style_guideline/code_style_guideline.md +++ b/code_style_guideline/code_style_guideline.md @@ -231,6 +231,60 @@ func performTask() -> Void { +Long function invocations should also break on each argument. Put the closing parenthesis on the last line of the invocation. + +
+Examples + +**Preferred**: +```swift +universe.generate( + 5, + .stars, + at: location) +``` + +**Preferred**: +```swift +universe.generateStars( + at: location, + count: 5, + color: starColor, + withAverageDistance: 4) +``` + +**Not Preferred**: +```swift +universe.generate(5, + .stars, + at: location) +``` + +**Not Preferred**: +```swift +universe.generateStars( + at: location, + count: 5, + color: starColor, + withAverageDistance: 4 +) +``` + +**Not Preferred**: +```swift +universe.generateStars(at: location, + count: 5, + color: starColor, + withAverageDistance: 4) +``` + +**Not Preferred**: +```swift +universe.generateStars(at: location, count: 5, color: starColor, withAverageDistance: 4) +``` + +
+ However, if the return value might be useful in some specific situations, it doesn't force one to use it (the `@discardableResult` annotation serves this purpose). Though, such return values are not encouraged. An engineer shall follow the principle of [the command-query separation](https://en.wikipedia.org/wiki/Command–query_separation). From 3582a53a6191ddd1a1bedb5579fac30251240449 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emin=20O=CC=88zkalayc=C4=B1og=CC=86lu?= Date: Thu, 25 Jan 2024 23:13:20 +0300 Subject: [PATCH 12/50] improve methods and arguments examples remove delegate example, edit UIControl action method names, edit long function invocations --- code_style_guideline/code_style_guideline.md | 41 ++++++-------------- 1 file changed, 12 insertions(+), 29 deletions(-) diff --git a/code_style_guideline/code_style_guideline.md b/code_style_guideline/code_style_guideline.md index 62a1380..80256c5 100644 --- a/code_style_guideline/code_style_guideline.md +++ b/code_style_guideline/code_style_guideline.md @@ -153,38 +153,21 @@ init(withName name: String, andID id: Int) -It's very common to force engineers to put an object of delegation as the first argument of delegation methods. This is not strictly necessary and is used only in cases when it makes sense. - -
-Examples - -**Preferred**: -``` -func buttonTapped(_ button: UIButton) -``` - -**Not Preferred**: -```swift -func screen(_ screen: UIViewController, hasButtonTapped button: UIButton) -``` - -
- UIKit's UIControl actions are called with the control's name in the beginning and the "action" word in the end:
Examples **Preferred**: -``` +```swift @objc -private func nextButtonTapped(_ sender: UIButton) { // ... +private func nextButtonAction(_ sender: UIButton) { // ... ``` **Not Preferred**: ```swift @objc -private func nextButtonAction(_ sender: UIButton) { // ... +private func nextButtonTapped(_ sender: UIButton) { // ... ```
@@ -238,13 +221,21 @@ Long function invocations should also break on each argument. Put the closing pa **Preferred**: ```swift +universe.generateStars(at: location, + count: 5, + color: starColor, + withAverageDistance: 4) +``` + +**Not Preferred**: +```swift universe.generate( 5, .stars, at: location) ``` -**Preferred**: +**Not Preferred**: ```swift universe.generateStars( at: location, @@ -270,14 +261,6 @@ universe.generateStars( ) ``` -**Not Preferred**: -```swift -universe.generateStars(at: location, - count: 5, - color: starColor, - withAverageDistance: 4) -``` - **Not Preferred**: ```swift universe.generateStars(at: location, count: 5, color: starColor, withAverageDistance: 4) From 07d0ec6b4a32f65c4874d7c543a58072659ee073 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emin=20O=CC=88zkalayc=C4=B1og=CC=86lu?= Date: Fri, 26 Jan 2024 17:52:06 +0300 Subject: [PATCH 13/50] change IBAction decision --- code_style_guideline/code_style_guideline.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code_style_guideline/code_style_guideline.md b/code_style_guideline/code_style_guideline.md index 80256c5..2747782 100644 --- a/code_style_guideline/code_style_guideline.md +++ b/code_style_guideline/code_style_guideline.md @@ -153,7 +153,7 @@ init(withName name: String, andID id: Int) -UIKit's UIControl actions are called with the control's name in the beginning and the "action" word in the end: +UIKit's UIControl actions are called with the control's name in the beginning and the "tapped" word in the end:
Examples @@ -161,13 +161,13 @@ UIKit's UIControl actions are called with the control's name in the beginning an **Preferred**: ```swift @objc -private func nextButtonAction(_ sender: UIButton) { // ... +private func nextButtonTapped(_ sender: UIButton) { // ... ``` **Not Preferred**: ```swift @objc -private func nextButtonTapped(_ sender: UIButton) { // ... +private func nextButtonAction(_ sender: UIButton) { // ... ```
From a808670939177f4aa0cc1758d369d1ecbf186efb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ey=C3=BCp=20Kaz=C4=B1m=20G=C3=B6ymen?= Date: Mon, 29 Jan 2024 14:34:15 +0300 Subject: [PATCH 14/50] Update code_style_guideline.md --- code_style_guideline/code_style_guideline.md | 148 +++++++++++++++++++ 1 file changed, 148 insertions(+) diff --git a/code_style_guideline/code_style_guideline.md b/code_style_guideline/code_style_guideline.md index 06ff976..2cc0a42 100644 --- a/code_style_guideline/code_style_guideline.md +++ b/code_style_guideline/code_style_guideline.md @@ -11,6 +11,7 @@ Our overarching goals are clarity, consistency and brevity, in that order. * [Using SwiftLint](#using-swiftlint) * [Naming](#naming) * [Prose](#prose) + * [Variables](#variables) * [Methods](#methods) * [Delegates](#delegates) * [Interface](#interface) @@ -115,6 +116,153 @@ For the above example using `UIGestureRecognizer`, 1 is unambiguous and preferre ![Methods in Xcode jump bar](screens/xcode-jump-bar.png) +### Variables +### 1. Booleans +Use one the **is**, **has** or **should** etc. prefixes to name a boolean to makes it clear that it is boolean and not other type. + +**Preferred**: +```swift + let isAddressAvailable = false + let hasPermissionChanged = true +``` + +**Not Preferred**: +```swift +let permissionChanged = false +let isProductHasContent = false +``` + +### 2. Declaration +Variable declaration should be lowerCamelCase. + +### 3. Type Inference +Don't include type information. + +**Preferred**: +```swift +let screenName = "" +let presenter = ScreenPresenter() +``` + +**Not Preferred**: +```swift +let screenName: String = "" +let presenter: ScreenPresenter = ScreenPresenter() +``` + +There might be some exceptions, like array and floating number declarations when explicitly needed. + +```swift +let products: [Product] = [] +let products: [Product] = .empty +let buttonOpacity: CGFloat = 1 +``` + +### 4. Let vs var +Always use let over var for immutable variables. + +### 5. Avoid Ambuguity +Name variables according to their roles, rather than their types. Include all the words needed to avoid ambiguity for a person reading code where the name is used. + +**Preferred**: +```swift +@IBOutlet private weak var iconImageView: UIImageView! +let isLowestPriceDurationActive = false +let greetingText = "Hello Trendyol!" +``` + +**Not Preferred**: +```swift +@IBOutlet private weak var icon: UIImageView! +let isDurationActive = false +let text = "Hello Trendyol!" +``` + +### 6. Naming from general part to specific part +Order names by starting with the most general part and ending with the most specific part. + +**Preferred**: +```swift +let borderRadius: CGFloat +let bodyMarginRight: CGFloat +``` + +**Not Preferred**: +```swift +let radiusBorder: CGFloat +let bodyRightMargin: CGFloat +``` + +### 7. Underscore Usage +Don't use underscore. + +**Preferred**: +```swift +let array: [String] = [] +let filteredArray: [String] = [] +``` + +**Not Preferred**: +```swift +let array: [String] = [] +let _array: [String] = [] +``` + +### 8. Static Properties +Static properties returning instances of their declaring type are not suffixed with the type's name. + +**Preferred**: +```swift +enum Constant { + enum InstallmentView { + static let backgroundColor: UIColor + static let cornerRadius: CGFloat + static let borderWidth: Double + } +} +``` + +**Not Preferred**: +```swift +enum Constant { + static let installmentViewBackgroundColor: UIColor + static let installmentViewCornerRadius: CGFloat + static let installmentViewBorderWidth: Double +} +``` + +### 9. Proper Nouns +Use lowercased naming if noun is being used as prefix, otherwise it should be uppercased. + +**Preferred**: +```swift + var utf8Bytes: [UTF8.CodeUnit] + var endpointURL: URL + var userSMTPServer: SecureSMTPServer +``` + +**Not Preferred**: +```swift + var endpointUrl: URL + var userSmtpServer: SecureSMTPServer +``` + +### 10. Computed Properties +Naming should be just like ordinary variable, not like functions. + +**Preferred**: +```swift +var productDetailDescriptionText: String { + ... +} +``` + +**Not Preferred**: +```swift +var makeProductDetailDescriptionText: String { + ... +} +``` ### Class Prefixes From 10a7ee59ec7b0ff4186607d9484894bfcf6e65b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emin=20O=CC=88zkalayc=C4=B1og=CC=86lu?= Date: Thu, 8 Feb 2024 11:52:43 +0300 Subject: [PATCH 15/50] add unused code topis --- code_style_guideline/code_style_guideline.md | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/code_style_guideline/code_style_guideline.md b/code_style_guideline/code_style_guideline.md index 06ff976..ed3465d 100644 --- a/code_style_guideline/code_style_guideline.md +++ b/code_style_guideline/code_style_guideline.md @@ -316,22 +316,26 @@ override func tableView(_ tableView: UITableView, numberOfRowsInSection section: **Not Preferred**: ```swift +override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + // #warning Incomplete implementation, return the number of rows + return Database.contacts.count +} +``` + +**Reason:** You called super method and you didn't implement any body. You don't need to override `didReceiveMemoryWarning` +```swift override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() - // Dispose of any resources that can be recreated. } +``` +**Reason:** numberOfSections's default value is `1`. +```swift override func numberOfSections(in tableView: UITableView) -> Int { - // #warning Incomplete implementation, return the number of sections return 1 } - -override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { - // #warning Incomplete implementation, return the number of rows - return Database.contacts.count -} - ``` + ### Minimal Imports Import only the modules a source file requires. For example, don't import `UIKit` when importing `Foundation` will suffice. Likewise, don't import `Foundation` if you must import `UIKit`. From 81e01263a1cd220b850873c47c29c61a0fc53093 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ey=C3=BCp=20Kaz=C4=B1m=20G=C3=B6ymen?= Date: Thu, 8 Feb 2024 14:02:09 +0300 Subject: [PATCH 16/50] Update code_style_guideline.md --- code_style_guideline/code_style_guideline.md | 82 +++++++++++++++++++- 1 file changed, 81 insertions(+), 1 deletion(-) diff --git a/code_style_guideline/code_style_guideline.md b/code_style_guideline/code_style_guideline.md index 06ff976..18d5c0c 100644 --- a/code_style_guideline/code_style_guideline.md +++ b/code_style_guideline/code_style_guideline.md @@ -16,7 +16,7 @@ Our overarching goals are clarity, consistency and brevity, in that order. * [Interface](#interface) * [Use Type Inferred Context](#use-type-inferred-context) * [Generics](#generics) - * [Class Prefixes](#class-prefixes) + * [Class and Structs](#class-struct) * [Language](#language) * [Code Organization](#code-organization) * [Protocol Conformance](#protocol-conformance) @@ -251,6 +251,86 @@ func write(to target: inout target) func swap(_ a: inout Thing, _ b: inout Thing) ``` +### Class and Structs +### 1. Controller Suffix +Don't use "Controller" in names of classes that aren't view controllers. + +### 2. Declaration +Use PascalCase for type names. + +### 3. Mock Naming +Use "Mock" prefix for entire mock classes. + +**Preferred**: +```swift +class MockPriceView: PriceViewInterface { } +``` + +**Not Preferred**: +```swift +class PriceView: PriceViewInterface { } +``` + +Don't use "controller" and "interface" suffixes for mock naming. + +**Preferred**: +```swift +class MockPriceView: PriceViewInterface { } +``` + +**Not Preferred**: +```swift +class MockPriceViewInterface: PriceViewInterface { } +class MockPriceViewController: PriceViewInterface { } +``` + +"Mock" prefix should be first rather than channel prefixes. + +**Preferred**: +```swift +class MockPDPTagView: PriceViewInterface { } +``` + +**Not Preferred**: +```swift +class PDPMockTagView: PriceViewInterface { } +``` + +### 4. Test Class Naming +Use "Tests" suffix for BaseXCTestCases. + +### 5. UI Related Class Naming +Use type constraint as suffix. + +**Preferred**: +```swift +class INTPriceView: UIView { } +class INTDescriptionCell: UICollectionViewCell { } +``` + +**Not Preferred**: +```swift +class INTPriceComponent: UIView { } +class INTDescriptionComponent: UICollectionViewCell { } +``` + +### 6. Version Suffixes +Use "V" suffix for versions of the classes. + +**Preferred**: +```swift +class ProductSliderCell { } +class ProductSliderCellV2 { } +class ProductSliderCellV3 { } +``` + +**Not Preferred**: +```swift +class ProductSliderCell { } +class ProductSliderCellNew { } +class ProductSliderCellRedesign { } +``` + ### Language Use US English spelling to match Apple's API. From cbb4b38df1d2c840756ed73f8a078faea91cc0e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ey=C3=BCp=20Kaz=C4=B1m=20G=C3=B6ymen?= Date: Thu, 15 Feb 2024 15:18:43 +0300 Subject: [PATCH 17/50] Update code_style_guideline.md --- code_style_guideline/code_style_guideline.md | 41 ++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/code_style_guideline/code_style_guideline.md b/code_style_guideline/code_style_guideline.md index 06ff976..b39f356 100644 --- a/code_style_guideline/code_style_guideline.md +++ b/code_style_guideline/code_style_guideline.md @@ -265,6 +265,47 @@ let color = "red" let colour = "red" ``` +### Protocol Conformance +### 1. AnyObject vs class +Use AnyObject instead of class in protocol definitions. + +### 2. Mark Usage +Use mark for protocol conformance. + +```swift +// MARK: - ViewInterface +extension MyViewController: ViewInterface { +... +} +``` + +### 3. Extension Usage +Prefer adding a separate extension for the protocol methods and each extension should confirm single protocol. If protocol/type is generic or don't require any implementation, it can be confirmed without extension. + +**Preferred**: +```swift +class MyViewController: UIViewController, Loadable { + // class stuff here +} + +// MARK: - UITableViewDataSource +extension MyViewController: UITableViewDataSource { + // table view data source methods +} + +// MARK: - UITableViewDelegate +extension MyViewController: UITableViewDelegate { + // scroll view delegate methods +} +``` + +**Not Preferred**: +```swift +extension MyViewController: UITableViewDelegate, UITableViewDataSource { + // scroll view delegate methods +} +``` + ## Code Organization Use extensions to organize your code into logical blocks of functionality. Each extension should be set off with a `// MARK: -` comment to keep things well-organized. From 540bfe84ce71d418f06bbc73c8ed0b24a0bfcfdd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tolga=20Y=C4=B1ld=C4=B1r=C4=B1m?= Date: Wed, 13 Mar 2024 17:24:44 +0300 Subject: [PATCH 18/50] Update code_style_guideline.md --- code_style_guideline/code_style_guideline.md | 28 ++++---------------- 1 file changed, 5 insertions(+), 23 deletions(-) diff --git a/code_style_guideline/code_style_guideline.md b/code_style_guideline/code_style_guideline.md index bdbd555..8d96df9 100644 --- a/code_style_guideline/code_style_guideline.md +++ b/code_style_guideline/code_style_guideline.md @@ -195,42 +195,24 @@ func namePickerShouldReload() -> Bool ### Interface -Classes and structures are named using noun phrases, as well as protocols describing what an object is. Protocols which add abilities are named descriptively (e.g., `Sortable`). Protocols should not have the word `Protocol` at the end of the name. Instead, conforming types should have a specifying word in the name, because protocols are general, but classes and structures are specific. - -Types implementing design patterns are usually named with the pattern name at the end (e.g., ViewBuilder, `DisplayingStrategy`). - -No prefixes shall be used (e.g., just `PriceCalculator` instead of `XYZPriceCalculator`), since there's no necessity for that in Swift - -**Preferred**: -```swift -protocol Engine { } -struct DefaultEngine: Engine { } -``` - -**Not Preferred**: -```swift -protocol EngineProtocol { } -struct Engine: EngineProtocol { } -``` - -If we want use as Interface as ViewInterface, We should use "Interface" postfix end of the protocol. If depents on the design pattern; +Classes and structures are named using noun phrases, as well as protocols describing what an object is. Protocols which add abilities are named descriptively (e.g., `Sortable`). Protocols should not have the word `Protocol` at the end of the name. Instead, conforming types should have a specifying word in the name with Interface suffix **Preferred**: ```swift +protocol EngineInterface { } +struct DefaultEngine: EngineInterface { } protocol AccountRouterInterface { } struct AccountRouter: AccountRouterInterface { } - private let router: AccountRouterInterface ``` - **Not Preferred**: ```swift +protocol EngineProtocol { } +struct Engine: EngineProtocol { } protocol AccountRouter { } protocol AccountRouterProtocol { } - private let router: AccountRouter ``` - Which introduced support for using the AnyObject keyword as a protocol constraint, recommends preferring AnyObject over class: > This proposal merges the concepts of class and AnyObject, which now have the same meaning: they represent an existential for classes. To get rid of the duplication, we suggest only keeping AnyObject around. To reduce source-breakage to a minimum, class could be redefined as typealias class = AnyObject and give a deprecation warning on class for the first version of Swift this proposal is implemented in. Later, class could be removed in a subsequent version of Swift. From 8e312e23741dff7f54d508d5fa6f969dc21df65b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tolga=20Y=C4=B1ld=C4=B1r=C4=B1m?= Date: Wed, 13 Mar 2024 17:27:43 +0300 Subject: [PATCH 19/50] Update code_style_guideline.md --- code_style_guideline/code_style_guideline.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code_style_guideline/code_style_guideline.md b/code_style_guideline/code_style_guideline.md index 8d96df9..bfd679d 100644 --- a/code_style_guideline/code_style_guideline.md +++ b/code_style_guideline/code_style_guideline.md @@ -219,12 +219,12 @@ Which introduced support for using the AnyObject keyword as a protocol constrain **Preferred**: ```swift -protocol Foo: class { } +protocol Foo: AnyObject { } ``` **Not Preferred**: ```swift -protocol Foo: AnyObject { } +protocol Foo: class { } ``` --- From 9bb15accb8a259a338b769d0be4ad9806bcabdee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=B0smail=20KILI=C3=87?= Date: Thu, 14 Mar 2024 23:48:27 -0700 Subject: [PATCH 20/50] Update code_style_guideline.md --- code_style_guideline/code_style_guideline.md | 49 +++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-) diff --git a/code_style_guideline/code_style_guideline.md b/code_style_guideline/code_style_guideline.md index 06ff976..a4dc4e9 100644 --- a/code_style_guideline/code_style_guideline.md +++ b/code_style_guideline/code_style_guideline.md @@ -804,7 +804,7 @@ let color = UIColor(displayP3Red: 1.0, green: 0.0, blue: 0.0, alpha: 1.0) ```swift let color: UIColor = .init(displayP3Red: 1.0, green: 0.0, blue: 0.0, alpha: 1.0) ``` - +--- ### Constants Constants are defined using the `let` keyword and variables with the `var` keyword. Always use `let` instead of `var` if the value of the variable will not change. @@ -833,6 +833,53 @@ let root2 = 1.41421356237309504880168872 let hypotenuse = side * root2 // what is root2? ``` +Use caseless enums for organizing **public** or **internal** constants and functions into namespaces. `SwiftFormat: enumNamespaces` + +- Avoid creating non-namespaced global constants and functions. +- Feel free to nest namespaces where it adds clarity. +- **private** globals are permitted, since they are scoped to a single file and do not pollute the global namespace. Consider placing private globals in an **enum** namespace to match the guidelines for other declaration types. + +For correct usage, We should use **enum** instead of **struct**. + +**Why?** Caseless `enums` work well as namespaces because they cannot be instantiated, which matches their intent. + +**Preferred**: +```swift +struct Environment { + struct Earth { + static let gravity = 9.8 + } + + struct Moon { + static let gravity = 1.6 + } +} +``` + +**Not Preferred**: +```swift +struct Environment { + static let earthGravity = 9.8 + static let moonGravity = 1.6 +} +``` + +**Note:** We should put constant under extension of class and class extension must be private + +**Preferred**: +```swift +private extension AccountPresenter { + enum Constant { + enum Date { + static let cobrandedOnboardingLastShownDateFormat: String = "yyyy-MM-dd" + } + + enum URL { + static let trendyolDeeplinkUrl = "ty://" + } + } + ``` +--- ### Static Methods and Variable Type Properties Static methods and type properties work similarly to global functions and global variables and should be used sparingly. They are useful when functionality is scoped to a particular type or when Objective-C interoperability is required. From 6d65088a71c3e7067e53177740ae54b30e4d89ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Osman=20Avni=20Ko=C3=A7o=C4=9Flu?= Date: Fri, 15 Mar 2024 10:31:07 +0300 Subject: [PATCH 21/50] Update code_style_guideline.md for final usage --- code_style_guideline/code_style_guideline.md | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/code_style_guideline/code_style_guideline.md b/code_style_guideline/code_style_guideline.md index 06ff976..4421b72 100644 --- a/code_style_guideline/code_style_guideline.md +++ b/code_style_guideline/code_style_guideline.md @@ -604,16 +604,17 @@ var diameter: Double { ### Final -Marking classes or members as `final` in tutorials can distract from the main topic and is not required. Nevertheless, use of `final` can sometimes clarify your intent and is worth the cost. In the below example, `Box` has a particular purpose and customization in a derived class is not intended. Marking it `final` makes that clear. +Default classes to final. +Details Why? If a class needs to be overridden, the author should opt into that functionality by omitting the final keyword. + +**Not Preferred**: ```swift -// Turn any generic type into a reference type using this Box class. -final class Box { - let value: T - init(_ value: T) { - self.value = value - } -} +class SettingsRepository { // ... } +``` +**Preferred**: +```swift +final class SettingsRepository { // ... } ``` ## Function Declarations From 13eefe717ff8768692b051683069569d85ef9015 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emin=20O=CC=88zkalayc=C4=B1og=CC=86lu?= Date: Wed, 20 Mar 2024 17:48:58 +0300 Subject: [PATCH 22/50] add omitting return topic --- code_style_guideline/code_style_guideline.md | 41 ++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/code_style_guideline/code_style_guideline.md b/code_style_guideline/code_style_guideline.md index 06ff976..b1b6835 100644 --- a/code_style_guideline/code_style_guideline.md +++ b/code_style_guideline/code_style_guideline.md @@ -332,6 +332,47 @@ override func tableView(_ tableView: UITableView, numberOfRowsInSection section: } ``` + +### Omitting Return + +Omit the return keyword when not required by the language. + +**Preferred**: +```swift +["1", "2", "3"].compactMap { Int($0) } + +var size: CGSize { + CGSize( + width: 100.0, + height: 100.0) +} + +func makeInfoAlert(message: String) -> UIAlertController { + UIAlertController( + title: "ℹ️ Info", + message: message, + preferredStyle: .alert) +} +``` + +**Not Preferred**: +```swift +["1", "2", "3"].compactMap { return Int($0) } + +var size: CGSize { + return CGSize( + width: 100.0, + height: 100.0) +} + +func makeInfoAlert(message: String) -> UIAlertController { + return UIAlertController( + title: "ℹ️ Info", + message: message, + preferredStyle: .alert) +} +``` + ### Minimal Imports Import only the modules a source file requires. For example, don't import `UIKit` when importing `Foundation` will suffice. Likewise, don't import `Foundation` if you must import `UIKit`. From e23c60c29289b59410a5a9294cb0ee67150aac1a Mon Sep 17 00:00:00 2001 From: Batuhan Saka Date: Wed, 20 Mar 2024 16:13:01 +0100 Subject: [PATCH 23/50] add control statements topic --- code_style_guideline/code_style_guideline.md | 192 ++++++++++++++++++- 1 file changed, 189 insertions(+), 3 deletions(-) diff --git a/code_style_guideline/code_style_guideline.md b/code_style_guideline/code_style_guideline.md index 06ff976..97f11ee 100644 --- a/code_style_guideline/code_style_guideline.md +++ b/code_style_guideline/code_style_guideline.md @@ -1179,6 +1179,10 @@ The Ternary operator, `?:` , should only be used when it increases clarity or co **Preferred**: ```swift +let destinationPlanet = solarSystem.hasPlanetsInHabitableZone + ? solarSystem.planetsInHabitableZone.first + : solarSystem.uninhabitablePlanets.first + let value = 5 result = value != 0 ? x : y @@ -1189,6 +1193,8 @@ result = isHorizontal ? x : y **Not Preferred**: ```swift +let destinationPlanet = solarSystem.hasPlanetsInHabitableZone ? solarSystem.planetsInHabitableZone.first : solarSystem.uninhabitablePlanets.first + result = a > b ? x = c > d ? c : d : y ``` @@ -1236,7 +1242,32 @@ switch direction { } ``` -## Golden Path +### Else Statements +**Preferred**: +```swift +if let galaxy { + … +} else if let bigBangService { + … +} else { + … +} +``` + +**Not Preferred**: +```swift +if let galaxy { + … +} +else if let bigBangService { + … +} +else { + … +} +``` + +### Golden Path When coding with conditionals, the left-hand margin of the code should be the "golden" or "happy" path. That is, don't nest `if` statements. Multiple return statements are OK. The `guard` statement is built for this. @@ -1305,7 +1336,6 @@ if let number1 = number1 { In any `guard`-statement, the `else` (and its left brace) goes on the same line after the last condition. - **Preferred**: ```swift guard !array.isEmpty else { @@ -1319,10 +1349,166 @@ guard !array.isEmpty // ... ``` -### Failing Guards +#### Failing Guards Guard statements are required to exit in some way. Generally, this should be simple one line statement such as `return`, `throw`, `break`, `continue`, and `fatalError()`. Large code blocks should be avoided. If cleanup code is required for multiple exit points, consider using a `defer` block to avoid cleanup code duplication. +#### Omit the right-hand side of the expression + +**Preferred**: +```swift +if let galaxy, + galaxy.name == "Milky Way" { +… +} + +guard let galaxy, + galaxy.name == "Milky Way" else { … } +``` + +**Not Preferred**: +```swift +if let galaxy = galaxy, + galaxy.name == "Milky Way" { +… +} + +guard let galaxy = galaxy, + galaxy.name == "Milky Way" else { … } +``` + +#### Add a line break after the assignment operator (=) before a multi-line if or switch expression + +**Preferred**: +```swift +let planetLocation = + if let star = planet.star { + "The \(star.name) system" + } else { + "Rogue planet" + } + +let planetType: PlanetType = + switch planet { + case .mercury, .venus, .earth, .mars: + .terrestrial + case .jupiter, .saturn, .uranus, .neptune: + .gasGiant + } +``` + +**Not Preferred**: +```swift +// Should have a line break after the first `=`. +let planetLocation = if let star = planet.star { + "The \(star.name) system" + } else { + "Rogue planet" +} + +// The first `=` should be on the line of the variable being assigned. +let planetLocation + = if let star = planet.star { + "The \(star.name) system" + } else { + "Rogue planet" + } + +// `switch` expression should be indented. +let planetLocation = +switch planet { +case .mercury, .venus, .earth, .mars: + .terrestrial +case .jupiter, .saturn, .uranus, .neptune: + .gasGiant +} +``` + +#### Insert a blank line following a switch case with a multi-line body + +**Preferred**: +```swift +// All of the cases have a trailing blank line. +func handle(_ action: SpaceshipAction) { + switch action { + case .engageWarpDrive: + navigationComputer.destination = targetedDestination + warpDrive.spinUp() + warpDrive.activate() + + case .enableArtificialGravity: + artificialGravityEngine.enable(strength: .oneG) + + case .scanPlanet(let planet): + scanner.target = planet + scanner.scanAtmosphere() + scanner.scanBiosphere() + scanner.scanForArtificialLife() + + case .handleIncomingEnergyBlast: + energyShields.engage() + } +} + +// Since none of the cases are multi-line, blank lines are not required. +func handle(_ action: SpaceshipAction) { + switch action { + case .engageWarpDrive: + warpDrive.engage() + case .enableArtificialGravity: + artificialGravityEngine.enable(strength: .oneG) + case .scanPlanet(let planet): + scanner.scan(planet) + case .handleIncomingEnergyBlast: + energyShields.engage() + } +} +``` + +**Not Preferred**: +```swift +// These switch cases should be followed by a blank line. +func handle(_ action: SpaceshipAction) { + switch action { + case .engageWarpDrive: + navigationComputer.destination = targetedDestination + warpDrive.spinUp() + warpDrive.activate() + case .enableArtificialGravity: + artificialGravityEngine.enable(strength: .oneG) + case .scanPlanet(let planet): + scanner.target = planet + scanner.scanAtmosphere() + scanner.scanBiosphere() + scanner.scanForArtificialLife() + case .handleIncomingEnergyBlast: + energyShields.engage() + } +} + +// While the `.enableArtificialGravity` case isn't multi-line, the other cases are. +// For consistency, it should also include a trailing blank line. +func handle(_ action: SpaceshipAction) { + switch action { + case .engageWarpDrive: + navigationComputer.destination = targetedDestination + warpDrive.spinUp() + warpDrive.activate() + + case .enableArtificialGravity: + artificialGravityEngine.enable(strength: .oneG) + case .scanPlanet(let planet): + scanner.target = planet + scanner.scanAtmosphere() + scanner.scanBiosphere() + scanner.scanForArtificialLife() + + case .handleIncomingEnergyBlast: + energyShields.engage() + } +} +``` + ## Semicolons Swift does not require a semicolon after each statement in your code. They are only required if you wish to combine multiple statements on a single line. From 7f19ea11adaf5773fdc3159c02afe6c33b363555 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ey=C3=BCp=20Kaz=C4=B1m=20G=C3=B6ymen?= Date: Thu, 21 Mar 2024 14:59:28 +0300 Subject: [PATCH 24/50] High order functions --- code_style_guideline/code_style_guideline.md | 93 ++++++++++++++++++++ 1 file changed, 93 insertions(+) diff --git a/code_style_guideline/code_style_guideline.md b/code_style_guideline/code_style_guideline.md index 06ff976..1dae43b 100644 --- a/code_style_guideline/code_style_guideline.md +++ b/code_style_guideline/code_style_guideline.md @@ -265,6 +265,99 @@ let color = "red" let colour = "red" ``` +### High Order Functions + +### 1. KeyPath +Prefer to use keypaths over providing closures. + +**Preferred**: +```swift +response.restaurants?.compactMap(\.id) +``` + +**Not Preferred**: +```swift +response.restaurants?.compactMap({ $0.id }) +``` + +### 2. Chaining +Move to new line per high order function. Also, take care of chaining performance, avoid multiple loops as much as possible. + +**Preferred**: +```swift +let value = numbers + .map { $0 * 2 } + .filter { $0 > 50 } + .map { $0 + 10 } + +attributes.contains { $0.key == filterAttribute.id } +``` + +**Not Preferred**: +```swift +let value = numbers.map { $0 * 2 }.filter { $0 > 50 }.map { $0 + 10 } + +attributes.map(\.key).contains($0.id) +``` + +### 3. Paranthesis +Prefer omitting paranthesis unless we need to put dot after the expression. + +**Preferred**: +```swift +planets.map { $0.name } +planets.first { $0.flag } +planets.first({ $0.flag }).name +``` + +**Not Preferred**: +```swift +planets.map({ $0.name }) +planets.first(where: { $0.flag }) +planets.first { $0.flag }.name +``` + +### 4. Passing method name as closure +Prefer to pass method name over closure. + +**Preferred**: +```swift +items.map(TargetModel.init) +items.forEach(checkFlags) +``` + +**Not Preferred**: +```swift +items.map { + TargetModel(item: $0) +} + +items.forEach { + checkFlags($0) +} +``` + +### 5. Prefering High Order Functions Over Traditional Loops +Prefer high order functions over traditional loops. + +**Preferred**: +```swift +items.map(TargetModel.init) +let filteredStamps = stamps.filter { $0.shouldShowOnSearch ?? true } +``` + +**Not Preferred**: +```swift +for item in items { + TargetModel(id: item.id) +} + +var filteredStamps: [Stamp] = [] +for stamp in stamps where stamp.shouldShowOnSearch == true { + filteredStamps.append(stamp) +} +``` + ## Code Organization Use extensions to organize your code into logical blocks of functionality. Each extension should be set off with a `// MARK: -` comment to keep things well-organized. From 09ee0e5361154616a20ad5b43430932167ed7336 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tolga=20Y=C4=B1ld=C4=B1r=C4=B1m?= Date: Fri, 22 Mar 2024 14:48:20 +0300 Subject: [PATCH 25/50] Update code_style_guideline.md https://docs.google.com/spreadsheets/d/1m1BsIjzCCpdDcFaNPXT-PvW2fwnUx7vKi7TkYP51MhI/edit#gid=1647914988 --- code_style_guideline/code_style_guideline.md | 63 +++++++------------- 1 file changed, 20 insertions(+), 43 deletions(-) diff --git a/code_style_guideline/code_style_guideline.md b/code_style_guideline/code_style_guideline.md index 06ff976..df5215a 100644 --- a/code_style_guideline/code_style_guideline.md +++ b/code_style_guideline/code_style_guideline.md @@ -956,12 +956,15 @@ private func makeLocationManager() -> CLLocationManager { - `[unowned self]` is not required here. A retain cycle is not created. - Location manager has a side-effect for popping up UI to ask the user for permission so fine grain control makes sense here. +___ ### Type Inference +___ Prefer compact code and let the compiler infer the type for constants or variables of single instances. Type inference is also appropriate for small, non-empty arrays and dictionaries. When required, specify the specific type such as `CGFloat` or `Int16`. -**Preferred**: +**Preferred:** + ```swift let message = "Click the button" let currentBounds = computeViewBounds() @@ -969,81 +972,55 @@ var names = ["Mic", "Sam", "Christine"] let maximumWidth: CGFloat = 106.5 ``` -**Not Preferred**: +**Not Preferred:** + ```swift let message: String = "Click the button" let currentBounds: CGRect = computeViewBounds() var names = [String]() ``` -#### Type Annotation for Empty Arrays and Dictionaries +## Type Annotation for Empty Arrays and Dictionaries -For empty arrays and dictionaries, use type annotation. (For an array or dictionary assigned to a large, multi-line literal, use type annotation.) +For empty arrays and dictionaries, use type annotation. For an array or dictionary assigned to a large, multi-line literal, use type annotation. + +**Preferred:** -**Preferred**: ```swift var names: [String] = [] var lookup: [String: Int] = [:] ``` -**Not Preferred**: +**Not Preferred:** + ```swift var names = [String]() var lookup = [String: Int]() ``` - -**NOTE**: Following this guideline means picking descriptive names is even more important than before. - -Array literals shall not contain spaces after the left square bracket and before the right one. The included items shall be listed one below another, aligned at the same level of indentation. The first element shall be on the declaration's line. The closing bracket shall go on the same line with the last item. However, if items are short and their sequence can be read easily (e.g., integer literals) it's acceptable to have them all on the one line. - -**Preferred**: -```swift -var numbers = [1, 2, 3] - -let airVehicles = [helicopter, - airLiner, - carrierRocket, - wings] -``` - -**Not Preferred**: -```swift -var numbers = [ - 1, - 2, - 3 -] - -let airVehicles = [helicopter, airLiner, carrierRocket, wings] -``` - -The option with braces on separate lines is used when elements don't fit the line width: - -**Preferred**: -```swift -let airVehicles = [ - assumeThisNameDoesNotFitTheLineWidth, - airLiner -] -``` +_Note: Following this guideline means picking descriptive names is even more important than before._ ### Syntactic Sugar +___ Prefer the shortcut versions of type declarations over the full generics syntax. -**Preferred**: +Prefer the shortcut versions of type declarations over the full generics syntax. + +**Preferred:** + ```swift var deviceModels: [String] var employees: [Int: String] var faxNumber: Int? ``` +**Not Preferred:** -**Not Preferred**: ```swift var deviceModels: Array var employees: Dictionary var faxNumber: Optional ``` +___ ## Functions vs Methods From 7a2e1d5e73f72b7cfaba1abaa0c549fad43d8ea3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emin=20O=CC=88zkalayc=C4=B1og=CC=86lu?= Date: Thu, 28 Mar 2024 17:43:47 +0300 Subject: [PATCH 26/50] add tuples topic --- code_style_guideline/code_style_guideline.md | 50 ++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/code_style_guideline/code_style_guideline.md b/code_style_guideline/code_style_guideline.md index 06ff976..2167566 100644 --- a/code_style_guideline/code_style_guideline.md +++ b/code_style_guideline/code_style_guideline.md @@ -765,6 +765,56 @@ let value = numbers .map {$0 + 10} ``` +## Tuples + +A tuple type is a comma-separated list of types, enclosed in parentheses. + +Name members of tuples for extra clarity. Rule of thumb: if you've got more than **3 fields**, you should probably be using a struct. + +**Preferred**: +```swift +func whatever() -> (x: Int, y: Int) { + return (x: 4, y: 4) +} + +func whatever2() -> (x: Int, y: Int) { + return (4, 4) +} + +let coord = whatever() +coord.x +coord.y +``` + +**Not Preferred**: +```swift +func whatever() -> (Int, Int) { + return (4, 4) +} +let thing = whatever() +print(thing.0) +``` + +**Preferred**: +```swift +struct Product { + let priceSet = (price: 100.0, discountedPrice: 80.0) +} + +let product = Product() +product.priceSet.discountedPrice // returns 80.0 +``` + +**Not Preferred**: +```swift +struct Product { + let priceSet = (100.0, 80.0) +} + +let product = Product() +product.priceSet.1 // returns 80.0 +``` + ## Types Always use Swift's native types and expressions when available. Swift offers bridging to Objective-C so you can still use the full set of methods as needed. From 1b55aee702c4a810dd4a78853ab5f70b26ecbe94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emin=20O=CC=88zkalayc=C4=B1og=CC=86lu?= Date: Thu, 28 Mar 2024 17:57:57 +0300 Subject: [PATCH 27/50] add parantheses and braces topic --- code_style_guideline/code_style_guideline.md | 71 ++++++++++++++++++++ 1 file changed, 71 insertions(+) diff --git a/code_style_guideline/code_style_guideline.md b/code_style_guideline/code_style_guideline.md index 06ff976..9a637b1 100644 --- a/code_style_guideline/code_style_guideline.md +++ b/code_style_guideline/code_style_guideline.md @@ -435,6 +435,77 @@ class TestDatabase : Database { * Add a single newline character at the end of each file. +## Parantheses & Braces + +### Parantheses + +Omit unnecessary parentheses. + +**Preferred**: +```swift +if name == "Hello" { + print("World") +} + +if userCount > 0 { ... } +switch someValue { ... } +let evens = userCounts.filter { number in number.isMultiple(of: 2) } + +if (x == 0 || y == 1) && z == 2 { + print("...") +} +``` + +**Not Preferred**: +```swift +if (name == "Hello") { + print("World") +} + +if (userCount > 0) { ... } +switch (someValue) { ... } +let evens = userCounts.filter { (number) in number.isMultiple(of: 2) } + +if ((x == 0 || y == 1) && z == 2) { + print("...") +} +``` + +### Braces + +The opening brace following a single-line expression should be on the same line as the rest of the statement. + +**Preferred**: +```swift +if !planet.isHabitable { + planet.terraform() +} + +class Planet { + func terraform() { + generateAtmosphere() + generateOceans() + } +} +``` + +**Not Preferred**: +```swift +if !planet.isHabitable +{ + planet.terraform() +} + +class Planet +{ + func terraform() + { + generateAtmosphere() + generateOceans() + } +} +``` + ## Comments When they are needed, use comments to explain **why** a particular piece of code does something. Comments must be kept up-to-date or deleted. From d43db742e9621a3ba93ec4e5b8a82fb140c8527e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emin=20O=CC=88zkalayc=C4=B1og=CC=86lu?= Date: Thu, 4 Apr 2024 14:58:37 +0300 Subject: [PATCH 28/50] add comments topic --- code_style_guideline/code_style_guideline.md | 102 +++++++++++++++++-- 1 file changed, 95 insertions(+), 7 deletions(-) diff --git a/code_style_guideline/code_style_guideline.md b/code_style_guideline/code_style_guideline.md index 06ff976..5dbd23d 100644 --- a/code_style_guideline/code_style_guideline.md +++ b/code_style_guideline/code_style_guideline.md @@ -267,7 +267,7 @@ let colour = "red" ## Code Organization -Use extensions to organize your code into logical blocks of functionality. Each extension should be set off with a `// MARK: -` comment to keep things well-organized. +Use extensions to organize your code into logical blocks of functionality. ### Protocol Conformance @@ -437,17 +437,105 @@ class TestDatabase : Database { ## Comments -When they are needed, use comments to explain **why** a particular piece of code does something. Comments must be kept up-to-date or deleted. +### Comment blocks should use single-line comments (// for code comments and /// for documentation comments), rather than multi-line comments (/* ... */ and /** ... */). -Avoid block comments inline with code, as the code should be as self-documenting as possible. _Exception: This does not apply to those comments used to generate documentation._ -If a commented code is changed, the comments shall be either updated or deleted. +**Preferred**: +```swift +/// A planet that exists somewhere in the universe. +/// +/// Planets have many properties. For example, the best planets +/// have atmospheres and bodies of water to support life. +class Planet { + /// Terraforms the planet, by adding an atmosphere and ocean that is hospitable for life. + func terraform() { + // Generate the atmosphere first, before generating the ocean. + // Otherwise, the water will just boil off immediately. + generateAtmosphere() + + // Now that we have an atmosphere, it's safe to generate the ocean + generateOceans() + } +} +``` -One-line comments start with `\\` (although `\\\` makes comments look "fancier" in IDE, it's reserved for HeaderDoc.) +**Not Preferred**: +```swift +/** +* A planet that exists somewhere in the universe. +* +* Planets have many properties. For example, the best planets +* have atmospheres and bodies of water to support life. +*/ +class Planet { + /** + Terraforms the planet, by adding an atmosphere and ocean that is hospitable for life. + */ + func terraform() { + /* + Generate the atmosphere first, before generating the ocean. + Otherwise, the water will just boil off immediately. + */ + generateAtmosphere() + + /* Now that we have an atmosphere, it's safe to generate the ocean */ + generateOceans() + } +} +``` + +### Include spaces or newlines before and after comment delimiters + +**Preferred**: +```swift +/// A spacecraft with incredible performance characteristics +struct Spaceship { + + func travelFasterThanLight() { /* unimplemented */ } + + func travelBackInTime() { } // TODO: research whether or not this is possible -Multi-line comments start with `\*` and end with `*\`. Comment delimiters are placed on separate lines. There's no blank lines after symbols denoting the beginning of comment and before ones at the end. +} +``` -Comments, both single- and multi-line, are placed on the line above the commented code and separated from a preceding code by a blank line. The latter is not relevant if a comment is the first line of the scope. Also, it's acceptable to place one-line comments at the end of the commented line of code, separating by a space, if and only if the comment doesn't make this line too long. +**Not Preferred**: +```swift +///A spacecraft with incredible performance characteristics +struct Spaceship { + + func travelFasterThanLight() {/*unimplemented*/} + + func travelBackInTime() { }//TODO: research whether or not this is possible + +} +``` + +### Each type and extension which implements a conformance should be preceded by a MARK comment. + +* Extensions that immediately follow the type being extended should omit that type's name and instead use // MARK: ProtocolName. +* If there is only one type or extension in a file, the MARK comment can be omitted. +* If the extension in question is empty (e.g. has no declarations in its body), the MARK comment can be omitted. +* For extensions that do not add new conformances, consider adding a MARK with a descriptive comment. + +```swift +class MyViewController: UIViewController { + ... +} + +// MARK: - ABCDelegate +extension MyViewController: ABCDelegate { + ... +} + +// MARK: - XYZDelegate +extension MyViewController: XYZDelegate { + ... +} + +private extension MyViewController { + ... +} +``` ## Explicit Documentation From 78ea04e6e7862eac4f638a7f6729654f5729bcab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ey=C3=BCp=20Kaz=C4=B1m=20G=C3=B6ymen?= Date: Thu, 18 Apr 2024 14:59:42 +0300 Subject: [PATCH 29/50] Update code_style_guideline.md for Closures --- code_style_guideline/code_style_guideline.md | 84 ++++++++++++++++++++ 1 file changed, 84 insertions(+) diff --git a/code_style_guideline/code_style_guideline.md b/code_style_guideline/code_style_guideline.md index 06ff976..9948c5b 100644 --- a/code_style_guideline/code_style_guideline.md +++ b/code_style_guideline/code_style_guideline.md @@ -251,6 +251,90 @@ func write(to target: inout target) func swap(_ a: inout Thing, _ b: inout Thing) ``` +### Closures + +### 1. Closure Complexity +Extract closure content to separate method if closure gets too complex. + +### 2. Void Usage +Prefer Void over (). You can also declare your own typealiases for closures for your own module. + +**Preferred**: +```swift +typealias IntHandler = (Int) -> Void +``` + +**Not Preferred**: +```swift +typealias IntHandler = (Int) -> () +``` + +### 3. Unused Closure Parameters +Use underscore for unused closure parameters. + +**Preferred**: +```swift +fetchUser() { _, param2 in + print(param2) +} +``` + +**Not Preferred**: +```swift +fetchUser() { param1, param2 in + print(param2) +} +``` + +### 4. Trailing Closure +Prefer trailing closure syntax if there's a single closure at the end of the arguments. If you have multiple arguments, declare closure as last argument. + +**Preferred**: +```swift +myMethod(productCount: 1) { + ... +} +``` + +**Not Preferred**: +```swift +myMethod(productCount: 1, completion: { + ... +}) +``` + +### 5. Single Expression Closure +Omit return if you have single expression in closure. + +**Preferred**: +```swift +users.first { user in + user.isLoggedIn +} +``` + +**Not Preferred**: +```swift +users.first { user in + return user.isLoggedIn +} +``` + +### 6. Lazy Closures +Prefer short syntax for single line lazy var declarations. + +**Preferred**: +```swift +lazy var item = Item() +``` + +**Not Preferred**: +```swift +lazy var item: Item = { + return Item() +}() +``` + ### Language Use US English spelling to match Apple's API. From ff5264ddcf008b97b761fc36bcd721882ca08155 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ey=C3=BCp=20Kaz=C4=B1m=20G=C3=B6ymen?= Date: Thu, 2 May 2024 16:42:28 +0300 Subject: [PATCH 30/50] Update code_style_guideline.md --- code_style_guideline/code_style_guideline.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/code_style_guideline/code_style_guideline.md b/code_style_guideline/code_style_guideline.md index 06ff976..e487e9a 100644 --- a/code_style_guideline/code_style_guideline.md +++ b/code_style_guideline/code_style_guideline.md @@ -265,6 +265,21 @@ let color = "red" let colour = "red" ``` +### String Concatenation + +### 1. String(format:) usage +Prefer "\()" over String(format:). + +**Preferred**: +```swift +return "user name: \(user.name), user id: \(user.id), user height: \(length)" +``` + +**Not Preferred**: +```swift +return String(format: "user name: %@, user id: %d, user height: %f", user.name, user.id, length) +``` + ## Code Organization Use extensions to organize your code into logical blocks of functionality. Each extension should be set off with a `// MARK: -` comment to keep things well-organized. From 02ec62e1dff9aa73e9c6c68d4068974d73f6e155 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emin=20O=CC=88zkalayc=C4=B1og=CC=86lu?= Date: Mon, 6 May 2024 17:18:13 +0300 Subject: [PATCH 31/50] Update code_style_guideline.md for file organization --- code_style_guideline/code_style_guideline.md | 206 +++++++++++++++++++ 1 file changed, 206 insertions(+) diff --git a/code_style_guideline/code_style_guideline.md b/code_style_guideline/code_style_guideline.md index 06ff976..9796a51 100644 --- a/code_style_guideline/code_style_guideline.md +++ b/code_style_guideline/code_style_guideline.md @@ -265,6 +265,212 @@ let color = "red" let colour = "red" ``` +## File Organization + +### Alphabetize and deduplicate module imports within a file. Place all imports at the top of the file below the header comments. + +**Why**: A standard organization method helps engineers more quickly determine which modules a file depends on. +Duplicated import statements have no effect and should be removed for clarity. + +**Not Preferred**: +```swift +// Copyright © 2024 Trendyol. All rights reserved. +// + +import TYCoreUtils +import Foundation +import CommonKit +import AccessibilityKit + +import MemberKit +``` + +**Preferred**: +```swift +// Copyright © 2024 Trendyol. All rights reserved. +// + +import AccessibilityKit +import CommonKit +import Foundation +import MemberKit +import TYCoreUtils +``` + +#### @testable usage + +**Preferred**: +```swift +// Copyright © 2024 Trendyol. All rights reserved. +// + +import AccessibilityKit +import CommonKit +import Foundation +import MemberKit +import TYCoreUtils + +@testable import Trendyol +``` + +**Also Preferred**: +```swift +// Copyright © 2024 Trendyol. All rights reserved. +// + +import AccessibilityKit +import CommonKit +import Foundation +import MemberKit +@testable import Trendyol +import TYCoreUtils +``` + +### Limit consecutive whitespace to one blank line or space (excluding indentation) + +**Not Preferred**: +```swift +struct Planet { + let mass: Double + let hasAtmosphere: Bool + + + func distance(to: Planet) { } +} +``` + +**Preferred**: +```swift +struct Planet { + let mass: Double + let hasAtmosphere: Bool + + func distance(to: Planet) { } +} +``` + +### Declarations that include scopes spanning multiple lines should be separated from adjacent declarations in the same scope by a newline. + +Insert a single blank line between multi-line scoped declarations (e.g. types, extensions, functions, computed properties, etc.) and other declarations at the same indentation level. + +**Why**: Dividing scoped declarations from other declarations at the same scope visually separates them, making adjacent declarations easier to differentiate from the scoped declaration. + +**Not Preferred**: +```swift +struct SolarSystem { + var numberOfPlanets: Int { + … + } + func distance(to: SolarSystem) -> AstronomicalUnit { + … + } +} +struct Galaxy { + func distance(to: Galaxy) -> AstronomicalUnit { + … + } + func contains(_ solarSystem: SolarSystem) -> Bool { + … + } +} +``` + +**Preferred**: +```swift +struct SolarSystem { + var numberOfPlanets: Int { + … + } + + func distance(to: SolarSystem) -> AstronomicalUnit { + … + } +} + +struct Galaxy { + func distance(to: Galaxy) -> AstronomicalUnit { + … + } + + func contains(_ solarSystem: SolarSystem) -> Bool { + … + } +} +``` + +### Remove blank lines at the top and bottom of scopes, excluding type bodies which can optionally include blank lines. + +**Not Preferred**: +```swift +class Planet { + func terraform() { + + generateAtmosphere() + generateOceans() + + } +} +``` + +**Preferred**: +```swift +class Planet { + func terraform() { + generateAtmosphere() + generateOceans() + } +} +``` + +### Within each top-level section, place content in the following order. This allows a new reader of your code to more easily find what they are looking for. + +* Nested types and type aliases +* Static properties +* Class properties +* Instance properties +* Static methods +* Class methods +* Instance methods + +### Add empty lines between property declarations of different kinds. (e.g. between static properties and instance properties.) + +**Not Preferred**: +```swift +static let gravityEarth: CGFloat = 9.8 +static let gravityMoon: CGFloat = 1.6 +var gravity: CGFloat +``` + +**Preferred**: +```swift +static let gravityEarth: CGFloat = 9.8 +static let gravityMoon: CGFloat = 1.6 + +var gravity: CGFloat +``` + +### Computed properties and properties with property observers should appear at the end of the set of declarations of the same kind. (e.g. instance properties.) + +**Not Preferred**: +```swift +var atmosphere: Atmosphere { + didSet { + print(""oh my god, the atmosphere changed"") + } +} +var gravity: CGFloat +``` + +**Preferred**: +```swift +var gravity: CGFloat +var atmosphere: Atmosphere { + didSet { + print(""oh my god, the atmosphere changed"") + } +} +``` + ## Code Organization Use extensions to organize your code into logical blocks of functionality. Each extension should be set off with a `// MARK: -` comment to keep things well-organized. From ec04175789b76ebddff483ef37e82eaf2e4d4b84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emin=20O=CC=88zkalayc=C4=B1og=CC=86lu?= Date: Mon, 6 May 2024 18:26:35 +0300 Subject: [PATCH 32/50] remove extra quotes --- code_style_guideline/code_style_guideline.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code_style_guideline/code_style_guideline.md b/code_style_guideline/code_style_guideline.md index 9796a51..77a4e06 100644 --- a/code_style_guideline/code_style_guideline.md +++ b/code_style_guideline/code_style_guideline.md @@ -455,7 +455,7 @@ var gravity: CGFloat ```swift var atmosphere: Atmosphere { didSet { - print(""oh my god, the atmosphere changed"") + print("oh my god, the atmosphere changed") } } var gravity: CGFloat @@ -466,7 +466,7 @@ var gravity: CGFloat var gravity: CGFloat var atmosphere: Atmosphere { didSet { - print(""oh my god, the atmosphere changed"") + print("oh my god, the atmosphere changed") } } ``` From 747718f540d49d598968e3f8d28a096971689d3a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Osman=20Avni=20Ko=C3=A7o=C4=9Flu?= Date: Thu, 9 May 2024 14:46:04 +0300 Subject: [PATCH 33/50] Update code_style_guideline.md for access control --- code_style_guideline/code_style_guideline.md | 123 +++++++++++++++++-- 1 file changed, 114 insertions(+), 9 deletions(-) diff --git a/code_style_guideline/code_style_guideline.md b/code_style_guideline/code_style_guideline.md index 06ff976..2d4c0b0 100644 --- a/code_style_guideline/code_style_guideline.md +++ b/code_style_guideline/code_style_guideline.md @@ -1108,30 +1108,135 @@ resource.request().onComplete { [weak self] response in ## Access Control -Full access control annotation in tutorials can distract from the main topic and is not required. Using `private` and `fileprivate` appropriately, however, adds clarity and promotes encapsulation. Prefer `private` to `fileprivate`; use `fileprivate` only when the compiler insists. +#### 1. General +Omitting an explicit access level is permitted on declarations. For top-level declarations, the default access level is internal. For nested declarations, the default access level is the lesser of internal and the access level of the enclosing declaration. The default access modifier, namely internal, is not specified explicitly (as well as any other default, in general). class type members are rarely useful because of discouraged use of inheritance, especially for static members. An engineer must be aware of the use-cases of class and static modifiers (confusing them is a common mistake.) Generally, encapsulation is honored in any way. E.g., @IBOutlet properties and @IBAction methods are always private. Implementation details are hidden behind meaningful API. 3.2.2 The access modifier keyword should not be on a line by itself - keep it inline with what it is describing. -Only explicitly use `open`, `public`, and `internal` when you require a full access control specification. +**Not Preferred**: +```swift +open class Pirate { /* ... */ } +``` -Use access control as the leading property specifier. The only things that should come before access control are the `static` specifier or attributes such as `@IBAction`, `@IBOutlet` and `@discardableResult`. +**Preferred**: +```swift +open class Pirate { /* ... */ } +``` +#### 2. RedundantInternal + +Omit the internal keyword when defining types, properties, or functions with an internal access control level. + +**Not Preferred**: +```swift +internal class Spaceship { + internal init() { … } + internal func travel(to planet: Planet) { … } + } + ``` + **Preferred**: +Because internal access control is implied if no other access control level is specified. +```swift + +class Spaceship { + init() { … } + func travel(to planet: Planet) { … } + } +``` + +#### 3. RedundantFileprivate + +Access control should be at the strictest level possible. Prefer public to open and private to fileprivate unless you need that behavior. + +**Not Preferred**: +```swift +public struct Spaceship { + // WRONG: `engine` is used in `extension Spaceship` below, + // but extensions in the same file can access `private` members. + fileprivate let engine: AntimatterEngine + +// WRONG: `hull` is not used by any other type, so `fileprivate` is unnecessary. + fileprivate let hull: Hull +``` + ```swift -private let message = "Great Scott!" +extension Spaceship { +public func blastOff() { + engine.start() + } +} + extension Pilot { + public func chartCourse() { + spaceship.navigation.course = .andromedaGalaxy spaceship.blastOff() + } + } +``` +**Preferred**: +Because internal access control is implied if no other access control level is specified. +```swift +// RIGHT: `navigation` is used in `extension Pilot` below, +// so `fileprivate` is necessary here. + fileprivate let navigation: SpecialRelativityNavigationService + +public struct Spaceship { + fileprivate let navigation: SpecialRelativityNavigationService + private let engine: AntimatterEngine + private let hull: Hull +} + +extension Spaceship { + public func blastOff() { + engine.start() + } + } -class TimeMachine { - private dynamic lazy var fluxCapacitor = FluxCapacitor() +extension Pilot { +public func chartCourse() { + spaceship.navigation.course = .andromedaGalaxy spaceship.blastOff() + } } ``` +#### 4. ExtensionAccessControl +Specifying an explicit access level at the file level on an extension is forbidden. Each member of the extension has its access level specified if it is different than the default. + **Not Preferred**: ```swift -fileprivate let message = "Great Scott!" +public extension String { + var isUppercase: Bool { + // ... + } + var isLowercase: Bool { + // ... + } +} +``` -class TimeMachine { - lazy dynamic private var fluxCapacitor = FluxCapacitor() +**Preferred**: +```swift +extension String { + public var isUppercase: Bool { + // ... + } + public var isLowercase: Bool { + // ... + } } ``` +#### 5. Access +Use access control as the leading property specifier. The only things that should come before access control are the static specifier or attributes such as @IBAction, @IBOutlet and @discardableResult. 3.2.1 Write the access modifier keyword first if it is needed. + +**Not Preferred**: +```swift +static private let myPrivateNumber: Int +``` + +**Preferred**: +```swift +private static let myPrivateNumber: Int + +``` + ## Control Flow Prefer the `for-in` style of `for` loop over the `while-condition-increment` style. From 9f13f6e57ffd606a537192bb6c52c0b3d4642b58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Osman=20Avni=20Ko=C3=A7o=C4=9Flu?= Date: Thu, 9 May 2024 16:30:11 +0300 Subject: [PATCH 34/50] Update code_style_guideline.md for --- code_style_guideline/code_style_guideline.md | 48 +++++++++++++------- 1 file changed, 31 insertions(+), 17 deletions(-) diff --git a/code_style_guideline/code_style_guideline.md b/code_style_guideline/code_style_guideline.md index 06ff976..6b8139c 100644 --- a/code_style_guideline/code_style_guideline.md +++ b/code_style_guideline/code_style_guideline.md @@ -1174,38 +1174,52 @@ while i < attendeeList.count { ### Ternary Operator -The Ternary operator, `?:` , should only be used when it increases clarity or code neatness. A single condition is usually all that should be evaluated. Evaluating multiple conditions is usually more understandable as an `if` statement or refactored into instance variables. In general, the best use of the ternary operator is during assignment of a variable and deciding which value to use. - -**Preferred**: +1. Long ternary operator expressions should wrap before the ? and before the :, putting each conditional branch on a separate line. SwiftFormat: wrap +**Not Preferred**: ```swift -let value = 5 -result = value != 0 ? x : y - -let isHorizontal = true -result = isHorizontal ? x : y -``` +// WRONG (too long) -**Not Preferred**: + let destinationPlanet = solarSystem.hasPlanetsInHabitableZone ? solarSystem.planetsInHabitableZone.first : solarSystem.uninhabitablePlanets.first + let result = a > b ? x = c > d ? c : d : y + +// WRONG (naive wrapping) +let destinationPlanet = solarSystem.hasPlanetsInHabitableZone ? solarSystem.planetsInHabitableZone.first : solarSystem.uninhabitablePlanets.first +// WRONG (unbalanced operators) +let destinationPlanet = solarSystem.hasPlanetsInHabitableZone ? solarSystem.planetsInHabitableZone.first : solarSystem.uninhabitablePlanets.first +``` +**Preferred**: ```swift -result = a > b ? x = c > d ? c : d : y +let destinationPlanet = solarSystem.hasPlanetsInHabitableZone +? solarSystem.planetsInHabitableZone.first +: solarSystem.uninhabitablePlanets.first ``` -The ternary operator `?`-`:` shall not be used where the single `if`-check is sufficient, because although it can save lines, it makes the intention unclear and spawns extra entities (empty tuples or functions). +2. If we have huge logic and code, we should use if condition instead of ternary operator **Preferred**: ```swift -if error == nil { - completion() +let result: Bool + +if IamOldIfElse { + result = true +} else { + result = false } ``` +3. By using ternary operator, we were able to get rid of many lines of code. But some developers find the ternary operator hard to read so for those, Swift 5.9 improved the if else statement to be on one single line for the single statements: + **Not Preferred**: ```swift -error == nil - ? completion() - : () +let result = IamTernary ? true : false +``` + +**Preferred**: +```swift +let result = if IamNewIfElse { true } else { false } + ``` ### Switch Statements From f35a8a05bffd6a3b810d8642dc55b3a1d0016f56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=B0smail=20KILI=C3=87?= Date: Thu, 9 May 2024 13:29:23 -0700 Subject: [PATCH 35/50] Update code_style_guideline.md for Enums --- code_style_guideline/code_style_guideline.md | 327 +++++++++++++++++++ 1 file changed, 327 insertions(+) diff --git a/code_style_guideline/code_style_guideline.md b/code_style_guideline/code_style_guideline.md index 06ff976..5d4b0ec 100644 --- a/code_style_guideline/code_style_guideline.md +++ b/code_style_guideline/code_style_guideline.md @@ -38,6 +38,7 @@ Our overarching goals are clarity, consistency and brevity, in that order. * [Constants](#constants) * [Static Methods and Variable Type Properties](#static-methods-and-variable-type-properties) * [Optionals](#optionals) + * [Enums](#enums) * [Lazy Initialization](#lazy-initialization) * [Type Inference](#type-inference) * [Syntactic Sugar](#syntactic-sugar) @@ -936,6 +937,332 @@ let product = try XCTUnwrap(priceComparisonResponse.stores?.first?.products?.fir let product = priceComparisonResponse.stores!.first!.products!.first! ``` +### Enums +Omit enum associated values from case statements when all arguments are unlabeled. SwiftLint: **empty_enum_arguments** + +**Not Preferred**: +```swift +if case .done(_) = result { ... } + +switch animal { +case .dog(_, _, _): + ... +} +``` + +**Preferred**: +```swift +if case .done = result { ... } + +switch animal { +case .dog: + ... +} +``` +When destructuring an enum case or a tuple, place the let keyword inline, adjacent to each individual property assignment. SwiftFormat: **hoistPatternLet** + +**Not Preferred**: +```swift +switch result { +case let .success(value): + // ... +case let .error(errorCode, errorReason): + // ... +} + +// WRONG +guard let case .success(value) else { + return +} +``` + +**Preferred**: +```swift +switch result { +case .success(let value): + // ... +case .error(let errorCode, let errorReason): + // ... +} + +// RIGHT +guard case .success(let value) else { + return +} +``` + +**Notes:** +Clarity: Inlining the let keyword makes it more clear which identifiers are part of the conditional check and which identifiers are binding new variables, since the let keyword is always adjacent to the variable identifier. +```swift +// `let` is adjacent to the variable identifier, so it is immediately obvious +// at a glance that these identifiers represent new variable bindings +case .enumCaseWithSingleAssociatedValue(let string): +case .enumCaseWithMultipleAssociatedValues(let string, let int): + +// The `let` keyword is quite far from the variable identifiers, +// so it is less obvious that they represent new variable bindings +case let .enumCaseWithSingleAssociatedValue(string): +case let .enumCaseWithMultipleAssociatedValues(string, int):" +``` +##### Enum Namespaces +Use caseless enums for organizing public or internal constants and functions into namespaces. SwiftFormat: **enumNamespaces** + + + Avoid creating non-namespaced global constants and functions. + + Feel free to nest namespaces where it adds clarity. + + private globals are permitted, since they are scoped to a single file and do not pollute the global namespace. Consider placing private globals in an enum namespace to match the guidelines for other declaration types. + +Caseless enums work well as namespaces because they cannot be instantiated, which matches their intent. + +**Not Preferred**: +```swift +struct Environment { + static let earthGravity = 9.8 + static let moonGravity = 1.6 +} + +// WRONG +struct Environment { + struct Earth { + static let gravity = 9.8 + } + + struct Moon { + static let gravity = 1.6 + } +} +``` +**Not Preferred**: +```swift +// RIGHT +enum Environment { + enum Earth { + static let gravity = 9.8 + } + + enum Moon { + static let gravity = 1.6 + } +} +``` + +Use Swift's automatic enum values unless they map to an external source. Add a comment explaining why explicit values are defined. SwiftFormat: **redundantRawValues** + +Why? +To minimize user error, improve readability, and write code faster, rely on Swift's automatic enum values. If the value maps to an external source (e.g. it's coming from a network request) or is persisted across binaries, however, define the values explicitly, and document what these values are mapping to. + +This ensures that if someone adds a new value in the middle, they won't accidentally break things. + + **Not Preferred**: +```swift +// WRONG +enum ErrorType: String { + case error = "error" + case warning = "warning" +} + +// WRONG +enum UserType: String { + case owner + case manager + case member +} + +// WRONG +enum Planet: Int { + case mercury = 0 + case venus = 1 + case earth = 2 + case mars = 3 + case jupiter = 4 + case saturn = 5 + case uranus = 6 + case neptune = 7 +} + +// WRONG +enum ErrorCode: Int { + case notEnoughMemory + case invalidResource + case timeOut +} +``` + **Preferred**: +```swift +// RIGHT +// Relying on Swift's automatic enum values +enum ErrorType: String { + case error + case warning +} + +// RIGHT +/// These are written to a logging service. Explicit values ensure they're consistent across binaries. +// swiftformat:disable redundantRawValues +enum UserType: String { + case owner = "owner" + case manager = "manager" + case member = "member" +} +// swiftformat:enable redundantRawValues + +// RIGHT +// Relying on Swift's automatic enum values +enum Planet: Int { + case mercury + case venus + case earth + case mars + case jupiter + case saturn + case uranus + case neptune +} + +// RIGHT +/// These values come from the server, so we set them here explicitly to match those values. +enum ErrorCode: Int { + case notEnoughMemory = 0 + case invalidResource = 1 + case timeOut = 2 +} +``` + +Dont use the default case when switching over an enum. + +Why? +Enumerating every case requires developers and reviewers have to consider the correctness of every switch statement when new cases are added. + **Preferred**: +```swift +switch anEnum { +case .a: +// Do something +default: +// Do something else. +} +``` + **Preferred**: +```swift +switch anEnum { +case .a: +// Do something +case .b, .c: +// Do something else. +} +``` + When all cases of an `enum` must be `indirect`, the `enum` itself is declared `indirect` and the keyword is omitted on the individual cases. + +**Preferred**: +```swift +public indirect enum DependencyGraphNode { + case userDefined(dependencies: [DependencyGraphNode]) + case synthesized(dependencies: [DependencyGraphNode]) +} +``` +**Not Preferred**: +```swift +public enum DependencyGraphNode { + indirect case userDefined(dependencies: [DependencyGraphNode]) + indirect case synthesized(dependencies: [DependencyGraphNode]) +} +``` +When an enum case does not have associated values, empty parentheses are never present. + + **Preferred**: +```swift +public enum BinaryTree { + indirect case node(element: Element, left: BinaryTree, right: BinaryTree) + case empty // GOOD. +} +``` +**Not Preferred**: +```swift +public enum BinaryTree { + indirect case node(element: Element, left: BinaryTree, right: BinaryTree) + case empty() // AVOID. +} +``` +In general, there is only one case per line in an enum. The comma-delimited form may be used only when none of the cases have associated values or raw values, all cases fit on a single line, and the cases do not need further documentation because their meanings are obvious from their names. + + **Not Preferred**: +```swift +public enum Token { + case comma + case semicolon + case identifier +} + +public enum Token { + case comma, semicolon, identifier +} + +public enum Token { + case comma + case semicolon + case identifier(String) +} +``` + + **Not Preferred**: +```swift +public enum Token { + case comma, semicolon, identifier(String) +} +``` + +The cases of an enum must follow a logical ordering that the author could explain if asked. If there is no obviously logical ordering, use a lexicographical ordering based on the cases’ names. + +In the following example, the cases are arranged in numerical order based on the underlying HTTP status code and blank lines are used to separate groups. + + **Preferred**: +```swift +public enum HTTPStatus: Int { + case ok = 200 + + case badRequest = 400 + case notAuthorized = 401 + case paymentRequired = 402 + case forbidden = 403 + case notFound = 404 + + case internalServerError = 500 +} + +``` + +The following version of the same enum is less readable. Although the cases are ordered lexicographically, the meaningful groupings of related values has been lost. + + **Not Preferred**: +```swift +public enum HTTPStatus: Int { + case badRequest = 400 + case forbidden = 403 + case internalServerError = 500 + case notAuthorized = 401 + case notFound = 404 + case ok = 200 + case paymentRequired = 402 +} +``` + +`Enum` naming should not be plural, it should be `singular` + +**Preferred**: +```swift +public enum Token { + case comma + case semicolon + case identifier +} +``` +**Not Preferred**: +```swift +public enum Tokens { + case comma + case semicolon + case identifier +} +``` + ### Lazy Initialization Consider using lazy initialization for finer grained control over object lifetime. This is especially true for `UIViewController` that loads views lazily. You can either use a closure that is immediately called `{ }()` or call a private factory method. Example: From 286e555ccda2c253ee9e90bf96c4e8cfc57b0537 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=B0smail=20KILI=C3=87?= Date: Thu, 9 May 2024 13:31:55 -0700 Subject: [PATCH 36/50] Update code_style_guideline.md --- code_style_guideline/code_style_guideline.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code_style_guideline/code_style_guideline.md b/code_style_guideline/code_style_guideline.md index 5d4b0ec..1febbbe 100644 --- a/code_style_guideline/code_style_guideline.md +++ b/code_style_guideline/code_style_guideline.md @@ -1002,7 +1002,7 @@ case .enumCaseWithMultipleAssociatedValues(let string, let int): // The `let` keyword is quite far from the variable identifiers, // so it is less obvious that they represent new variable bindings case let .enumCaseWithSingleAssociatedValue(string): -case let .enumCaseWithMultipleAssociatedValues(string, int):" +case let .enumCaseWithMultipleAssociatedValues(string, int): ``` ##### Enum Namespaces Use caseless enums for organizing public or internal constants and functions into namespaces. SwiftFormat: **enumNamespaces** From 39ec91683c6bc931c7f4d0b2d61907e84a53d683 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=B0smail=20KILI=C3=87?= Date: Thu, 9 May 2024 13:50:32 -0700 Subject: [PATCH 37/50] Update code_style_guideline.md for typealiases --- code_style_guideline/code_style_guideline.md | 101 +++++++++++++++++++ 1 file changed, 101 insertions(+) diff --git a/code_style_guideline/code_style_guideline.md b/code_style_guideline/code_style_guideline.md index 06ff976..3a9850b 100644 --- a/code_style_guideline/code_style_guideline.md +++ b/code_style_guideline/code_style_guideline.md @@ -40,6 +40,7 @@ Our overarching goals are clarity, consistency and brevity, in that order. * [Optionals](#optionals) * [Lazy Initialization](#lazy-initialization) * [Type Inference](#type-inference) + * [Typealiases](#Typealiases) * [Syntactic Sugar](#syntactic-sugar) * [Functions vs Methods](#functions-vs-methods) * [Memory Management](#memory-management) @@ -956,6 +957,106 @@ private func makeLocationManager() -> CLLocationManager { - `[unowned self]` is not required here. A retain cycle is not created. - Location manager has a side-effect for popping up UI to ask the user for permission so fine grain control makes sense here. +### Typealiases + +"Long type aliases of protocol compositions should wrap before the = and before each individual &. SwiftFormat: wrapArguments + +**Not Preferred**: +```swift +// WRONG (too long) +public typealias Dependencies = CivilizationServiceProviding & LawsOfPhysicsProviding & PlanetBuilderProviding & UniverseBuilderProviding & UniverseSimulatorServiceProviding + +// WRONG (naive wrapping) +public typealias Dependencies = CivilizationServiceProviding & LawsOfPhysicsProviding & PlanetBuilderProviding & + UniverseBuilderProviding & UniverseSimulatorServiceProviding + +// WRONG (unbalanced) +public typealias Dependencies = CivilizationServiceProviding + & LawsOfPhysicsProviding + & PlanetBuilderProviding + & UniverseBuilderProviding + & UniverseSimulatorServiceProviding +``` +**Preferred**: +```swift +public typealias Dependencies + = CivilizationServiceProviding + & LawsOfPhysicsProviding + & PlanetBuilderProviding + & UniverseBuilderProviding + & UniverseSimulatorServiceProviding" +``` + +Sort protocol composition type aliases alphabetically. SwiftFormat: sortTypealiases + +Protocol composition type aliases are an unordered list with no natural ordering. Sorting alphabetically keeps these lists more organized, which is especially valuable for long protocol compositions. + +**Not Preferred**: +```swift +// WRONG (not sorted) +public typealias Dependencies + = UniverseBuilderProviding + & LawsOfPhysicsProviding + & UniverseSimulatorServiceProviding + & PlanetBuilderProviding + & CivilizationServiceProviding +``` +**Preferred**: +```swift +// RIGHT +public typealias Dependencies + = CivilizationServiceProviding + & LawsOfPhysicsProviding + & PlanetBuilderProviding + & UniverseBuilderProviding + & UniverseSimulatorServiceProviding" +``` +If a function returns multiple values, prefer returning a tuple to using inout arguments (it’s best to use labeled tuples for clarity on what you’re returning if it is not otherwise obvious). If you use a certain tuple more than once, consider using a typealias. If you’re returning 3 or more items in a tuple, consider using a struct or class instead. + +**Not Preferred**: +```swift +func pirateName() -> (firstName: String, lastName: String, age: Int) { + return (""Guybrush"", ""Threepwood"", 32) +} + +let name = pirateName() +let firstName = name.firstName +let lastName = name.lastName +``` +**Preferred**: +```swift +func pirateName() -> (firstName: String, lastName: String) { + return (""Guybrush"", ""Threepwood"") +} + +let name = pirateName() +let firstName = name.firstName +let lastName = name.lastName + +typealias UserInfo = (firstName: String, lastName: String, age: Int) + +func pirateName() -> UserInfo { + return (""Guybrush"", ""Threepwood"", 23) +} + +let name = pirateName() +let firstName = name.firstName +let lastName = name.lastName" +``` + +Typealias declaration is used only for the sake of brevity when it doesn't prevent clarity. + +**Not Preferred**: +```swift +typealias T = (Int, Int) -> (String) +func process(task: T) -> String" +``` + +**Preferred**: +```swift +typealias Task = (_ token: Sting) -> (_ result: Result) +func enqueue(task: Task) +``` ### Type Inference From 638a044add82d1b781f7b84633e18e0170949c50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=B0smail=20KILI=C3=87?= Date: Thu, 9 May 2024 13:55:19 -0700 Subject: [PATCH 38/50] Update code_style_guideline.md for typealiases --- code_style_guideline/code_style_guideline.md | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/code_style_guideline/code_style_guideline.md b/code_style_guideline/code_style_guideline.md index 3a9850b..c1bfd4f 100644 --- a/code_style_guideline/code_style_guideline.md +++ b/code_style_guideline/code_style_guideline.md @@ -959,7 +959,7 @@ private func makeLocationManager() -> CLLocationManager { ### Typealiases -"Long type aliases of protocol compositions should wrap before the = and before each individual &. SwiftFormat: wrapArguments +Long type aliases of protocol compositions should wrap before the = and before each individual &. SwiftFormat: wrapArguments **Not Preferred**: ```swift @@ -1009,14 +1009,15 @@ public typealias Dependencies & LawsOfPhysicsProviding & PlanetBuilderProviding & UniverseBuilderProviding - & UniverseSimulatorServiceProviding" -``` + & UniverseSimulatorServiceProviding +``` + If a function returns multiple values, prefer returning a tuple to using inout arguments (it’s best to use labeled tuples for clarity on what you’re returning if it is not otherwise obvious). If you use a certain tuple more than once, consider using a typealias. If you’re returning 3 or more items in a tuple, consider using a struct or class instead. **Not Preferred**: ```swift func pirateName() -> (firstName: String, lastName: String, age: Int) { - return (""Guybrush"", ""Threepwood"", 32) + return ("Guybrush", "Threepwood", 32) } let name = pirateName() @@ -1026,7 +1027,7 @@ let lastName = name.lastName **Preferred**: ```swift func pirateName() -> (firstName: String, lastName: String) { - return (""Guybrush"", ""Threepwood"") + return ("Guybrush", "Threepwood") } let name = pirateName() @@ -1036,7 +1037,7 @@ let lastName = name.lastName typealias UserInfo = (firstName: String, lastName: String, age: Int) func pirateName() -> UserInfo { - return (""Guybrush"", ""Threepwood"", 23) + return ("Guybrush", "Threepwood", 23) } let name = pirateName() @@ -1049,7 +1050,7 @@ Typealias declaration is used only for the sake of brevity when it doesn't preve **Not Preferred**: ```swift typealias T = (Int, Int) -> (String) -func process(task: T) -> String" +func process(task: T) -> String ``` **Preferred**: From 6dbaf9d4b1126a9708509c779ef4ceba970e4be2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=B0smail=20KILI=C3=87?= Date: Thu, 9 May 2024 13:56:07 -0700 Subject: [PATCH 39/50] Update code_style_guideline.md for typealiases --- code_style_guideline/code_style_guideline.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code_style_guideline/code_style_guideline.md b/code_style_guideline/code_style_guideline.md index c1bfd4f..e7729c2 100644 --- a/code_style_guideline/code_style_guideline.md +++ b/code_style_guideline/code_style_guideline.md @@ -984,7 +984,7 @@ public typealias Dependencies & LawsOfPhysicsProviding & PlanetBuilderProviding & UniverseBuilderProviding - & UniverseSimulatorServiceProviding" + & UniverseSimulatorServiceProviding ``` Sort protocol composition type aliases alphabetically. SwiftFormat: sortTypealiases @@ -1042,7 +1042,7 @@ func pirateName() -> UserInfo { let name = pirateName() let firstName = name.firstName -let lastName = name.lastName" +let lastName = name.lastName ``` Typealias declaration is used only for the sake of brevity when it doesn't prevent clarity. From d8d2d6b45b0682ab5d3135a9aeb813d4df01fe3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tolga=20Y=C4=B1ld=C4=B1r=C4=B1m?= Date: Fri, 10 May 2024 07:46:11 +0300 Subject: [PATCH 40/50] Update code_style_guideline.md for spacing and newline --- code_style_guideline/code_style_guideline.md | 317 ++++++++++++++++++- 1 file changed, 300 insertions(+), 17 deletions(-) diff --git a/code_style_guideline/code_style_guideline.md b/code_style_guideline/code_style_guideline.md index 06ff976..b1b1aae 100644 --- a/code_style_guideline/code_style_guideline.md +++ b/code_style_guideline/code_style_guideline.md @@ -22,7 +22,7 @@ Our overarching goals are clarity, consistency and brevity, in that order. * [Protocol Conformance](#protocol-conformance) * [Unused Code](#unused-code) * [Minimal Imports](#minimal-imports) -* [Spacing](#spacing) +* [Spacing & New Line](#spacing-and-new-line) * [Comments](#comments) * [Explicit Documentation](#explicit-documentation) * [Classes and Structures](#classes-and-structures) @@ -363,17 +363,115 @@ import UIKit var deviceModels: [String] ``` -## Spacing -* Indent using 2 spaces rather than tabs to conserve space and help prevent line wrapping. Be sure to set this preference in Xcode and in the Project settings as shown below: +## Spacing And New Line +**Important**: Go to `Xcode > Preferences > Text Editing > While editing` +* Starting from Xcode 4.4 whitespaces will be trimmed automatically by default, unless the line is all whitespace. You can also activate `Including whitespace-only lines` to fix this, which is not active by default. -![Xcode indent settings](screens/indentation.png) +![Xcode while editing settings](screens/text-editing-while-editing.png) -* Method braces and other braces (`if`/`else`/`switch`/`while` etc.) always open on the same line as the statement but close on a new line. -* Tip: You can re-indent by selecting some code (or **Command-A** to select all) and then **Control-I** (or **Editor ▸ Structure ▸ Re-Indent** in the menu). Some of the Xcode template code will have 4-space tabs hard coded, so this is a good way to fix that. +* Also, Indent using 2 spaces rather than tabs to conserve space and help prevent line wrapping. Be sure to set this preference in Xcode and in the Project settings as shown below: + +![Xcode indent settings](screens/text-editing-tab-width-indent.png) + +- Method braces and other braces (`if`/`else`/`switch`/`while` etc.) always open on the same line as the statement but close on a new line. +- Tip: You can re-indent by selecting some code (or **Command-A** to select all) and then **Control-I** (or **Editor ▸ Structure ▸ Re-Indent** in the menu). Some of the Xcode template code will have 4-space tabs hard coded, so this is a good way to fix that. + + #### 1. Colon Spacing + +Place the colon immediately after an identifier, followed by a space **Preferred**: ```swift +var something: Double = 0 + +class MyClass: SuperClass { + // ... +} + +var dict = [KeyType: ValueType]() +``` + +**Not Preferred**: +```swift +var something : Double = 0 +} + +class MyClass : SuperClass { + // ... +} + +var dict = [KeyType:ValueType]() +var dict = [KeyType : ValueType]() +``` + + + #### 2. Return Arrow Spacing + +Place a space on either side of a return arrow for readability + +**Preferred**: +```swift +func doSomething() -> String { + // ... +} + +func doSomething(completion: () -> Void) { + // ... +} +``` + +**Not Preferred**: +```swift +func doSomething()->String { + // ... +} + +func doSomething(completion: ()->Void) { + // ... +} +``` + +**Multi-line arrays should have each bracket on a separate line.** Put the opening and closing brackets on separate lines from any of the elements of the array. Also add a trailing comma on the last element. + +**Preferred**: +```swift +let rowContent = [ + listingUrgencyDatesRowContent(), + listingUrgencyBookedRowContent(), + listingUrgencyBookedShortRowContent(), +] +``` + +**Not Preferred**: +```swift +let rowContent = [listingUrgencyDatesRowContent(), + listingUrgencyBookedRowContent(), + listingUrgencyBookedShortRowContent()] + +let rowContent = [ + listingUrgencyDatesRowContent(), + listingUrgencyBookedRowContent(), + listingUrgencyBookedShortRowContent() +] +``` + + #### 3. Whitespace Around Braces + +Braces should be surrounded by a single whitespace character (either a space, or a newline) on each side. + +**Preferred**: +```swift +struct Planet { + … +} + +if condition { + … +} else { + … +} + if user.isHappy { // Do something } else { @@ -383,6 +481,16 @@ if user.isHappy { **Not Preferred**: ```swift +struct Planet{ + … +} + +if condition{ + … +}else{ + … +} + if user.isHappy { // Do something @@ -392,17 +500,24 @@ else { } ``` -* There should be one blank line between methods and up to one blank line between type declarations to aid in visual clarity and organization. Whitespace within methods should separate functionality, but having too many sections in a method often means you should refactor into several methods. +- There should be one blank line between methods and up to one blank line between type declarations to aid in visual clarity and organization. Whitespace within methods should separate functionality, but having too many sections in a method often means you should refactor into several methods. + +- There should be no blank lines after an opening brace or before a closing brace. + +- Closing parentheses should not appear on a line by themselves. // TODO: - We should talk about this issue again -* There should be no blank lines after an opening brace or before a closing brace. - -* Closing parentheses should not appear on a line by themselves. +- Depending on the need, you can also use **Control-m** if there won't be too much distortion in the pattern and there is a subject that involves more than one parameter. **Preferred**: ```swift -let user = try await getUser( - for: userID, - on: connection) +let user = try await getUser(for: userID, + on: connection) + +ManyParamInit( + param1: String, + param2: String, + param3: String +) ``` **Not Preferred**: @@ -411,9 +526,125 @@ let user = try await getUser( for: userID, on: connection ) + +ManyParamInit(param1: String, param2: String, param3: String) +``` + + #### 4. No Spaces Around Parens + +For function calls and declarations, there should be no spaces before or inside the parentheses of the argument list. + +**Preferred**: +```swift +func install(_ engine: Engine) { } + +install(AntimatterDrive()) +``` + +**Not Preferred**: +```swift +func install ( _ engine: Engine ) { } +``` + + #### 4. Space In Empty Braces + +Include a single space in an empty set of braces (`{ }`). + +**Preferred**: +```swift +extension Spaceship: Trackable { } + +extension SpaceshipView { + var accessibilityIdentifier: String { + get { spaceship.name } + set { } + } +} +``` + +**Not Preferred**: +```swift +extension Spaceship: Trackable {} + +extension SpaceshipView { + var accessibilityIdentifier: String { + get { spaceship.name } + set {} + } +} ``` -* Colons always have no space on the left and one space on the right. Exceptions are the ternary operator `? :`, empty dictionary `[:]` and `#selector` syntax `addTarget(_:action:)`. + #### 5. No Blank Lines At Start Or End Of Non-Type Scopes + +**Remove blank lines at the top and bottom of scopes**, excluding type bodies which can optionally include blank lines. + +**Preferred**: +```swift +class Planet { + func terraform() { + generateAtmosphere() + generateOceans() + } +} +``` + +**Not Preferred**: +```swift +class Planet { + func terraform() { + + generateAtmosphere() + generateOceans() + + } +} + +class Planet { + + func terraform() { + generateAtmosphere() + generateOceans() + } + +} +``` + + #### 6. Newline Between Subsections + +**Add empty lines between property declarations of different kinds.** (e.g. between static properties and instance properties.) + +**Preferred**: +```swift +static let gravityEarth: CGFloat = 9.8 +static let gravityMoon: CGFloat = 1.6 + +var gravity: CGFloat +``` + +**Not Preferred**: +```swift +static let gravityEarth: CGFloat = 9.8 +static let gravityMoon: CGFloat = 1.6 +var gravity: CGFloat +``` + + #### 7. No Space Inside Brackets + +There should be no spaces inside the brackets of collection literals. + +**Preferred**: +```swift +let innerPlanets = [mercury, venus, earth, mars] +let largestObjects = [.star: sun, .planet: jupiter] +``` + +**Not Preferred**: +```swift +let innerPlanets = [ mercury, venus, earth, mars ] +let largestObjects = [ .star: sun, .planet: jupiter ] +``` + +Colons always have no space on the left and one space on the right. Exceptions are the ternary operator `? :`, empty dictionary `[:]` and `#selector` syntax `addTarget(_:action:)`. **Preferred**: ```swift @@ -429,11 +660,63 @@ class TestDatabase : Database { } ``` -* Long lines should be wrapped at around 70 characters. A hard limit is intentionally not specified. +- Avoid trailing whitespaces at the ends of lines. + +- Add a single newline character at the end of each file. + + #### 8. Multi Line Conditions + +// TODO: **We should talk about this issue again** + + #### 9. Closure Brace Spacing + +**Closures should have a single space or newline inside each brace.** Trailing closures should additionally have a single space or newline outside each brace. + +**Preferred**: +```swift +let evenSquares = numbers.filter { $0.isMultiple(of: 2) }.map { $0 * $0 } +let evenSquares = numbers.filter({ $0.isMultiple(of: 2) }).map({ $0 * $0 }) + +let evenSquares = numbers + .filter { $0.isMultiple(of: 2) } + .map { $0 * $0 } +``` + +**Not Preferred**: +```swift +let evenSquares = numbers.filter{$0.isMultiple(of: 2)}.map{ $0 * $0 } +let evenSquares = numbers.filter( { $0.isMultiple(of: 2) } ).map( { $0 * $0 } ) -* Avoid trailing whitespaces at the ends of lines. +let evenSquares = numbers + .filter{ $0.isMultiple(of: 2) } + .map{ + $0 * $0 + } +``` + + #### 10. Infix Operator Spacing + +**Infix operators should have a single space on either side.** Prefer parenthesis to visually group statements with many operators rather than varying widths of whitespace. This rule does not apply to range operators (e.g. `1...3`) and postfix or prefix operators (e.g. `guest?` or `-1`). + +**Preferred**: +```swift +let capacity = 1 + 2 +let capacity = currentCapacity ?? 0 +let mask = (UIAccessibilityTraitButton | UIAccessibilityTraitSelected) +let capacity = newCapacity +let latitude = region.center.latitude - (region.span.latitudeDelta / 2.0) +``` + +**Not Preferred**: +```swift +let capacity = 1+2 +let capacity = currentCapacity ?? 0 +let mask = (UIAccessibilityTraitButton|UIAccessibilityTraitSelected) +let capacity=newCapacity +let latitude = region.center.latitude - region.span.latitudeDelta/2.0 +``` -* Add a single newline character at the end of each file. +--- ## Comments From e22b5fa160dac584a5705a73c30638cfb816026d Mon Sep 17 00:00:00 2001 From: "tolga.yildirim" Date: Fri, 10 May 2024 08:01:28 +0300 Subject: [PATCH 41/50] add screens folder and related images --- screens/text-editing-tab-width-indent.png | Bin 0 -> 47253 bytes screens/text-editing-while-editing.png | Bin 0 -> 100028 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 screens/text-editing-tab-width-indent.png create mode 100644 screens/text-editing-while-editing.png diff --git a/screens/text-editing-tab-width-indent.png b/screens/text-editing-tab-width-indent.png new file mode 100644 index 0000000000000000000000000000000000000000..860b51ae8ef8caeb2aa9a47a3d177587e3c8d5cf GIT binary patch literal 47253 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 literal 0 HcmV?d00001 diff --git a/screens/text-editing-while-editing.png b/screens/text-editing-while-editing.png new file mode 100644 index 0000000000000000000000000000000000000000..2c4c6db37bbf547435311ee7eef9fdeb4deadce3 GIT binary patch literal 100028 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 literal 0 HcmV?d00001 From 6caadafa316fa62b0db8666859619f0f02ea6450 Mon Sep 17 00:00:00 2001 From: "tolga.yildirim" Date: Fri, 10 May 2024 08:03:00 +0300 Subject: [PATCH 42/50] change folder path --- .../screens}/text-editing-tab-width-indent.png | Bin .../screens}/text-editing-while-editing.png | Bin 2 files changed, 0 insertions(+), 0 deletions(-) rename {screens => code_style_guideline/screens}/text-editing-tab-width-indent.png (100%) rename {screens => code_style_guideline/screens}/text-editing-while-editing.png (100%) diff --git a/screens/text-editing-tab-width-indent.png b/code_style_guideline/screens/text-editing-tab-width-indent.png similarity index 100% rename from screens/text-editing-tab-width-indent.png rename to code_style_guideline/screens/text-editing-tab-width-indent.png diff --git a/screens/text-editing-while-editing.png b/code_style_guideline/screens/text-editing-while-editing.png similarity index 100% rename from screens/text-editing-while-editing.png rename to code_style_guideline/screens/text-editing-while-editing.png From ed57fc85b1677d55c2c8a23cd9dc02d05be4088d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tolga=20Y=C4=B1ld=C4=B1r=C4=B1m?= Date: Fri, 10 May 2024 08:21:28 +0300 Subject: [PATCH 43/50] Update code_style_guideline.md for Language --- code_style_guideline/code_style_guideline.md | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/code_style_guideline/code_style_guideline.md b/code_style_guideline/code_style_guideline.md index 06ff976..b504e9e 100644 --- a/code_style_guideline/code_style_guideline.md +++ b/code_style_guideline/code_style_guideline.md @@ -251,7 +251,7 @@ func write(to target: inout target) func swap(_ a: inout Thing, _ b: inout Thing) ``` -### Language +## Language Use US English spelling to match Apple's API. @@ -265,6 +265,17 @@ let color = "red" let colour = "red" ``` +***Some tips***: + + if you turn on "Check spelling while you type", found in the Edit->Format->Spelling and Grammar menu, Xcode will display the red word spelled wrong indicator for comments as they are spelled wrong. It will also spell check camel case identifiers + +![Xcode while editing settings](screens/check-spelling.png) + +Also, you can look for the correct form via right-click + +![Xcode while editing settings](screens/check-spelling-suggestion.png) + + ## Code Organization Use extensions to organize your code into logical blocks of functionality. Each extension should be set off with a `// MARK: -` comment to keep things well-organized. From f8adc6c0d1dbde8428f726f5a495c947e28c507a Mon Sep 17 00:00:00 2001 From: "tolga.yildirim" Date: Fri, 10 May 2024 08:22:33 +0300 Subject: [PATCH 44/50] add screens folder and related images for language --- .../screens/check-spelling-suggestion.png | Bin 0 -> 72251 bytes .../screens/check-spelling.png | Bin 0 -> 182571 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 code_style_guideline/screens/check-spelling-suggestion.png create mode 100644 code_style_guideline/screens/check-spelling.png diff --git a/code_style_guideline/screens/check-spelling-suggestion.png b/code_style_guideline/screens/check-spelling-suggestion.png new file mode 100644 index 0000000000000000000000000000000000000000..dc57b0f5beed0f25d9699d671c5983c0f2b22195 GIT binary patch literal 72251 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 RVK4vy002ovPDHLkV1mGmZ-oE= literal 0 HcmV?d00001 diff --git a/code_style_guideline/screens/check-spelling.png b/code_style_guideline/screens/check-spelling.png new file mode 100644 index 0000000000000000000000000000000000000000..7eeae8024449b8fa21f2243947b49bbe8d47d2bb GIT binary patch literal 182571 zcmdpeWmsHIwk{Tkpdkbg?(PyaxI==wHSX>b+}+&+H16*15Zv7Yfd+zhbDQtXd^2ax zx&Q93%kymZu3c+Y?W$U(>wP;+QCGFm{XO(j%!P%4 zhuⅆ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ð`7E0l*Ur#&VVA*&4omwqk zyGw;v{-@`k^CtLg`AGgSh&M(!`ID{u(q>-6GR6OgrgQMC^L_k(*2%7=)mA5a*;=-i z?Pc4xTlTV+jb(eaY}@$Vdw;&a$N3NH-1oVz7oM*+WjPGmyvXIc5@_1|ntLy1+wHnQ zKJoETu}M?@ly=>}tr=npm>)|A(6^>NgL&~9O_2_iI?`q#7+;8lo7Fgr4qjG?Rup*c z)i)Np6k66x_b83~7nLuj*h@j~(B;Bl{nX20$93;_Xz%wv?KQ{F024EtKPmLLDQ|Tu zmZNq>H1Br8wL?xa`}*8H3BzioiajQ{QOv;x3aJi&K@z6q=g#oG$~cL2Pbb=HHfmJkm?{9Y~=bK$>$!Ic!`5Kg=RH~aVO@f^+jc8$}qO_OBKh9jJspli*w5hrfr^ULe~y7cSF zimf~fAzQBF1ee6iD4lk*!d2iKyZiy^h$$=aMj||@Vg3cSLu4@KhVi+vM^f`*FpPrXuZ1yqi!76*rx3yD0YGvJ?!qrM3Q&v5j1U zLfAx^87KlD?R3lnFKiK5NzT1CcM>281vPAFQ2kA(U*`jy-V<-tZ z=jIMx3Y!AaUytL;tqZ{KTNVfk;m~wv&Gzm->3lw$3w(~I_?_c<#^w7X>F@s0eAzIy zk^;$84R? zlB6TP@;h5@Rq>{IGmtjh8a32XJMx=I)-VXV{MebePo#O=db}Xv-+pDMs3=oHaQJ5u zo1r_=J36;2KA{_3pShOIMr5!*5hCC`^(tlJv0e3sF@>~dKW&KbwfvZJINcQy z-^JBd2*a9AY|G;v4E=!)vcAH>fA1w3$ShaC&>MNg0uz5@2#PL`JF?A0G>m zSNqo`S=1uW{qRqS1JvzIA3PKdvD`)=IZP*czTR-Y_wPF}Cl*}A%*5}UD&L2h=(`&I zQA)q>KX}Drh~XK6nmdgHyAJeEsS0yF6yt2%nnh%TFsb2i)HzUj`8sdV72B5=!wkQE z^_(;m_9;U?6Q4>X!&Mi{xou_{mM+bX!>G!r>O!2yV(ER@Qi`X!ef*S`m1#;t;e5NL0?9o*HE`8Z9();m++R0ofO`$;~aSl%Fj)P%V{lc$eZJ_ zFuyxcc(_8u41~Lz9Z@k1_oD_?S2F+$9t!%6RR!_-)74nJ)aJ&;^Yx^uQd?um6bD8p zok!~%hda#5BD1Ts03+QK&xQwZ3LwQ^0>~2flTS3%okx z6$3tn4Q$TAs!Y?fI~)iZe+A*uQ@)5nKP>qX_L-PhCpDQ|4Fn5u8LACI3*~C?*WMz| z)oh;S`~AKv=O~fIlNKls&dlfdyCmJ%!+){SXFSNr`Oa%;573Yt&sPvox38yOGoO+r zKXV#(-mkSSx4ejEe6bO?PClA1pUw*1rl04XJJRp?X@yYAgc8sd| zPHDW?%#H|~k;e-_J>UyUyaDJ@=|>!;j9Oe>k53=&ggDuE+o=e%`ztm_deTh|73j>yl7?k4+;vlfzq$8}u?TT}J)hu_?_3q>FXCHX?i}}|5 z+HG3*8eKT34&L*!ztz@VqxN(Chzjpd8>-^y<<%Z+-3_m-(f`NML!)_HbP0!6eTtBu zmyA%MNj#d+8bdF9q=r?02v=j??0FN{%|wT)9*V-3EdF9yV)T>Y>%r4h=eGfdZ(sif zeuT-L?5*IUN`$uGf`ma2Gz!SHCL!fTDkZPq2Ftec{~bWY)q;X+YX zgpqYM{}d(=nh8HpR&P2YuB*&+ zLXW0=`ftoi2<7s9H;f?{7yI1<3FiKxA{A4okub_^LLd=&PH`TPbGJkS;{Tv zvkp96ZgONa>w(c7MJ}Hv8;vgiWQKW*iOlMt#auuC967I>zdv+7dENiLzsl=9GwcgN z8So$_bpiyjuRv-$F_~X=`RZ(?BAI>j_M4L~jDhij$6W@x{ak&u%e!{_#(x1p-snhg zkbW-{bZA?JBchHW!mJ0`$kZkw!|p$4^#)sELiQy5%E3_b#&y(HKlJ}mVh^_@sRLeq~ckv%CVitiPcZ6Mk2cKpG(#`We`WeU*tSb{xKD@7R-q>aXmoGTnrI6Wbc&l| z3XZD03c1(S8vmKlG|Qrv%Ai)(%?G%+AyutM-vE>wHSgtGcGhxE+SGVN`}`>C;h*q3 zd3nkPdvhYA`F(izZkrMu)I}9H!FBUCm%o+tZ(DOeRRX(e)}2Hc19CWdL=Pj)mUhxh zxW0W~9Ixi=ToaLGHJczh@-X1|#{;q$J7CWL#8oz|h&W!@djE3-6TN7N^QK0m=oQ$| z1|CXXIUq<`Qr-2Gfy(_r)~HsBTZX7RSf4>>JX_M)bZZ1^e#TVr=SUb%vc3RiV_#8K zpQ@M$1ny_M#%P$`m==w}?z-{NV* z-Z6UwZH5{r@BU9?xRHcuJ$vk1oXL&sio)e)d#v$ChnRTE5DRv!00C8ZCWfj_Ydm(cVF7a`(60(T!F(e z7y)VMrjrak^=sy`5{1?SOuisO@sCR5IRrm+OezV=9AD)P|6Z}(+7_r-pIfMJF^>K; z^Zp|ZrKg9oR(m3&F4VE9#W#X_+y;4p2S* zyuuwG&WEe@lL^)Fv}#qD5+{><0@Q3Du?3Gy06A-JGs(qCCsuc^%mj4Qt;Nx~Ghj-g z8I=UEVLfwxM-kAn+hw`~WQ~3$2!b3hmc*>-^GUgNyYG%1bLhzWIz+XzS-ywLb0V0gAaKzwV%^!Pouq6I57L`@oRt>6(|^3a0%9R-&H;Ih{PQP>Lyf?!~B^W(2OJYu|lbzrG2*e+4V=` zcjtaI722FaPIiB=l_{XNrVKPIyQk-vAr=W4ZA6&*J(fJyEAdc={rqC8u_`bGdEq1k z{{Sue5P|ct^%Y7hs>V*6$=84VWqOc}3XJP|MF)FE_)+b5zD}Fzp;rdek1zE=X z(8ObRSN#CEQ0M(|wp6ap=0M2qaYfFT@`~%3xBeM8m0B6CZ_ng5MVzpZ^X->RP7OOE zq!u@c=ZQU+Hk2C7Qn522Afn5yT2F6j@UI$Bct320{;LN*7;#?qFU)m{c=D&^eYrm7 z^|%TzF$ZQ)|A?OadiV3W`M_iB`>-id7|rV5p2LjBVd0Sko+|F(%35*LI3gM1T`Q6{ z+nWzDWPbo;`8uzaSez>L$aA4KNDX;yui=4)#caO5;_m7bdADW0Ia&kG{o%)S#cJcJ2FdFAqeb=Gc>^30OKAnh>`o16nU8uOGv7};} z3eE~0Pdv2{osSWjvpiW7EcqeU@4b9pF(#14LsJGKqIorFv^!19#pE5slQ+QXpcpZa z3%Vv-BwBOxbCstt2-R*|vucEY?r5%3#L+iRTDhcC)U4KP(B+H9S4iA*2#yxrSrtH0!Q6ZZ#a5|w9df+-fQh0g{S zfk9TVy-19Rrcu|2U$aYPFq)5yT1qS{%Fr>kYYpi%Diwk&EayGWB2^ffpwLtqJN^p0`^cW9=-1B09Z5xTeA2Ryz$EIBU=91*jxxw=NE@Z zG#l0-s&Vx&%RNjY&GXqqUAjL^3`iEGpr3iErN0W>f<+Z`1fPh&N2)FHkUZOoEH=_V zmzXD(X_l#2@brMlz=n<6u=-it&IgZpl#x&fQo(?=fD{9uxTC0^L+h0Gh&9>BVyYAD z_1v`TtFw$^xH9m3NT;tSyU38x9)bj?YV|iE1XvWVfM%gzjVj`1f;0o>=fQtmcE)Sr zTLpeTCe2bkUvybtlPWfgk6$u}$Nxgk{!8i996c=}s^_+;2jiPa(~ zxJsUnJs!`gNd#$};1>sUQLggP zb$)NHrP6~QB}5Y)Dr&d1r0&C|`hgj>|Lp?CRQvN+Fq1&Ijf3+U&GN9lnW3x*v%9YB#rj4-QCDf_Z4VVF@ml| zP`O0q%C0|LlIzuOVHkA#y*cqe=X3AG1)BKB@^3x{j+JV=dtUaj*!Rxn7g`KQtc)_W zsT>(>`T}{;NEU;eQs#V_=AwJqpvsV+P-pV0Yr+A3U-ZXoXs@Z0c&~jj<*6Di=)FT7 zTIJ8RjJ3CaN8_2GHsT3|=_I?cMSd&b7_ULkO&oO3|gi728hqq)z<;b<;iFD#vF z#Iw7cxGBQuEd7e?ZZzAy1o+zWz;lHfO*;9~b8|djUXtYh7Iz3_;we|}m+Q@>ee9o^ zr7}8YFI3xX)!)_6-*8QwFx?{WPR1Z`>Pzf#rUT0r`(r(L9zHX4$8Yf zW1a!cGWk?aA=f`v(Dnw>&5rzgV_p)*7hU$7{vbh8Xfc*6D8Xbaab4I)T~$|Vn19x> zFqwnB4f&X#5Mxh?feRZlid&X8%+!DKib6Ye+|cwuSyviCkQutB3uDvet{O;ZG}jc4 z>@rYv;OkQF%o5fRd0^!hr#rGjV6g9_fC|@-&uA?VMhMyt2x(tYJB`3uE|wD9W%fpQ zva>QZ-K{451+kC#>+bhDgp(i=7_aElg zd)og(EwEZ<#7F^Ep5o!elCRz}z0;_Tj6G8DdUv&CLfv>5zJ=RdE~D<477Iz7*9$VKPt#4caB##7qXyn7Akg@5;jRPO$YeIT zTR){^W?jFJ5U5h*Jl&X^z`ke_W3yRZQSWwaEUw9-<(s7^0EY}i3kG=Pit>$7epnt; zu%LLpWnlJop@8WeO9|GF9E6`z+rvH3Ua&jBTYBZ_|>;S-61fhpr@5 zevft#RuM}7}FGj2ooU=RUyPp9}BL+#0P&WQDW&j8II+t$(8vejznyInf zy|qDk2Matco)sEHl*k{rGwBCXzVh4)*j0nYHU*47xU}*b4=HqcYoL?#O^k2%+BDtm zK5I!;ARCA|08q|wsL_yUD|ji*i?eS3z(XUo19CxsNE0{hrF8oE4WqAkCjdty4XloH z$Fl}igez2&Lg@BPMjfy#e*Ya0WNSNk>OXjIay;l!u@qo}(2L)=6u9-Ild^5s&6|#M zHpzdT2`0;3QlkZT3sb+4X%UbU0i(DxW~=frL!%)m(G?k2TPhh7atlHqqOQXzV$fUt z#0lYUNCl-+-|~kIUH=B+C@QGD-^`NM{ldVNA*`9lIOiVvsv+9*v5|NqRmLl^7Tu4X zg04dUwmHQe^RgMD1=Ph}qY|iufusP#n;7?eh)N#5rSiBf55|XZ_mUQdWI?`{3?yFU zb*1M;;uMqJoNiregrQ6t4q5E;~d zY#Y*+jgWd5%p_S$eF6}aqi%f5RETd^qt%j%eNeepiwt$mU*U`wC4S78FUBzrEaf-o z_mFoHQces9$Q^7tVM0byc(MO(!|D8_Ph6O|2^66Cf{JZc68j_I^_19`)Cf8Ab^2PJ ztzesqw_{kT0eDy5~#)|atMpq5MiGBzTMqM%LG zuXlxUbaj_fR6#Vqj|7qj3mc4w?E4Z3M8enS7h}@m=c+u0%9mR7M`&m?e2l52w}+&X z*+hF;39IDV_;jD?IDy*J7a#=P$kFo$W`VTkLa_O|%HSKFy7j>D7kxSed{!tr3Mcz0 z8(u{rUo~0`i>f!c zt}9q~oIVcJC+()dO*NZUlOT>z&<_IgeOX{G%a(1UwQ%>suTlqy6%RIjt4Z+`8$!ED z_LE6mHFZ7b&#I=&33N+!UkGFr_e7W*{hPLhV)~%I?s7lDSXKDCx6^7KLP-;fa zS15D_3_Zf397SHW0X6Ungmv-kXPowq8?(lwaJW@1Uidg#H{XSgQ%hBsQu2`>VigLL z^fex7R9HoiI){;;MBO^cSmE16J8~URB)uh;O{RH)VDU?V;KkmgKqjg(bFp7K5kBQy z^LW@FXP(Iz=@yw6oEe?}oV--1J(CQbA3|9hIGMyDTd2fQOf$+uv{qXf)VEYL16d4L zyWXt712+55zrmrLkcou${w6Kb$?zsxA^7&oT1Z~tm2UGBC0%dH`n^LO5X;Rj5b>UVe_ap7^!0DDG58oZ zfa}$LAgS;TUVTF#rjmsJ{l&5P(XoyRpWiF2I547vwrD|p;fHy_s!+d}ti7{k3WO+!f)e|kA_ z`wtq;x~{Lkw)6=iK7hdmo2!nK@it6oOqKfa7r&2fFN9qy!B}%8s7G_9H zEdlc=nURxQUp8ZlJewk61kRuvVS1$ufF^VFmsDqu&Jw?Y6bW#hzAUuW&t^Y*`HN#1 z+K(DV-BNqNe)~SH&(@K7HVri}fd@gBO*dw;uDQg7^v-ax4<*3#(04}xw)APlmi`j6 zEzc>J#CBl=Z6&PX*PWvv6bfSC)LRp&Imi(3^|yAkI=0!QJ7~NHbTW zMR+;8RX;ZO)?t)<$|u6Ltf>fsf{T#1w(WJ)>w=6a*4tnAoC^%V(mKDehgq;wC^I_V z0+d`DDbj9ZVqStkY4c99$71yJFY%Juf>81U9q{qz!ae^P#o50H%3y!gp13t6+DH9# zZ_cQ0nEu89+(>{=90hC*_t4EiEP=RrOk7;NJ5_rbWC&RbaAolxhftmQQUR44zcFnF z`XTz`GBk{AM`TgoodSy%TiPV}n%NzpzHNh3%X)VyUA9rru#4{f!nhvMR;Zh2^T&DT zZG6uN9F`QA^v`84td9*77o%P$(GQR6qN&wqL|17MPVRCG&`vBxW4Ce6Vk;?L?3UTAf zZmXsS%2E|^xrL7}*UL8>BJbD9Y%GEoXSmkFa}e2V7MrRD+Vr$(w3+&SP$qb4RlN5v z*ACbhwSy$IFVDNFjx%4LhN)PK-T)c)6B4g=lfUy~KccBLR+7iXX#mr8qP!b(tJ)5F zqm5uV7GADs$az8p9SBgdp_fgA=-m-G72&mB(Knurk!*(poRKPI-p&KjU^!m+iPsM7 zj;60Y0^YH#^@7f+IbYS_2Li|jbC$grYdiK|KobQE*3^MMl=Vo&n+ZxIddt?eb$;jhKD3vawJV4f=( zlS;XzZg;04ZQ5usdhw+3wQO%2hgwLfSR+{{!U<9hreg=d~nhS|5 za*>>Pq66!TR1@Q0uN6eeekG6kQCtWk{4*5?VWdjjtzIA zsfL$K{i@537eCBCfq8K~F09b;1iMt6LXGuT>0H;!d+~!i?y7|SeC0!d8Z-KneQbDn%zVP-V@9G=Yg3R&27fAELk?A)jGsK^HRHY~Tw_sEV`h z$QrM3&}4mrLkY1f<|wnOj9@L7*OHE*f39XK_9z|E#cewydJWgFh=Lk@SL$eZDFs-56`f(sc}}m{EmAD z@3l#`@u_^XFJxBOcJwEoTvFc*dPF5^#n^Aw&@W`y5G6HbWB!H^Y(1>GkS0ha>cT9E zF#n$gK;M@_nrVuSXGfzKo6UDHQeGA38AhM&e3W*o+npHoX5Spaji%K~##rmD2A%Dx zG1wmr>(z^sskK<4sN9IOl`h<^MwJN%%Ujd`crD+@8UY=V`S`*RT%;BVhw|ye`K7?y zOP@fntO09BS*HI<&kPzl0xPTzoD>OOhEr}K^DQ>vMd_}vfkLjzk1sZjblOZ^On)3~ zu#J#J^%PwG$WV?&K|N;ZHn<`FaBsw!U49|@=5Z&FW^fO$XT$6sO!jO0OH}v|X3D*` z%q=nhlQZA%-i$+Ecvtf%g~Qo&OqZ;?VYL)Kh80;*DluXmwD;w@j)kVnK?w&Ue#Vqc zLNaSE<3PTyq~1*{)V1Dyup}|pY%B&(Iv^$zrxzM-5>xo}YJSzU5khzLPM-IGMd(bF zB)lRFd!?P;a`&213RO0NG;zh`H&%k*KqS)-4xrcIV8dWP@_i*0{RYU19o z`bhc19rysIN=jY4Qv=5pQRx$M*^9Qq+Y70OAswCr zFVpT!WRNyTZ5<2|BQxmF+@}P~|DB0BRx3zME2s-Zlnf$8eDjWh!V%;ctJ z+*LcbthD|We!r0SEF0eot|xfZ8?Q2FssgP|p#EB~Q$-Ma_oiTLT5@U6BMo#=WmA<_pH<$ zMHZM~f9aZOmRO2`E0Q@fW9a(!a=yU@u=Gusme$}RGqs^I$K^9#pq^(f!1I@Hds@9c zKaSIa)N%JbS9w?=nH)ihxC-~m-Twl7ureD7e*9-*Aj+swj_qj+#05kH(+Q{cE%#1O zS9irFXC@2c$A@hKS>02Q;VpABV13|f3&8PNS&S_)Uy-+6MbH|RcTaX}n&r^%9e^|v zqg#)xnX905hXBpC&|3pyix$+du3Rh=Kl^oS!*TqB&wkbo$GH(P8~C}S-;RVMWzhcJ z`+hk7N6TH$JnbX)P_!1vaW#&9Rhq7|K80TQukl~mVAjU6Qcfo%tXS2f0kxRmK_`F_ zM2t{ka{%QF03Yha4j9*j3-tad5NNRL3z@(VnGWfCg35*rCkB~n2ZW1N{X`PprD`qe zW57YHB2lnP4aC*pyL`PdBM=u>WRwaB#j|4A&N!u-f^F)eZK`r5*a0(XVNea*S~UWc zYod!wYu{I-XJ?&{<|G?W&T}NxzH(qZ2lE;L0T5+q;D)ll zUs;=cZPb`vRJqQ#zJw$JxjtNc#mOy|!JVSA78yH-kj{3uPKIAsJ?cVI<3p=wA#5kY zV@hcUlPg8DR`EF>5vixpRfF9=+=EwYKOes@q;$DmlH3330BN1>mX%5t66~PztLd9= zP+Q@Hms?|Ob7V#nlBu>_xgP&jLWj|4-r()P+XHgAz1R8#l?>#Do2Crpz7Teuh^b`a&~8c**ZyeHu+*tO&TiNkcD{`E3_p8+ipxy#gsiFd6T#7n1J$J{@<7 zQnr|CaA+87yVWO|3NOeZHKH2TeIQ77arh0puz5S?F-p1?D}nQ-_iocFKMhm;=aOTpbT zm7ReYlzR1`ysSb=_7S2o`PI1>nB-Zwme2iFkcb1uzi<|QMks=&v)$@6?arKiQ}W|( zT6KubFXr!fez-I@rs5C4EJ5bIUv)H`2gV{uxzmWvC_$W>5K@F`{c9sN3Y^aW0{<@m z7x-V&)T4w{6L?6d)YC_o$SyA6%)hA_ot^(>a49CRQr+X?4cL-j#UYb%z!JP8v%^Qb zd;+z_Q;cbHIj z7m8_C$yEQn#l^rQ8s zDb`Pqjgh*4wMt{@+IKQu{8<^olOBSQWUmVfw}l^KOEug=wN`r)?a*2)nVx4YH?X9n z?sJL~!=2lT1rpba<>Nc%t?Vy2kDB~6mjLT1c~8z1KDs2+A%gR7FNVjG&&|wSYN7Se z)W?RP*F#>wfn&3q60CJ{zwn30YDK(urDJpX>#W}ElBaXLh=wbUIQ0U%>d4In80YIW z=2ttzbxS?=$v_mJ7$DU`o^W1aDz^Hmq47SDkyf@QiC=4+wH`A(`RlzspEc#oxdY=S zhm4JPT&E4Q#?xOCD?LKcKJ5M2?K4=b+3Z_pUVm$dx=%KW;`RZTG5`z;%dv((F-`j3 z1D*Ia!N__(`H&5Kr*q0b3AY1(USe$z&H@yte0_%3oIJtlE`@Pg0r&vny@M07Dvyvb z$Pj&0_Mw`DpN7B%!OKhS=k!-tCKrsYi$kbTe}&?*I-H33F8403&a|HXPPwcUu^Bs;6dU*JO=&;ne5m_ph#?^fhAi=*Dft!C^{Pmf zDCfuc(_Oi!erUl?a+I+<#1`HqU;$bFO|84uvNv$sepZt~;BYGTb6^Vlh=p`c8#nmV zevCRXju*XJC=hNgsZ#z1O$s4sq%9qrvHmXGq8qk5xK0zmCyYXgc;uT;1t=3ry7rK+qpO9d%i5T$H} zDA4lAFIk#__inz=_7t^;4t1D@@MW{pcD>UyyPS^aI{?x)yG9>e(YwCXYxdlXH?1qt z^Lwaf`Srw(1Gfjcb>I6eqDusmsrcv*vyK(kPXPXJ+3J0Gi*z68K5Z&TFZb!XTAzNNzSyArm&k+aoku1Ttj4%EY zXY8Z49TC{6Fg0*?(_fe{f_VKzq`(!hO%pTu-Tw&)`j?ldpq&^QHe;MOjdjk6# z8Q@F^P!XuY5Lg1Vv442(1u+8kHL8)+QzHT&yh%&=n)kW^dE2$$uvX+z_C#8}YzCl= z`*lxwY<}BX)v-Y9+CYfUGygV`0d!h^_0pC^AdT^tOBf7^)3tuK{s1%(8y-N)>8^Q- zp@;jc{up0D3p?|dE`H=wkOkaw%7@FX8d>74-?&`O|%E$$I3o;r2vexCG47Is2BK-sG4kubfv_`txW%qfx2R@*FC(RA%lxLx*BN)U z1o}j=C-!&0x_^-bQ`^-ggp{rm@TG6)HM$6O4}%fjD;_1P(812f^F=wDhq;3VRj;n} z&+Z!JE4eV>K+=ttx2I#19~gA5+*$T;z&fR5L(EF0Ruh9au#i-%p`Sj}r6<7EV**Se z<^f_)MsD#K0p>wRP$Tm&KbYp%i*fS(-Lf=>}b;O75(l*NmtLXa@JSo1fV)z;H!yI=d%r0 z_ARfBZYoGuyE*=mSSuH(yhza;8&3qqxO1RW!P1+ygg_8fBvQ{7TTIcxwLr<)GilD? z^{ajd1!()SwDh!Wx!eL=N+MWZ%E+6Qi#$_9W|(F>Ca!EHiAY}E#lkjjpxw=hv_l08 zg<{bYf}3|A;i5v>odkRF2<6LsQSIkvMbF>+{cuv6_3SG5z=7JoX|?6tu)glrCf z)}KZzDmg*>BSAJImnDO_)MU0LTv#zsBje_S^%SmLIL3x6+)8rQMy2Kw?k!=7BMLhK zmDe;G1l7z1GqlO1sSAr*Z1NYvqlI!R#i`$@&8`I!(fO>J7|ye@9G8b+0R@RW^?HHl z8T%eZGDd8_B&Gy%z7(0w8KWz*Ix+Je3d?sB-Y{&xfY@CKWBH>nB>VLpvip16X-ZA> zk-WpQo+WKKG>40hOtM`5+Y-?-l2)WGAuE1YIQ-4}vH<>%u{OmfF7iT0xqy%qZPY$~eU%IB8`bsUl-;Ak9@%d;H|M44 zss+4{Zb5FwTa{nX?HdhMdkwao{kRnCK5b{vEgJTd)S#y9|B9io;*dl52*iv-a}n2L z*rV7P&BAHr0_Smswu{~{Ex?zFpKY|T|#U2>QTO8UpBnXpZKE%e0pI~WZP15z0mb1;hHFzhnc z+aVXgy}ey;z0-+8D_#5Waj2&;*L9hTG4n0k<>{~voYBv3%trUEAuObpF$3_|lRR!t zsFyE34;x2?)8`%%;Jt2PfMim*cyctm+1J=6>=N+>d#^H3TOf^Oj@yCV5#J} zS5{Uk&QrR+3BGqzU(N_BXFg0=DQaD(*Wtl^!w;!&)_no9MnueO(ef5gKo|WNc>lQZ z#e|ruVM&TuEQDS$7aE)AC)AT_t)ZCafeH6-l?S9Iy0^D|TT-Mt6g1b;a0T)Kz~lOy zD+isE|5-Un)7xs?z+kTRvIsYqU8u&9!rrH9Hbf(CNhXk{acDG(I&%1`HL3m6AF~UR zMjq8t4S%WYpFhNAMXJ85vJ>+wL;O#?{`C!H&P>o{TJv(l{L-G(N#5g!5PKRL>AHHA;|r zt0XaSo^j9WZx1!dWkSIXMs6EZ(oq5})dWTr4om4*aw8qCqO~cK%J8OQK-|*ejDpXwe)rPS~H z7pSIifZD)*=6X8LQTeQY=*Z~BPfY~Q1^i8i-?MxD3r@?s>b2JoIT{n8qp;wCSbs*G zjkXs|?)XccvrTEmc^odJ2W)iy8zputwf%jM==&J8Vr3I#ziwYjfr_DU8W-LmSSNqI zj)Dv#G59*$R%c$bhm>Ry#*UjhuZ?BcDJYEctVQ% zBP;iSZg?hIAlEVnKvh}yeebZoy#u{LV+<)j;P*>rPUkxLb@h|_B3ERW*9p`Erfqa_ z{ja-N$3T%!`L{Z)ZVC`7^%sHRXx(=H`o3e8N<~Or5>1;T;%ZN!!Al+De+k(w6^c%2 z!}WN^-hl@BeFLeH4H03JGyPpAlmp_`*HP7<6~`iTXnnNeuJp+N5*P*wEor|nOgLq? zGx)(#=@%-k@nMIcgV1C;Lf=6eU}`$|l!U^~aq4IusgwG)73>!|}7 zWKvNamc&)c<(>pb2~bqn#riZl?2il((I)Q~Xw^#7FeaW*j;@7JsX%meq4s5;0m{kq z+Ct9WWDetD!W;DQDOC>PBvnp~nLy~|XJm;(yP>?$DRyC6aLq7=>H3e&D1uxCbm}Od9D+AzK@na)BrzKV<2)VfylqqU_o(C zSW5kNlG`i;4C`zQt%8lxHnE^!l;TL!0}vW~@M+GhI)n0F;aOIH%D?;nNIONh7FYfp zy;U>H#>iX3G*%InneHILjB|$L{S1^NBSa+w?zC*DOHKrvIcI;`okv)WE9Ux9 zqmOY^g!C$n(F}1RMLovieC^W++|;0FiK17ApkPV&h4}2S3bju+(R5J;At8hdsrL?e zs0maVc-l)@t$JPr(S&?zUi)mDj5o_L8Vws(4%$=nnJ$_HZ*^e;D2$z)$qZdvmM$|d zsm93+I=`FB6w_1|!Mqnb2Ai|32Na!_lpq{;kXBt>8J#9^s-6Qill>N}3SjUOavL+L znsvET;ztsiSUIYiln*wM7{^$r9-nnOir%f1u%kr?>uF*lJ zX0xR$bQAm>nYolD>NH;icy}TtF1%SDcg_BZd0_u8>s@O6+Uuj5W=O07L$N=RHA+e|68@Qn za6NAX_2${OYZj_eYG9Le3DX8149*)1qHILBQA;@ZZ?z87)EmQo%7ETb~>uQYJh@h-H? zPzR*NXK>nKe;V}t{rnH-G-DJSo4@k?R2H7Z$*)`Bv0sDm%L_x<=nBUK|Fg`|OcBrR z=}IWQr_3XkHh<=*eg201;6Fr0r^-=YEQL6)4249@o()bV=Em_trHEOUGo{WD5*WN( zd%BSy**eo{?e8afGe|mFC_(Z_YTKb90koGCi2Bqw!(9OPY{#fu1dUIa)axRzVLq>q zdal;Uli78!afvEBP0+UEwlS$C=baLk$rXxGA2d3E=UmVOC`2jjOT~WfYHr_grpWqJ zxUNk6=$(;qZ9K1227s_{Lbm6ZnvLf3wP&~TS?Dn%_~{DG9HfMTSPO=i8s+({9qIS1 zG373IT*oEyB_Ng$aEKeNhuwixe)AgLPk5gLAfOH;?K`gqNJ|{}pANPWQ!EwCZ_m70 z&u3PJ7i)1cJBa&9U=QF%8&S`ZL;3kOX)Cm9MH^_rSpbiqG8BIq^DR!L%A4os&c_7p4 zHl&ewTEleomw5FW!h4glI3aXgK7F7|%r+jpQ#~YUg!(Xv%V*okMGsj$Iz);j2zSz` z1-;xDs_p=&kS1+fuyq87$?Nhq!Z{PSS*R zu^9TkQwJj*@cwBWh&#*EHN_7gQ05TYS?a3lo-A*c{+5_wZMRGN;tdBV zTvB}1U1|}w?RlXx-_C)^fX9B;eLuXcquPOtPrSF+Ww>TdHUXb0-E*NPdCYe0g-{yr z@&iPlsOwmoy;3KztiV!5Ttp^@W2v*Rk+l zZ|q-$_*A=`l5q%L!TC-WW30Lc1xXueKsE^V>oYPD^=QebY}p{RHD7@s480Q`*R$Rf zLI3kK=q2Cr28-E;n=y5bmU=uLAp8Dvw!s3cb!%kQM3Kv54!?Gy1xTm&($=`Ochg~-h@G>bHCfLmFm#+GD0ps^^DG^if4Ccm9QexeIa&u1sU}sAr9}H|7^smRoHl(R z$?E0}!{XLrj=j5bYaq~q&&#o!;SZ^N186{J)T}WVyVyxhgk&W*K{DET=mEXknri0k zs|6o**0;G8o1=(%vMm=XHno}y^WlwApAdZot2?h~Ixc_zXn^0g{M-7A?oSSot6+Nv z4*avMDO)nnh3eqon%mtBt18p-NKq~aK!gvM&$)l>&`x7+fa7FX z9?KP(QTc|!gj|kXhJ{qfj*4lqx)ZqER1;9#ep1q}o{@h6x&1xsKe?@YK@5_$9%+Z! zxLyKMpw}X0y@=E1#8Lr1C0^lA*gYYHTXJ37hV(58$KT$S&l5$sgCz8w7Jdc`6_e(i zjFc=W_k0)V9naaCbl)dIv6K?*xWNK)r-AjN51j-YXNVcyksZLXHxg&`yzBjA@#bvt z_*Zi{H3*@{o1iOmap23j4v@(hkxEx=Nyk>q1X7L^gnwDPS9EzpN@Z;JjpNySq3~Ug z$+i3aKbp=msI9i`+PG_Rx8hzbxI-x}E$+qLrMMQ?;_k(ZyGwzfp}4!d1PJiuexLc~ z`om<;kYx7GCFi-;v8tHw)l7Lf*|@o(E-ro1+xxQ|M)*kd;e5D(7@!l%PxJV@=ToQX z4{rZOj4>#af?}$>W?iGe;%aML=`8vzoG<%NWWROYtR#POLXHPws>#FuA$~_>TR(xi zE57PA+0!iksm2Kx=_7i}cI-)l8r8U-Ln%t7aD}{QaGtNE%?**N@a)HCgV?`ei`~Jz z_Q(7q^Id0}`r6F4?s3eih=`Czlbvb(%c}zT=81$??TOQ3N-5eBzCC*|nH4p71NAZD zW!^xK@9NMkhYdYzsq>0a2h2n|vaSjZIWSEw5gHswyVWyrf=xppI{&=?n~`xQ3{|eM z6DswcHI1ZVXbNvUa9rm|P3hUlx=!1Qc?njfWXkSngad#2=KDJYxqj)yeJCjo`a9Sx zl-H5`S#RH-H&AVUyKZHzt3q4xn_Bt1QHf)ftAl2F#cbi=6ZXFFY6tW2F z42r5(cLROkb6(W_AGyE`YIug>&7B{n)_5C2b@~3Y?I7ccQ+w>gH71HeCi<2e3OXT2 z$y+OSQ8c94JHPv}@S(iPBIQMH{wd_v`^U5}i78|oxzPfqPkbs{UY=?_*7HE&bTA>d zpq9wfvb;=SY^ew0ij{q^IenQf{%IiFSOQEN7c`s|;j^Zy^UowWG^nnGG>z>^p$Hn} zg(nVI*L9QCH=w|(G;e%ZgH*iqETLLG=X;@d!%R(8_np}C4}9s+{h}fJs!P3E;C=Jr zt7H};7NKI+K6{Qx%lukM$3QQlRE=KemD344R=|S^EH-*e=+Za>>@@E{t{0*{Nzw>m zVe~4oRsX|)ct@$+t1}xkp^1Gjt=M)1c9jB`ki$Tx^L#^Mr-jGximBSxBsi!hwq9gL z^OFlSpTMdFE0z8@qz3q$P6Q%b_B9CIkr5&g)l!EaJtTF;uJ>SF<+2#p63VCn$6KMtp)1R>3)K@D7{I&y|urntu&XP)9HO#jpOk?TvMK;P$oBe55st6^!YX?F#U^HB*uh2yi`t#OQK_~d(| z7e$aR!C2rNI_mL9SgA`21oUtAjJ|~R`MxchY>`&omhEPB_@LiJl zpWckAGvlI=-m>W&z8J^DV$W+~I7###S9lZBf<%h%4`J>ZVoWBtUnk@po%ZS=n}On? z99>`y{$ClNIU8*7f!I@kS6*2H#%RZnGB8=}XjiaFLuB#*bA-M#W@0llslX~0HUrKI z!%os*Oj<-ll*K=U_U1_1Aj!%^Nk|EX09w_u3xgXwcqF^NNUv;h9MH1*qtoyY69NP zm85IzDl$Oe#d+T4t=QURf_@IiLTu>_BsXX%Uz(yhp3Yy8R${=>+rtYZIZ7rbALl=G zQx5A2Y=LHW!rp6gl;P+YHewN+>4}_`SF&7z8-ApH@w*Mn zgk8fo+gpICCaVj_0VBWi7Yi;W%+HyR`JGz``}|S1B%=CygJ5V8$V(GTkR|O zrx;)Px9FFfs=6@)@q??u@C*BefZ!D6zOl2u#*U5%-&{16v^9=T)(Jfil-Oj{L zD`LF=_8M;z1#8dM8c)|B9ohhzFVTu6pKX3~ldKqZu2_&lypv+vC>%tR9)6IiE%thk~sjOLEhZXmZ-KihsAOwn7$XU-dlQ92B7gByH zQYS^Muiw5kI8~(U{`5`*b3GmHCdfKNvorvNd7h<*#@>bfC%vXT#Yx3-a~_atu2vFg zbNR(UFzs#1Qfg)@sAX&@N_(zEfis$9o^whtyXWnM>^XQ80Av0-3ypO>%dsaU%wfv1 zxomh(Q-gWubjDu`N9?3qZemH#%^XCqCVMGL<{lRlVYngoPsv4Kyd@TOJevl)lk>=J zdp}b1|Ax>BvqdB@=X^mvPlq1V7ah>aF{PdV;oag-+pM-APH7gd;O7uVQN=v9?SF=8 zBm&cuOirUxF*I6D$A@t+a0dR^lDvj5`H2IwB}0v}Sx~4oev1*twZBim>orBbytTVG z%WeOm#d_P!M=s|E(P;jPyhcy_%k+kRK0G)mNEElpj0@3z(}*o38|^JF7zTIuLkRKS zOJQYYw0MZsU#DH)huMgPofCQHoc7dSzgI3>Yy_Y<3{dhDkphCL(iaBJ$AE@t91*8Y z6nAuo30T$&8~wL8rixSQAyHyp?Bj+EXB>AISiWz7^qeu49zlo)ocM#hh;(Vmeo+8dTET!AS)f(^>;Dx_cj_Rx0IbB!P-Hwfek5v%&nOB0e7=n8#!@llPgdw#egx7w#~h3K9GUA zz>E2aTWlqMnD@xR(wHpp_4IrPd*_2AW0(q$C9nvpGBO@V636B@fU$?7f*^{sw1A5? zbKN$#92DCvC*&0j!UqQ|iO$`sx?T&@KL7Ycr0JL^O7m%vPGKPT&@24%_tvNTr^CGT z`(<@`3i^=GS}1Yo)^>f1=s+$QXR}JR;aw@^K$DU5loV<6QOZNdht0Q5;k(&Ls;HUW zh2D)3QkV4EeKu-DiGmyOuIgtUn*r`CQ8upj%bp)c8VftY&a#sYK{|u?uv0sl>oC@v zaAJbTJ`cBWy&N#Hv#XAsxfBShi7ENi&Y4h({I)wwU*sC4pNPoz;pl|-kc~s#pWBVP z9>|vwaH9yr^qvpesK1lP0ds6%&<6bg5x_ru!Ii+gnm9YnL8McRQwIU z<0&m$M|jK{gSmF6@EmO>!sq_i;?X>4q){#+)2nad)TvE{*Wro`)}eTH*$W%u30tQ8 zqJqE&DpO7Y01KfPti}R(IL4aNza7GmPnbI)G}32`?Rde#P+0=ntD#geE#LszosIaG zIc$Kye?d{}onGl|kTR#0E`=snNLw5hG6y>?{wbn+%K!u3%e5YOMlEy zztz^G|6DLXP6$m7+(K+6_Cb4dcFvOIX@gdT0^L2+&QlRN;|*d_{-*o%Wn)O~hN?&d z3Ke~S(^xM(v%fz|yboI9sI*O@b#uQ8$!y*WdD2Nk9pqooWo!R<7mnNNF_9L|;co^y zvE}tDIRo(H)NK0qah%wUDjKo~qva}ihZlvNVUk`Hl)hAM&0nxtl$Ug5UV#MMfd-WH zquY6|CpHMM3W_jgD(VnKoS2Eq@k$sCocY1Cir7GGt;7#OeYk)^`8+g1$dgU=O`I&t zNDS50Fs?Bp{2T>;up%Ie3qWPN`x$*LkvK1+jL26;`^7KcnhyZ(7+mPG{xxvKAlKd zUf|W5GdV_Ft4TkS_3yDH$1j5*Cm)p(?r6_}Fa%PRemC3$X6qYMN0cc$+bYr>`H#NV z$m7UByCk%*v6zGeBB9REL(?pil+~Z`(DEPt_|^OT+MqsC!~URMU9X&B=lusgFmQ+h z>769xl0g|K7yY?{3b;m?aWLJwy|5khufm2x?Cq!m0UIC^#6bo9&g|-&E(+rDC9{7$zg8XmTBa0 z1(T+BhL9c<4V_v!{j6^v9I2tv%$Mj_pni3hPcY*lu#pb8s;aVF}_>{*_+LInJgC=`CEL*bV9;$tv9%Zb?pqBo^v9YlfiR7fEL z-^kr5RFkdd=0}LLedZAzLX+qo=>Ua;U}=#Ahc}m|PrT?`OoSoiJa5GncrS#RZ?8(T zAFbn_@1HPg*54uh_X$(S3RYg5RQfE>AYiMt{?~S{3orPD;*eB~tUnffqTP3j3a7a% z!SR33rRf?vG&+|M^cvk*MgM?#^b9Rk*xRjoK}>@DQ~T@eJewuAKPY5gEIf+67Y^Ed zS7Mrax^%2%ec!Mcb7W`PxK_a{z06|5>8>MrlJt!|MRS6in$ME*>aKOLO>g1y%(c?; z<3cwd4<{RJ{pqPvUUu*d#L=y(MXVl*5{633)K`wUQxkJl|5dwaLSBhvZmmq=(pq@^ zu6v(QEP@DWI=6lG@CG-D17FnToxAu>o155>xtidRLo&T$6Sbb;@k57SXZshQ6kN{M zUHhN|hCJv%FP+0MoP-PBUhK+m_YJ`e$t)kxMzgGpt=i2EfZ_{t4qW@tY_lfX{hM+e z=eVd}(XsFZu-SJr@pw1Id*Zl8bVC5edSHAHv6S)E$l2MR$YEPhs>lrjg`D{~$e8qduh9Kq zg9IW1-(JLkfg*M88X#P*2oo_{FDmhwr0(ne!FvxA0jf3wLL9(bthtcYQ50T>%!1$G zu@GxoT|v+5vl^0c1Z*j(*X$i4=3>o}c zEl_0SLc*sY(R)alXWiRZw(rMzS<>9I+`J;4tjdPHiQ(+1?w^e~qxYM}P7f54IL<#E zzp0m_Q;Lf=(nh-`YaI8hTg?gPi^~!;|3k=01@QmbcI7*}x~!&r0lDNNbky-03}ZCL3@C6+Pi6hULWLr)Mgo=KB6DVCXT2m2I>Y77i&8A_QtVn7_kU zOD50!W*u%)6=2`>ZIeUQbZ6Vo@n#q(VUHj`tkw4ZUJkPCqHdT@G&r~0NxJrt;t(43Ne6u{5QBmGYtxRn(Iv}AbvI8 znfYf)RqFyUrT5#`GrI1e#rc#2Tkp@Zq-tjP9_$IWg0KvLPhXt?d&&dW)RB_Kzh6y% zy21h;U#r|lu`kh_Ge%$A2Z#y5^(2}Gk$!2-_4#-`#Rh(s$SYr)Bo7Ww*kzlZ&WUU$_R?(@ zpa0RGN&A?xquUj*|C(tJ+R0S;cR;(sb*#YR`?RUWADLigQA39O^-9_(13!Rb03zj# zb>eDN^Z_N>wxL@e>#U00d6Y-IfGi%+)+Jdq!D)DZRwdFfZ6RnPIP(e1L>#HHB@NBS z-S*Rt>6^#l@n7I)IfGcgr%7!Y#}=f?yqWCYE18R&#fH(wQnIc8R@flP7uOc7PZ$!I zyBzQua@7g~@bhG;q>tXAm<$oEJbSqWKW8*PD!c8JiEW)CY%9SCv4Z(wDJ?WJ^!N8! zdN!KH)&wWnC-&&ib_DOaNwdnPFMnO{hvFXznn0&-ub0pV#%?>teo>iso-s$8{Jt+h%o9A1UJ53aPBHpplWjf=jhJy!?sg0($}SVc_R~ zP(>pl@4Gj~m3ZLf0cJ98dXhA%{f1VvPjQBXY$JmfIlAHa!F1{)t%XiY=nq~5o_L-w zAWdk1R%sSE*1n8Dd7qU~)9@>O2i-6B+)*iL`pxYM4l{mjOy;Mz@)()n16?c#FTiAk zCqenqg_KV*?&a~XxRb}%LEgluLJ2FCL<8c(-L-1>qbn7@yW@w zcCOxR>E&WCh+zIq#qqM#qg@KE-2bO}0o>ii_p!B;t3ALP(i^5;94qtY9NHtCpJ_W*k>H%cai+;cVJnV8DBE!PZ5HX8iXJld6CL{G4c zO<$a+|HimOyXsN=I10ibVS){lfm)p-=4w_4BMwES4@9JsI?#s~u&_ zErvzuPaOhxineUZrP7#Gsr<^!JT{-AoWEt=Y`x1sBK>!fdnNfD=}|P$`PI0g zz*1^+a5+JV?cRik3B~q?Qm*3N!ViaX#S_67TR@;cHRX`fvy-ipCC)8xwacox}Sx-MEk?IsN?+ogUAx>?Mpz z#LVA-+)bfuLD(5`6q}E6e4$0)_R1Cl!8(Cx+ohy>7v5M;0hl*r2bh0XLHXqh7Nj3- zaoLa`Y_Uw%kgC1BVQkmfXhX6SxSb>xh&}t5g#T~-G!by6P7RW)@;czKKJM4P++NeP}K^uY} zpzfwlSd$D|y`}a}^{L^KVt1|BFsUpCgpU_tetYoFYwiL;8XA9x8}Ef7TwMrW0Vfb- zMx}Qy@gT>|`5@C@{ry)sWtlRq#x@-vBaZ@A#NA(t=k|n0&WeT=nbHKV09nliZj1{J z%t@g9porqZNK6WrH`@bX?kI!CM$%A?=6hbiTi^3y{W0iIqtes9I8{t~*hzUGiLN4;Ar)51noT5{n@k49rp?Tt?Nf_| z6^)9$UIZ?i%l@qWIN?{lom2-1rXg0rw3*q1t>6{tAV`?;6B#dgJxApzWvu1~?X}Jj z*RY?7+%KMiGnlGT?rf9)CctR&L?7hagr^xiaFrtib?%_M3cB_W>8I`S<-0N$3GE-s ztQLPBeXvYmPK>VxY1dbsGYl}Ch>ZEsjF@F!pENf5)BiJY)9%}~EUUpMxL+o#jYm^#PA>xAobLl$O#fuC<*qo0M{f^L3?ySV z`Dka(e%ZDXr|x9zC%JMZoaw6fBW+G_Vyr{Jij)Nm0t(_DQ9?0G4@v8AwpP23Z~{%P2 zyb}x9BP6vtZ=u)@tM5(H9k0{w5?u(O!1d>5b{x0@WrmAipf;RD&uo#p93R5Tgrc|C z7xhty-}7^}Q$l-=g~X}$~^LA`uKprWZ?7tl0n*GqHR+l8clG5Ug> zJ3gYsi%_|gSS9fI3iU?i!uX0td9^8L@VN&v&2H~?bN6KT+jdtdnnWade6cR6>q~q& z2Dyrb;(?+ma4?EONZstcUx_d4!;KKC(R05%dcUDvI%sM?1{EvPj&+>5UEgV3{Lr;> zrRUd&+YTJ%cd4VM$?$x<*XB1a+w2pzuM@%DLGW)LpI@iy21t0AxDLnkSiED8w7Q9) zhoq4Gp#8p{G1$ziE4*`v*2G*G)jyyjILPvVF*Dx1HrcP_s3hE@(Bv#zX=NgB9L@Hj zfvBOCS3dj`aqLCVd=mNmXYtyIS0N z!S(X;gP##TxMGU-yA=2EZa|31Md}i2YmAr8bWr(q-_SWr$P{`dKfmPks?sFAe;g}; zpZ=JYI8@SWWAKu{2Z*9Bx>NqpK_6fvT4{i#kX*y7Bv|7FRbdr<<#9j4xfV_Nl}oQj zy&9ufQBc6+aq<%s4j!_ClGu8UjSHJBPWf4OcDrCL{S?%$vh>7POh?iR3m5x%#Z^pR zRx98BnY}edRV%~J{eKp~WWLbfC}mAuwOx_YwYTOw#gqJvB&3qVM(Xl3vDG%6_}z

0wN$n_?f%}=o>gAcA61TCZ% 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 literal 0 HcmV?d00001 From e1286e51a3762fd233d7da4de63b3076c31ea316 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=B0smail=20KILI=C3=87?= Date: Thu, 9 May 2024 23:55:45 -0700 Subject: [PATCH 45/50] Update code_style_guideline.md for imports --- code_style_guideline/code_style_guideline.md | 53 +++++++++++++++++++- 1 file changed, 51 insertions(+), 2 deletions(-) diff --git a/code_style_guideline/code_style_guideline.md b/code_style_guideline/code_style_guideline.md index 06ff976..c2c0ac1 100644 --- a/code_style_guideline/code_style_guideline.md +++ b/code_style_guideline/code_style_guideline.md @@ -21,7 +21,7 @@ Our overarching goals are clarity, consistency and brevity, in that order. * [Code Organization](#code-organization) * [Protocol Conformance](#protocol-conformance) * [Unused Code](#unused-code) - * [Minimal Imports](#minimal-imports) + * [Imports](#imports) * [Spacing](#spacing) * [Comments](#comments) * [Explicit Documentation](#explicit-documentation) @@ -332,7 +332,56 @@ override func tableView(_ tableView: UITableView, numberOfRowsInSection section: } ``` -### Minimal Imports +### Imports + +Alphabetize and deduplicate module imports within a file. Place all imports at the top of the file below the header comments. Do not add additional line breaks between import statements. Add a single empty line before the first import and after the last import. SwiftFormat: **sortedImports** SwiftFormat: **duplicateImports** + +A standard organization method helps engineers more quickly determine which modules a file depends on. +Duplicated import statements have no effect and should be removed for clarity. +**Not Preferred**: +```swift +// Copyright © 2018 Airbnb. All rights reserved. +// +import DLSPrimitives +import Constellation +import Constellation +import Epoxy + +import Foundation +``` +**Preferred**: +```swift +// Copyright © 2018 Airbnb. All rights reserved. +// + +import Constellation +import DLSPrimitives +import Epoxy +import Foundation +Exception: @testable import should be grouped after the regular import and separated by an empty line. +``` +**Not Preferred**: +```swift +Details +// Copyright © 2018 Airbnb. All rights reserved. +// + +import DLSPrimitives +@testable import Epoxy +import Foundation +import Nimble +import Quick +``` +**Preferred**: +```swift +// Copyright © 2018 Airbnb. All rights reserved. +// + +import DLSPrimitives +import Foundation +import Nimble +import Quick +``` Import only the modules a source file requires. For example, don't import `UIKit` when importing `Foundation` will suffice. Likewise, don't import `Foundation` if you must import `UIKit`. From 51caa2751d65bfbe125fe3101fa8c151684805e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=B0smail=20KILI=C3=87?= Date: Fri, 10 May 2024 00:47:07 -0700 Subject: [PATCH 46/50] Update code_style_guideline.md --- code_style_guideline/code_style_guideline.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code_style_guideline/code_style_guideline.md b/code_style_guideline/code_style_guideline.md index d4d8143..031521d 100644 --- a/code_style_guideline/code_style_guideline.md +++ b/code_style_guideline/code_style_guideline.md @@ -19,7 +19,7 @@ Our overarching goals are clarity, consistency and brevity, in that order. * [Generics](#generics) * [Class and Structs](#class-struct) * [Language](#language) - * [String Concatenation] (#string-concatenation) + * [String Concatenation](#string-concatenation) * [Code Organization](#code-organization) * [Protocol Conformance](#protocol-conformance) * [Unused Code](#unused-code) From f038964913a4d81545d9f1ca7d1570f0c670fc66 Mon Sep 17 00:00:00 2001 From: "tolga.yildirim" Date: Fri, 10 May 2024 15:20:28 +0300 Subject: [PATCH 47/50] todo's fix --- code_style_guideline/code_style_guideline.md | 55 ++++++++++++++++++-- 1 file changed, 51 insertions(+), 4 deletions(-) diff --git a/code_style_guideline/code_style_guideline.md b/code_style_guideline/code_style_guideline.md index 518f7f9..35662fb 100644 --- a/code_style_guideline/code_style_guideline.md +++ b/code_style_guideline/code_style_guideline.md @@ -977,7 +977,7 @@ var deviceModels: [String] ![Xcode while editing settings](screens/text-editing-while-editing.png) -* Also, Indent using 2 spaces rather than tabs to conserve space and help prevent line wrapping. Be sure to set this preference in Xcode and in the Project settings as shown below: +* While the generall recommendation advises indenting with 2 spaces rather than tabs to save space and prevent line wrapping, we've chosen to adhere to our decision of using 4 spaces for indentation. Be sure to set this preference in Xcode and in the Project settings as shown below:: ![Xcode indent settings](screens/text-editing-tab-width-indent.png) @@ -1110,8 +1110,6 @@ else { - There should be one blank line between methods and up to one blank line between type declarations to aid in visual clarity and organization. Whitespace within methods should separate functionality, but having too many sections in a method often means you should refactor into several methods. - There should be no blank lines after an opening brace or before a closing brace. - -- Closing parentheses should not appear on a line by themselves. // TODO: - We should talk about this issue again - Depending on the need, you can also use **Control-m** if there won't be too much distortion in the pattern and there is a subject that involves more than one parameter. @@ -1273,7 +1271,56 @@ class TestDatabase : Database { #### 8. Multi Line Conditions -// TODO: **We should talk about this issue again** +Multi-line conditional statements should break after the leading keyword. Indent each individual statement by 2 spaces. + +*Why?* +Breaking after the leading keyword resets indentation to the standard 2-space grid, which helps avoid fighting Xcode's control + i indentation behavior. + +**Preferred**: +```swift +if + let galaxy, + galaxy.name == "Milky Way" +{ … } + +guard + let galaxy, + galaxy.name == "Milky Way" +else { … } + +guard + let earth = universe.find( + .planet, + named: "Earth"), + earth.isHabitable +else { … } + +if let galaxy { + … +} + +guard let galaxy else { + … +} + +``` + +**Not Preferred**: +```swift +if let galaxy, + galaxy.name == "Milky Way" // Indenting by two spaces fights Xcode's ^+I indentation behavior +{ … } + +guard let galaxy, + galaxy.name == "Milky Way" // Variable width indentation (6 spaces) +else { … } + +guard let earth = universe.find( + .planet, + named: "Earth"), + earth.isHabitable // Blends in with previous condition's method arguments +else { … } +``` #### 9. Closure Brace Spacing From 708fc45c4da78478e5962786913199d1f995c9f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emin=20O=CC=88zkalayc=C4=B1og=CC=86lu?= Date: Mon, 13 May 2024 16:45:20 +0300 Subject: [PATCH 48/50] add omitting return reference --- code_style_guideline/code_style_guideline.md | 1 + 1 file changed, 1 insertion(+) diff --git a/code_style_guideline/code_style_guideline.md b/code_style_guideline/code_style_guideline.md index b1b6835..8b1a592 100644 --- a/code_style_guideline/code_style_guideline.md +++ b/code_style_guideline/code_style_guideline.md @@ -21,6 +21,7 @@ Our overarching goals are clarity, consistency and brevity, in that order. * [Code Organization](#code-organization) * [Protocol Conformance](#protocol-conformance) * [Unused Code](#unused-code) + * [Omitting Return](#omitting-return) * [Minimal Imports](#minimal-imports) * [Spacing](#spacing) * [Comments](#comments) From 2b10edf01e292f8839cb777983dc0b04cae622be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emin=20O=CC=88zkalayc=C4=B1og=CC=86lu?= Date: Mon, 13 May 2024 17:08:37 +0300 Subject: [PATCH 49/50] remove details tag --- code_style_guideline/code_style_guideline.md | 312 ------------------- 1 file changed, 312 deletions(-) diff --git a/code_style_guideline/code_style_guideline.md b/code_style_guideline/code_style_guideline.md index 2747782..355c687 100644 --- a/code_style_guideline/code_style_guideline.md +++ b/code_style_guideline/code_style_guideline.md @@ -114,17 +114,12 @@ For the above example using `UIGestureRecognizer`, 1 is unambiguous and preferre Swift types are automatically namespaced by the module that contains them and you should not add a class prefix such as RW. If two names from different modules collide you can disambiguate by prefixing the type name with the module name. However, only specify the module name when there is possibility for confusion, which should be rare. -

-Examples - ```swift import SomeModule let myClass = MyModule.UsefulClass() ``` -
- ### Methods Methods without side-effects have names in the form of what: `let size = view.originalSize()`. @@ -137,9 +132,6 @@ Parameter names follow rules for variable names. An engineer shall make use of S Factory method names start with the word "make". Both factory methods and initializers have their parameters as a list of items, they are not required to form phrases. -
-Examples - **Preferred**: ```swift init(name: String, id: Int) @@ -151,13 +143,8 @@ func makeView(position: CGPoint, size: CGSize) -> UIView init(withName name: String, andID id: Int) ``` -
- UIKit's UIControl actions are called with the control's name in the beginning and the "tapped" word in the end: -
-Examples - **Preferred**: ```swift @objc @@ -170,13 +157,8 @@ private func nextButtonTapped(_ sender: UIButton) { // ... private func nextButtonAction(_ sender: UIButton) { // ... ``` -
- Omit unused parameters. -
-Examples - **Preferred**: ```swift func calculateSum(_ a: Int, _ b: Int) -> Int { @@ -191,13 +173,8 @@ func calculateSum(_ a: Int, _ b: Int, _ c: Int) -> Int { } ``` -
- Omit `Void` return types from function definitions. -
-Examples - **Preferred**: ```swift func performTask() { @@ -212,13 +189,8 @@ func performTask() -> Void { } ``` -
- Long function invocations should also break on each argument. Put the closing parenthesis on the last line of the invocation. -
-Examples - **Preferred**: ```swift universe.generateStars(at: location, @@ -266,19 +238,12 @@ universe.generateStars( universe.generateStars(at: location, count: 5, color: starColor, withAverageDistance: 4) ``` -
- However, if the return value might be useful in some specific situations, it doesn't force one to use it (the `@discardableResult` annotation serves this purpose). Though, such return values are not encouraged. An engineer shall follow the principle of [the command-query separation](https://en.wikipedia.org/wiki/Command–query_separation). - - ### Delegates When creating custom delegate methods, an unnamed first parameter should be the delegate source. (UIKit contains numerous examples of this.) -
-Examples - **Preferred**: ```swift func namePickerView(_ namePickerView: NamePickerView, didSelectName name: String) @@ -291,8 +256,6 @@ func didSelectName(namePicker: NamePickerViewController, name: String) func namePickerShouldReload() -> Bool ``` -
- ### Interface Classes and structures are named using noun phrases, as well as protocols describing what an object is. Protocols which add abilities are named descriptively (e.g., `Sortable`). Protocols should not have the word `Protocol` at the end of the name. Instead, conforming types should have a specifying word in the name, because protocols are general, but classes and structures are specific. @@ -301,9 +264,6 @@ Types implementing design patterns are usually named with the pattern name at th No prefixes shall be used (e.g., just `PriceCalculator` instead of `XYZPriceCalculator`), since there's no necessity for that in Swift (other than, maybe, to maintain consistency with Objective-C libraries and components). -
-Examples - **Preferred**: ```swift protocol Engine { } @@ -316,15 +276,10 @@ protocol EngineProtocol { } struct Engine: EngineProtocol { } ``` -
- ### Use Type Inferred Context Use compiler inferred context to write shorter, clear code. (Also see [Type Inference](#type-inference).) -
-Examples - **Preferred**: ```swift let selector = #selector(viewDidLoad) @@ -341,15 +296,10 @@ let toView = context.view(forKey: UITransitionContextViewKey.to) let view = UIView(frame: CGRect.zero) ``` -
- ### Generics Generic type parameters should be descriptive, upper camel case names. When a type name doesn't have a meaningful relationship or role, use a traditional single uppercase letter such as `T`, `U`, or `V`. -
-Examples - **Preferred**: ```swift struct Stack { ... } @@ -364,15 +314,10 @@ func write(to target: inout target) func swap(_ a: inout Thing, _ b: inout Thing) ``` -
- ### Language Use US English spelling to match Apple's API. -
-Examples - **Preferred**: ```swift let color = "red" @@ -383,8 +328,6 @@ let color = "red" let colour = "red" ``` -
- ## Code Organization Use extensions to organize your code into logical blocks of functionality. Each extension should be set off with a `// MARK: -` comment to keep things well-organized. @@ -393,9 +336,6 @@ Use extensions to organize your code into logical blocks of functionality. Each In particular, when adding protocol conformance to a model, prefer adding a separate extension for the protocol methods. This keeps the related methods grouped together with the protocol and can simplify instructions to add a protocol to a class with its associated methods. -
-Examples - **Preferred**: ```swift class MyViewController: UIViewController { @@ -420,8 +360,6 @@ class MyViewController: UIViewController, UITableViewDataSource, UIScrollViewDel } ``` -
- Since the compiler does not allow you to re-declare protocol conformance in a derived class, it is not always required to replicate the extension groups of the base class. This is especially true if the derived class is a terminal class and a small number of methods are being overridden. When to preserve the extension groups is left to the discretion of the author. For UIKit view controllers, consider grouping lifecycle, custom accessors, and IBAction in separate class extensions. @@ -432,9 +370,6 @@ Unused (dead) code, including Xcode template code and placeholder comments shoul Aspirational methods not directly associated with the tutorial whose implementation simply calls the superclass should also be removed. This includes any empty/unused UIApplicationDelegate methods. -
-Examples - **Preferred**: ```swift override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { @@ -461,15 +396,10 @@ override func tableView(_ tableView: UITableView, numberOfRowsInSection section: ``` -
- ### Minimal Imports Import only the modules a source file requires. For example, don't import `UIKit` when importing `Foundation` will suffice. Likewise, don't import `Foundation` if you must import `UIKit`. -
-Examples - **Preferred**: ```swift import UIKit @@ -497,8 +427,6 @@ import UIKit var deviceModels: [String] ``` -
- ## Spacing * Indent using 2 spaces rather than tabs to conserve space and help prevent line wrapping. Be sure to set this preference in Xcode and in the Project settings as shown below: @@ -506,9 +434,6 @@ var deviceModels: [String] * Method braces and other braces (`if`/`else`/`switch`/`while` etc.) always open on the same line as the statement but close on a new line. * Tip: You can re-indent by selecting some code (or **Command-A** to select all) and then **Control-I** (or **Editor ▸ Structure ▸ Re-Indent** in the menu). Some of the Xcode template code will have 4-space tabs hard coded, so this is a good way to fix that. -
-Examples - **Preferred**: ```swift if user.isHappy { @@ -529,17 +454,12 @@ else { } ``` -
- * There should be one blank line between methods and up to one blank line between type declarations to aid in visual clarity and organization. Whitespace within methods should separate functionality, but having too many sections in a method often means you should refactor into several methods. * There should be no blank lines after an opening brace or before a closing brace. * Closing parentheses should not appear on a line by themselves. -
-Examples - **Preferred**: ```swift let user = try await getUser( @@ -555,13 +475,8 @@ let user = try await getUser( ) ``` -
- * Colons always have no space on the left and one space on the right. Exceptions are the ternary operator `? :`, empty dictionary `[:]` and `#selector` syntax `addTarget(_:action:)`. -
-Examples - **Preferred**: ```swift class TestDatabase: Database { @@ -576,8 +491,6 @@ class TestDatabase : Database { } ``` -
- * Long lines should be wrapped at around 70 characters. A hard limit is intentionally not specified. * Avoid trailing whitespaces at the ends of lines. @@ -608,9 +521,6 @@ Indicating a method's time complexity in documentation generally is a good idea, The basic structure of multi-line descriptions: -
-Examples - **Preferred**: ```swift /// Summary. @@ -639,8 +549,6 @@ Detailed description. */ ``` -
- Though, if a method has any parameters, they are necessary to be documented. A single parameter must be documented as - Parameter: Description. Multiple parameters shall be documented by the help of - Parameters: syntax. If the method has functions as parameters, their arguments must have labels and be documented, as well. If a method's return value type is not Void, it should be documented. @@ -649,9 +557,6 @@ If a method throws an exception, the exception is documented with Throws. Two HeaderDoc parts are divided by a single blank line. However, if there's no description, blank lines are omitted: -
-Examples - **Preferred**: ```swift // Summary. @@ -671,8 +576,6 @@ Two HeaderDoc parts are divided by a single blank line. However, if there's no d // - Throws: Exception description. ``` -
- ## Classes and Structures ### Which one to use? @@ -687,9 +590,6 @@ Sometimes, things should be structs but need to conform to `AnyObject` or are hi Here's an example of a well-styled class definition: -
-Examples - ```swift class Circle: Shape { var x: Int, y: Int @@ -728,8 +628,6 @@ extension Circle: CustomStringConvertible { } ``` -
- The example above demonstrates the following style guidelines: + Specify types for properties, variables, constants, argument declarations and other statements with a space after the colon but not before, e.g. `x: Int`, and `Circle: Shape`. @@ -750,9 +648,6 @@ Use self only when required by the compiler (in `@escaping` closures, or in init For conciseness, if a computed property is read-only, omit the get clause. The get clause is required only when a set clause is provided. -
-Examples - **Preferred**: ```swift var diameter: Double { @@ -769,15 +664,10 @@ var diameter: Double { } ``` -
- ### Final Marking classes or members as `final` in tutorials can distract from the main topic and is not required. Nevertheless, use of `final` can sometimes clarify your intent and is worth the cost. In the below example, `Box` has a particular purpose and customization in a derived class is not intended. Marking it `final` makes that clear. -
-Examples - ```swift // Turn any generic type into a reference type using this Box class. final class Box { @@ -788,28 +678,18 @@ final class Box { } ``` -
- ## Function Declarations Keep short function declarations on one line including the opening brace: -
-Examples - ```swift func reticulateSplines(spline: [Double]) -> Bool { // reticulate code goes here } ``` -
- For functions with long signatures, put each parameter on a new line and add an extra indent on subsequent lines: -
-Examples - ```swift func reticulateSplines( spline: [Double], @@ -821,13 +701,8 @@ func reticulateSplines( } ``` -
- Don't use `(Void)` to represent the lack of an input; simply use `()`. Use `Void` instead of `()` for closure and function outputs. -
-Examples - **Preferred**: ```swift @@ -848,26 +723,16 @@ func updateConstraints() -> () { typealias CompletionHandler = (result) -> () ``` -
- ## Function Calls Mirror the style of function declarations at call sites. Calls that fit on a single line should be written as such: -
-Examples - ```swift let success = reticulateSplines(splines) ``` -
- If the call site must be wrapped, put each parameter on a new line, indented one additional level: -
-Examples - ```swift let success = reticulateSplines( spline: splines, @@ -876,13 +741,8 @@ let success = reticulateSplines( comment: "normalize the display") ``` -
- A method declaration is placed on a single line if it can fit most display screen widths without a carry-over. Otherwise, each parameter is placed on its own line and matches the beginning of the previous one. Return type carries on to the last parameter's line. -
-Examples - **Preferred**: ```swift @@ -906,15 +766,10 @@ func fetchResults(from endpoint: URL, transferringTo device: Device, compressed: Bool, completionHandler: (() -> Void)?) –> [Data] ``` -
- ## Closure Expressions Use trailing closure syntax only if there's a single closure expression parameter at the end of the argument list. Give the closure parameters descriptive names. -
-Examples - **Preferred**: ```swift UIView.animate(withDuration: 1.0) { @@ -941,13 +796,8 @@ UIView.animate(withDuration: 1.0, animations: { } ``` -
- For single-expression closures where the context is clear, use implicit returns: -
-Examples - ```swift attendeeList.sort { a, b in a > b @@ -965,13 +815,8 @@ array.filter { $0 > 0 } .sort { $0 > $1 }.map { Int($0) } ``` -
- Chained methods using trailing closures should be clear and easy to read in context. Decisions on spacing, line breaks, and when to use named versus anonymous arguments is left to the discretion of the author. Examples: -
-Examples - ```swift let value = numbers.map { $0 * 2 }.filter { $0 % 3 == 0 }.index(of: 90) @@ -981,15 +826,10 @@ let value = numbers .map {$0 + 10} ``` -
- ## Types Always use Swift's native types and expressions when available. Swift offers bridging to Objective-C so you can still use the full set of methods as needed. -
-Examples - **Preferred**: ```swift let width = 120.0 // Double @@ -1008,8 +848,6 @@ let width: NSNumber = 120.0 // NSNumber let widthString: NSString = width.stringValue // NSString ``` -
- In drawing code, use `CGFloat` if it makes the code more succinct by avoiding too many conversions. ## Initialization @@ -1018,9 +856,6 @@ If the initial or constant value of a property doesn't depend on the initializer `.init()` is not used for initialization: -
-Examples - **Preferred**: ```swift let color = UIColor(displayP3Red: 1.0, green: 0.0, blue: 0.0, alpha: 1.0) @@ -1031,8 +866,6 @@ let color = UIColor(displayP3Red: 1.0, green: 0.0, blue: 0.0, alpha: 1.0) let color: UIColor = .init(displayP3Red: 1.0, green: 0.0, blue: 0.0, alpha: 1.0) ``` -
- ### Constants Constants are defined using the `let` keyword and variables with the `var` keyword. Always use `let` instead of `var` if the value of the variable will not change. @@ -1041,9 +874,6 @@ Constants are defined using the `let` keyword and variables with the `var` keywo You can define constants on a type rather than on an instance of that type using type properties. To declare a type property as a constant simply use `static let`. Type properties declared in this way are generally preferred over global constants because they are easier to distinguish from instance properties. Example: -
-Examples - **Preferred**: ```swift enum Math { @@ -1066,8 +896,6 @@ let root2 = 1.41421356237309504880168872 let hypotenuse = side * root2 // what is root2? ``` -
- ### Static Methods and Variable Type Properties Static methods and type properties work similarly to global functions and global variables and should be used sparingly. They are useful when functionality is scoped to a particular type or when Objective-C interoperability is required. @@ -1082,20 +910,12 @@ Don't use as! or try!. When accessing an optional value, use optional chaining if the value is only accessed once or if there are many optionals in the chain: -
-Examples - ```swift textContainer?.textLabel?.setNeedsDisplay() ``` -
- Use optional binding when it's more convenient to unwrap once and perform multiple operations: -
-Examples - ```swift if let textContainer = textContainer { // do many things with textContainer @@ -1103,29 +923,19 @@ if let textContainer = textContainer { ``` -
- **Notes:** Swift 5.7 introduced new shorthand syntax for unwrapping optionals into shadowed variables: -
-Examples - ```swift if let textContainer { // do many things with textContainer } ``` -
- When naming optional variables and properties, avoid naming them like `optionalString` or `maybeView` since their optional-ness is already in the type declaration. For optional binding, shadow the original name whenever possible rather than using names like `unwrappedView` or `actualLabel`. -
-Examples - **Preferred**: ```swift var subview: UIView? @@ -1162,13 +972,8 @@ UIView.animate(withDuration: 2.0) { [weak self] in } ``` -
- If you don't plan on actually using the value stored in an optional, but need to determine whether or not this value is `nil`, explicitly check this value against `nil` as opposed to using `if let` syntax. -
-Examples - **Preferred**: ```swift if someOptional != nil { @@ -1184,13 +989,8 @@ if let _ = someOptional { } ``` -
- Use XCTUnwrap instead of forced unwrapping in tests. -
-Examples - **Preferred**: ```swift let product = try XCTUnwrap(priceComparisonResponse.stores?.first?.products?.first) @@ -1201,15 +1001,10 @@ let product = try XCTUnwrap(priceComparisonResponse.stores?.first?.products?.fir let product = priceComparisonResponse.stores!.first!.products!.first! ``` -
- ### Lazy Initialization Consider using lazy initialization for finer grained control over object lifetime. This is especially true for `UIViewController` that loads views lazily. You can either use a closure that is immediately called `{ }()` or call a private factory method. Example: -
-Examples - ```swift lazy var locationManager = makeLocationManager() @@ -1222,8 +1017,6 @@ private func makeLocationManager() -> CLLocationManager { } ``` -
- **Notes:** - `[unowned self]` is not required here. A retain cycle is not created. - Location manager has a side-effect for popping up UI to ask the user for permission so fine grain control makes sense here. @@ -1233,9 +1026,6 @@ private func makeLocationManager() -> CLLocationManager { Prefer compact code and let the compiler infer the type for constants or variables of single instances. Type inference is also appropriate for small, non-empty arrays and dictionaries. When required, specify the specific type such as `CGFloat` or `Int16`. -
-Examples - **Preferred**: ```swift let message = "Click the button" @@ -1251,15 +1041,10 @@ let currentBounds: CGRect = computeViewBounds() var names = [String]() ``` -
- #### Type Annotation for Empty Arrays and Dictionaries For empty arrays and dictionaries, use type annotation. (For an array or dictionary assigned to a large, multi-line literal, use type annotation.) -
-Examples - **Preferred**: ```swift var names: [String] = [] @@ -1272,15 +1057,10 @@ var names = [String]() var lookup = [String: Int]() ``` -
- **NOTE**: Following this guideline means picking descriptive names is even more important than before. Array literals shall not contain spaces after the left square bracket and before the right one. The included items shall be listed one below another, aligned at the same level of indentation. The first element shall be on the declaration's line. The closing bracket shall go on the same line with the last item. However, if items are short and their sequence can be read easily (e.g., integer literals) it's acceptable to have them all on the one line. -
-Examples - **Preferred**: ```swift var numbers = [1, 2, 3] @@ -1312,15 +1092,10 @@ let airVehicles = [ ] ``` -
- ### Syntactic Sugar Prefer the shortcut versions of type declarations over the full generics syntax. -
-Examples - **Preferred**: ```swift var deviceModels: [String] @@ -1335,17 +1110,12 @@ var employees: Dictionary var faxNumber: Optional ``` -
- ## Functions vs Methods Free functions, which aren't attached to a class or type, should be used sparingly. When possible, prefer to use a method instead of a free function. This aids in readability and discoverability. Free functions are most appropriate when they aren't associated with any particular type or instance. -
-Examples - **Preferred** ```swift let sorted = items.mergeSorted() // easily discoverable @@ -1358,20 +1128,13 @@ let sorted = mergeSort(items) // hard to discover launch(&rocket) ``` -
- **Free Function Exceptions** -
-Examples - ```swift let tuples = zip(a, b) // feels natural as a free function (symmetry) let value = max(x, y, z) // another free function that feels natural ``` -
- ## Memory Management Code (even non-production, tutorial demo code) should not create reference cycles. Analyze your object graph and prevent strong cycles with `weak` and `unowned` references. Alternatively, use value types (`struct`, `enum`) to prevent cycles altogether. @@ -1380,9 +1143,6 @@ Code (even non-production, tutorial demo code) should not create reference cycle Extend object lifetime using the `[weak self]` and `guard let self = self else { return }` idiom. `[weak self]` is preferred to `[unowned self]` where it is not immediately obvious that `self` outlives the closure. Explicitly extending lifetime is preferred to optional chaining. -
-Examples - **Preferred** ```swift resource.request().onComplete { [weak self] response in @@ -1412,8 +1172,6 @@ resource.request().onComplete { [weak self] response in } ``` -
- ## Access Control Full access control annotation in tutorials can distract from the main topic and is not required. Using `private` and `fileprivate` appropriately, however, adds clarity and promotes encapsulation. Prefer `private` to `fileprivate`; use `fileprivate` only when the compiler insists. @@ -1422,9 +1180,6 @@ Only explicitly use `open`, `public`, and `internal` when you require a full acc Use access control as the leading property specifier. The only things that should come before access control are the `static` specifier or attributes such as `@IBAction`, `@IBOutlet` and `@discardableResult`. -
-Examples - **Preferred**: ```swift private let message = "Great Scott!" @@ -1443,15 +1198,10 @@ class TimeMachine { } ``` -
- ## Control Flow Prefer the `for-in` style of `for` loop over the `while-condition-increment` style. -
-Examples - **Preferred**: ```swift for _ in 0..<3 { @@ -1488,15 +1238,10 @@ while i < attendeeList.count { } ``` -
- ### Ternary Operator The Ternary operator, `?:` , should only be used when it increases clarity or code neatness. A single condition is usually all that should be evaluated. Evaluating multiple conditions is usually more understandable as an `if` statement or refactored into instance variables. In general, the best use of the ternary operator is during assignment of a variable and deciding which value to use. -
-Examples - **Preferred**: ```swift @@ -1513,13 +1258,8 @@ result = isHorizontal ? x : y result = a > b ? x = c > d ? c : d : y ``` -
- The ternary operator `?`-`:` shall not be used where the single `if`-check is sufficient, because although it can save lines, it makes the intention unclear and spawns extra entities (empty tuples or functions). -
-Examples - **Preferred**: ```swift if error == nil { @@ -1534,16 +1274,11 @@ error == nil : () ``` -
- ### Switch Statements One level of indentation is used inside a `switch`'s parentheses and for `case` implementations. All statements inside the cases of a `switch` statement start on separate lines. -
-Examples - **Preferred**: ```swift @@ -1567,15 +1302,10 @@ switch direction { } ``` -
- ## Golden Path When coding with conditionals, the left-hand margin of the code should be the "golden" or "happy" path. That is, don't nest `if` statements. Multiple return statements are OK. The `guard` statement is built for this. -
-Examples - **Preferred**: ```swift func computeFFT(context: Context?, inputData: InputData?) throws -> Frequencies { @@ -1608,13 +1338,8 @@ func computeFFT(context: Context?, inputData: InputData?) throws -> Frequencies } ``` -
- When multiple optionals are unwrapped either with `guard` or `if let`, minimize nesting by using the compound version when possible. In the compound version, place the `guard` on its own line, then indent each condition on its own line. The `else` clause is indented to match the `guard` itself, as shown below. Example: -
-Examples - **Preferred**: ```swift guard @@ -1644,13 +1369,8 @@ if let number1 = number1 { } ``` -
- In any `guard`-statement, the `else` (and its left brace) goes on the same line after the last condition. -
-Examples - **Preferred**: ```swift guard !array.isEmpty else { @@ -1664,8 +1384,6 @@ guard !array.isEmpty // ... ``` -
- ### Failing Guards Guard statements are required to exit in some way. Generally, this should be simple one line statement such as `return`, `throw`, `break`, `continue`, and `fatalError()`. Large code blocks should be avoided. If cleanup code is required for multiple exit points, consider using a `defer` block to avoid cleanup code duplication. @@ -1676,9 +1394,6 @@ Swift does not require a semicolon after each statement in your code. They are o Do not write multiple statements on a single line separated with semicolons. -
-Examples - **Preferred**: ```swift let swift = "not a scripting language" @@ -1689,17 +1404,12 @@ let swift = "not a scripting language" let swift = "not a scripting language"; ``` -
- **NOTE**: Swift is very different from JavaScript, where omitting semicolons is [generally considered unsafe](https://stackoverflow.com/questions/444080/do-you-recommend-using-semicolons-after-every-statement-in-javascript) ## Parentheses Parentheses around conditionals are not required and should be omitted. -
-Examples - **Preferred**: ```swift if name == "Hello" { @@ -1714,27 +1424,17 @@ if (name == "Hello") { } ``` -
- In larger expressions, optional parentheses can sometimes make code read more clearly. -
-Examples - **Preferred**: ```swift let playerMark = (player == current ? "X" : "O") ``` -
- ## Multi-line String Literals When building a long string literal, you're encouraged to use the multi-line string literal syntax. Open the literal on the same line as the assignment but do not include text on that line. Indent the text block one additional level. -
-Examples - **Preferred**: ```swift @@ -1767,15 +1467,10 @@ let message = "You cannot charge the flux " + "which costs 10 credits. You currently " + "have \(credits) credits available." ``` -
- ## Line breaks Long expressions are broken into several parts on different lines so that the symbol that connects two parts of expression starts the new line. Each new line is indented with one additional indentation level. Having a special character starting a new line avoids creating the illusion that a new line is a new statement. -
-Examples - **Preferred**: ```swift let a = (a + b) @@ -1788,15 +1483,10 @@ let a = (a + b) + (a + c) ``` -
- ## Pre-processor Directives Any macros shall not be indented, the surrounded code shall be formatted as if the macro doesn't exist. -
-Examples - **Preferred**: ```swift func handleLogin() { @@ -1817,8 +1507,6 @@ func handleLogin() { } ``` -
- ## No Emoji Do not use emoji in your projects. For those readers who actually type in their code, it's an unnecessary source of friction. While it may be cute, it doesn't add to the learning and it interrupts the coding flow for these readers. From 44672d32c93638f0973c2a1d3ea61b756d91b84c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emin=20O=CC=88zkalayc=C4=B1og=CC=86lu?= Date: Mon, 13 May 2024 17:11:55 +0300 Subject: [PATCH 50/50] remove extra lines --- code_style_guideline/code_style_guideline.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/code_style_guideline/code_style_guideline.md b/code_style_guideline/code_style_guideline.md index 355c687..0473e44 100644 --- a/code_style_guideline/code_style_guideline.md +++ b/code_style_guideline/code_style_guideline.md @@ -885,7 +885,6 @@ let hypotenuse = side * Math.root2 ``` - **Note:** The advantage of using a case-less enumeration is that it can't accidentally be instantiated and works as a pure namespace. **Not Preferred**: @@ -931,7 +930,6 @@ if let textContainer { } ``` - When naming optional variables and properties, avoid naming them like `optionalString` or `maybeView` since their optional-ness is already in the type declaration. For optional binding, shadow the original name whenever possible rather than using names like `unwrappedView` or `actualLabel`.