Buscar..


Observaciones

Swift tiene una guía de estilo oficial: Swift.org API Design Guidelines . Otra guía popular es The Official raywenderlich.com Swift Style Guide.

Claro uso

Evitar la ambigüedad

El nombre de las clases, estructuras, funciones y variables debe evitar la ambigüedad.

Ejemplo:

extension List {
    public mutating func remove(at position: Index) -> Element {
        // implementation
    }
}

La llamada a la función a esta función se verá así:

list.remove(at: 42)

De esta manera, se evita la ambigüedad. Si la llamada a la función sería simplemente list.remove(42) no estaría claro, si se eliminaría un Elemento igual a 42 o si se eliminaría el Elemento en el Índice 42.


Evitar la redundancia

El nombre de las funciones no debe contener información redundante.

Un mal ejemplo sería:

extension List {
    public mutating func removeElement(element: Element) -> Element? {
        // implementation
    }
}

Una llamada a la función puede verse como list.removeElement(someObject) . La variable someObject ya indica que se ha eliminado un elemento. Sería mejor que la firma de función se vea así:

extension List {
    public mutating func remove(_ member: Element) -> Element? {
        // implementation
    }
}

La llamada a esta función se ve así: list.remove(someObject) .


Nombrando variables de acuerdo a su rol.

Las variables deben ser nombradas por su rol (por ejemplo, proveedor, saludo) en lugar de su tipo (por ejemplo, fábrica, cadena, etc.)

Alto acoplamiento entre nombre de protocolo y nombres de variable

Si el nombre del tipo describe su rol en la mayoría de los casos (por ejemplo, Iterator), el tipo debe nombrarse con el sufijo `Type`. (por ejemplo, IteratorType)

Proporcionar detalles adicionales cuando se utilizan parámetros de tipo débil

Si el tipo de un objeto no indica claramente su uso en una llamada de función, la función debe nombrarse con un nombre precedente para cada parámetro de tipo débil, describiendo su uso.
Ejemplo:
func addObserver(_ observer: NSObject, forKeyPath path: String)

a la que se vería una llamada como `object.addObserver (self, forKeyPath: path)

en lugar de

func add(_ observer: NSObject, for keyPath: String)

a la que una llamada se vería como object.add(self, for: path)

Uso fluido

Usando lenguaje natural

Las llamadas de funciones deben estar cerca del idioma inglés natural.

Ejemplo:

list.insert(element, at: index) 

en lugar de

list.insert(element, position: index)

Métodos de fábrica de nombres

Los métodos de fábrica deben comenzar con el prefijo `make`.

Ejemplo:

factory.makeObject()

Nombrando Parámetros en Inicializadores y Métodos de Fábrica

El nombre del primer argumento no debe involucrarse al nombrar un método de fábrica o un inicializador.

Ejemplo:

factory.makeObject(key: value)

En lugar de:

factory.makeObject(havingProperty: value)

Nombrar de acuerdo a los efectos secundarios

  • Las funciones con efectos secundarios (funciones de mutación) deben nombrarse usando verbos o sustantivos con el prefijo form- .
  • Las funciones sin efectos secundarios (funciones no mutantes) deben nombrarse usando sustantivos o verbos con el sufijo -ing o -ed .
Ejemplo: funciones mutantes:
print(value)
array.sort()                 // in place sorting
list.add(value)              // mutates list
set.formUnion(anotherSet)    // set is now the union of set and anotherSet

Funciones no mutantes:

let sortedArray = array.sorted()     // out of place sorting
let union = set.union(anotherSet)    // union is now the union of set and another set

Funciones o variables booleanas

Las declaraciones que involucran booleanos deben leerse como afirmaciones.

Ejemplo:

set.isEmpty
line.intersects(anotherLine)

Protocolos de denominación

  • Los protocolos que describen qué es algo se deben nombrar usando sustantivos.
  • Los protocolos que describen las capacidades deben tener -able , -ible o -ing como sufijo.
Ejemplo:
Collection        // describes that something is a collection
ProgressReporting // describes that something has the capability of reporting progress
Equatable         // describes that something has the capability of being equal to something

Tipos y propiedades

Tipos, variables y propiedades deben leerse como sustantivos.

Ejemplo:

let factory = ...
let list = [1, 2, 3, 4]

Capitalización

Tipos y Protocolos

Los nombres de tipo y protocolo deben comenzar con una letra mayúscula.

Ejemplo:

protocol Collection {}
struct String {}
class UIView {}
struct Int {}
enum Color {}

Todo lo demas...

Las variables, constantes, funciones y casos de enumeración deben comenzar con una letra minúscula.

Ejemplo:

let greeting = "Hello"
let height = 42.0

enum Color {
    case red
    case green
    case blue
}

func print(_ string: String) {
    ...
}

El caso de Carmel:

Todos los nombres deben utilizar el caso de camello apropiado. Estuche de camello superior para nombres de tipo / protocolo y estuche de camello inferior para todo lo demás.

Estuche de camello superior:

protocol IteratorType { ... }

Funda de camello inferior:

let inputView = ...

Abreviaturas

Deben evitarse las abreviaturas a menos que se usen comúnmente (por ejemplo, URL, ID). Si se usa una abreviatura, todas las letras deben tener el mismo caso.

Ejemplo:

let userID: UserID = ...
let urlString: URLString = ...


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow