Структура кода и его документация - это предмет гордости для разработчиков. Четкий и последовательный код означает четкую и последовательную мысль.
Бесспорно, техническая документация необходима как для описания общей концепции кода проекта, так и для описания работы мелких элементов:
Во-первых, только она может дать ответ на вопрос "ошибка или «фича»?" и рассказать о “странных” участках кода через достаточно долгое время, когда всё уже забудется.
Во-вторых, она даёт тотальную экономию времени:
- на использование существующего кода (в том же и в других проектах) и рефакторинг в дальнейшем. Вообще, любой рефакторинг нужно начинать с написания технической документации, если её ещё нет;
- при тестировании и написании автотестов;
- при написании пользовательской документации;
- при составлении списка достоинств продукта на сайте.
В третьих, сам процесс написания технической документации уже даёт глубокое изучение продукта. Например, очень полезно поручить составление технической документации новичку в команде (если она ещё не написана). На выходе мы получим компетентного сотрудника, разбирающегося в коде данного продукта.
С начала 00-х, Haederdoc стала стандартной документацией Apple.
C анонсами WWDC 2014 года, документирование было пересмотрено в соответствии с новым гладким дизайном и учитывая возможность разработки в Swift & Objective-C.
Теперь в Xcode 6, старые комментарии Headerdoc не анализируются правильно при вызове быстрой документации (⌥ʘ):
/**
Lorem ipsum dolor sit amet.
@param bar Consectetur adipisicing elit.
@return Sed do eiusmod tempor.
*/
func foo(bar: String) -> AnyObject { ... }

Ещё так:
/**
Lorem ipsum dolor sit amet.
:param: bar Consectetur adipisicing elit.
:returns: Sed do eiusmod tempor.
*/
func foo(bar: String) -> AnyObject { ... }

Но это выглядит странно.
Источники внутри Купертино подтвердили, что SourceKit включает в себя примитивный парсер для reStructuredText. А вот как Apple заново структурирует и адаптирует это под себя, нам ещё предстоит увидеть.
Но, возможности документации, которые есть у нас на данный момент, необходимо знать:
import Foundation
/// 🚲 A two-wheeled, human-powered mode of transportation.
class Bicycle {
/**
Frame and construction style.
- Road: For streets or trails.
- Touring: For long journeys.
- Cruiser: For casual trips around town.
- Hybrid: For general-purpose transportation.
*/
public enum Style {
case Road, Touring, Cruiser, Hybrid
}
/**
Mechanism for converting pedal power into motion.
- Fixed: A single, fixed gear.
- Freewheel: A variable-speed, disengageable gear.
*/
public enum Gearing {
case Fixed
case Freewheel(speeds: Int)
}
/**
Hardware used for steering.
- Riser: A casual handlebar.
- Café: An upright handlebar.
- Drop: A classic handlebar.
- Bullhorn: A powerful handlebar.
*/
enum Handlebar {
case Riser, Café, Drop, Bullhorn
}
/// The style of the bicycle.
let style: Style
/// The gearing of the bicycle.
let gearing: Gearing
/// The handlebar of the bicycle.
let handlebar: Handlebar
/// The size of the frame, in centimeters.
let frameSize: Int
/// The number of trips travelled by the bicycle.
private(set) var numberOfTrips: Int
/// The total distance travelled by the bicycle, in meters.
private(set) var distanceTravelled: Double
/**
Initializes a new bicycle with the provided parts and specifications.
:param: style The style of the bicycle
:param: gearing The gearing of the bicycle
:param: handlebar The handlebar of the bicycle
:param: centimeters The frame size of the bicycle, in centimeters
:returns: A beautiful, brand-new, custom built just for you.
*/
init(style: Style, gearing: Gearing, handlebar: Handlebar, frameSize centimeters: Int) {
self.style = style
self.gearing = gearing
self.handlebar = handlebar
self.frameSize = centimeters
self.numberOfTrips = 0
self.distanceTravelled = 0.0
}
/**
Take a bike out for a spin.
:param: meters The distance to travel in meters.
*/
func travel(distance meters: Double) {
if meters > 0.0 {
self.distanceTravelled += meters
self.numberOfTrips++
}
}
}
Теперь по нажатию ⌥+Click на enum Style выдает красиво промаркированный список:

Открыв быструю документацию метода travel увидим, что этот параметр будет проанализирован как и ожидалось:

Немає коментарів:
Дописати коментар