[Moscow.pm] Объективные критерии качества Perl кода

Ivan Petrov i.petro.77.00 на gmail.com
Чт Фев 11 06:37:57 PST 2016


>> вот этот маниакальный вынос констант в константы мне не нравится.

> Непонятно в чём тут видится маниакальность и в чём суть аргумента "мне не
> нравится".

маниакальность - это когда выносят константы которые в виде числа
читаются лучше чем в виде текстового идентификатора.


допустим широта и долгота

croak "Неверная долгота" unless $lon >= -180 and $lon <= 180;
croak "Неверная широта"  unless $lat >= -90  and $lat <= 90;

Тут в коде стоит 4 магических числа (90, -90, 180 и -180), но я
утверждаю что вынос их в константы будет вредить коду.

подобных примеров привести можно массу

int($interval / 3600)
int($interval / 86400)

константа 3600 например сама за себя говорит что она означает.
равно как и константы 90, 180, 270, 360, 60, 3600, 86400, 24, 1900,


Пи - особый случай. 3.1415926 сразу дает понять что это пи и если в
коде встречается не более пары раз на экран, то выносить ее в
константы как минимум не полезно.
если же код - какая-то голимая математика через слово вспоминающая PI,
то тут конечно можно и константу определить (экспортировать).

> Однако если говорить о Perl::Critic, то он настраивается под себя конфигом, а
> сейчас я правлю утилиту так чтобы можно было даже на каждый проект отдельный
> конфиг иметь

да я не вашу утилиту обсуждаю, а некий "общепринятый паттерн
хорошести"

:)


Подробная информация о списке рассылки Moscow-pm