Грусти пост о формулах в коде
Подсмотрела, как коллеги, которые пишут на C++, оформляют формулы. Здесь закомментировали черту и разбили ей формулу геометрической прогрессии на числитель и знаменатель. Получилась очень читаемо, а еще функция документирует себя сама!
Мне этот стиль очень нравится, но жаль, что интерпретатор так не позволяет писать в исполняемом коде. По крайней мере, у меня не получилось сделать, чтобы похожее форматирование заработало. Поэтому в теле функции я обычно пишу числитель и знаменатель отдельно, чтобы не было очень длинно, а выражение в docstring'е оформляю именно так. На Python получается что-то вроде:
Не стала обрабатывать случай расхождения ряда, я сейчас не об этом. А так хорошо бы. Такие дела! 🐠
#кодстайл #докстринг #формулы #комментарии #вообще_другой_язык #cpp
Подсмотрела, как коллеги, которые пишут на C++, оформляют формулы. Здесь закомментировали черту и разбили ей формулу геометрической прогрессии на числитель и знаменатель. Получилась очень читаемо, а еще функция документирует себя сама!
//Sum of first n terms of a geometric series.
// S = a + ar + ar^2 + ... + ar^n
float geom_sum(int n, float a, float r)
{
return
(a*(1 - pow(r, n + 1)))
/ //-----------------------
(1 - r);
}
Мне этот стиль очень нравится, но жаль, что интерпретатор так не позволяет писать в исполняемом коде. По крайней мере, у меня не получилось сделать, чтобы похожее форматирование заработало. Поэтому в теле функции я обычно пишу числитель и знаменатель отдельно, чтобы не было очень длинно, а выражение в docstring'е оформляю именно так. На Python получается что-то вроде:
def geom_sum(n, a, r):
"""
Sum of first n terms of a geometric series.
S = a + ar + ar^2 + ... + ar^n
1 - pow(r, n + 1)
S = a -----------------
1 - r
:param n: Number of terms
:param a: First term
:param r: Common ratio, r < 1
:return: Sum of series
"""
num = a*(1 - pow(r, n + 1))
denom = 1 - r
return num/denom
Не стала обрабатывать случай расхождения ряда, я сейчас не об этом. А так хорошо бы. Такие дела! 🐠
#кодстайл #докстринг #формулы #комментарии #вообще_другой_язык #cpp
January 13, 2020