У програмирању, докниска представља низ карактера који је специфициран у извором коду и који има функцију сличну коментару, тачније има функцију документовања дела кода.За разлику од уобичајених коментара у изворном коду, или пак специфично форматираних коментара (као што је Javadoc документација), докниске нису изузете са изворног стабла у процесу рашчлањивања (парсирања) и задржавају се током извршавања програма. То омогућује програмеру да користи те коментаре током извршавања, који на пример могу помоћи разумевању кода или представљати метаподатке.
Познато је да су се докниске први пут је појавиле у оригиналној TECO имплементацији Emacs-а.[1]Језици који подржавају овај вид документовања су Python, Lisp, Elixir, Clojure,[2] Gherkin,[3]Julia[4] and Haskell .[5]
Документација је подржана на језичком нивоу, у форми докниски. Markdown је Elixir-ov основни језик за обележавање(енг. markup language) са могућношћу коришћења докниски:
def module MyModule do
@moduledoc """
Документација за МyМodule , са форматирањем.
"""
@doc "Hello"
def world do
"World"
end
end
Према стандардима Common Lisp-а приликом одређених имплементација може се десити да се занемаре докниске из неког разлога. Међутим, када то није случај, докниске се могу мењати коришћењем функције documentation .[6]Следи пример:
(defun foo () "ово је нека докниска" nil)
(documentation #'foo 'function) => "ово је нека докниска"
У програмском језику Python, уобичајена пракса документовања кодног објекта јесте додавање на челу његове дефиниције синтаксу докниске.
U Python-у докниска за модуле, класе или функције јесте прва реч тог објекта(модула, класе или функције) одмах затим пратећи дефиницију (''def'' или ''class''). Оно што је важно јесте да то мора бити ниска, а не нека друга врста израза.Докниски функције се може приступити коришћењем атрибута функције __doc__ , коришћење функције help је уједно и коришћење докниске.
Следећи пример приказује декларацију докниске у изворној датотеци програмског језика Python :
"""Докниска модула"""
class MyClass(object):
"""Докниска класе"""
def my_method(self):
"""Докниска методе"""
def my_function():
"""Докниска функције"""
Уз претпоставку да је претходни пример сачуван под називом mymodule.py, у следећем примеру се приказује као се може приступити неким докнискама:
>>> import mymodule
>>> help(mymodule)
Докниска модула
>>> help(mymodule.MyClass)
Докниска класе
>>> help(mymodule.MyClass.my_method)
Докниска методе
>>> help(mymodule.my_function)
Докниска функције
>>>