Возьмем, к примеру, get-x-depth-for-yz-grid
.
(defun get-x-depth-for-yz-grid (planes//yz-plane grid)
(let ((planes (get-planes-including-yz-grid-in planes//yz-plane grid)))
(unless (evenp (length planes))
(error "error in get-x-depth-for-yz-grid"))
(sort planes (lambda (p1 p2) (< (caar p1) (caar p2))))
(do* ((rest planes (cddr rest)) (res 0))
((null rest) res)
(incf res (- (caar (second rest)) (caar (first rest)))))))
style -> ERROR можно заменить ASSERT.
Возможная ошибка -> SORT может быть разрушительным -> убедитесь, что вы иметь свежий список. Если это уже свежо выделено get-planes-including-yz-grid-in
, тогда нам это не нужно.
bug -> SORT возвращает отсортированный список. Сортированный список, возможно, не побочный эффект. -> использовать возвращаемое значение
style -> DO заменено на LOOP.
style -> значение CAAR нечеткое. Найдите лучшее имя или используйте другие структуры данных.
(defun get-x-depth-for-yz-grid (planes//yz-plane grid)
(let ((planes (get-planes-including-yz-grid-in planes//yz-plane grid)))
(assert (evenp (length planes)) (planes)
"error in get-x-depth-for-yz-grid")
(setf planes (sort (copy-list planes) #'< :key #'caar))
(loop for (p1 p2) on planes by #'cddr
sum (- (caar p2) (caar p1)))))
def http_get(url, params=None):
with urllib.request.urlopen(url, params) as w:
return w.read()
если вы передаете все аргументы напрямую, вы можете утверждать, что вам следует просто использовать *args
.
def http_get(*args):
with urllib.request.urlopen(*args) as w:
return w.read()
http_post = http_get