Email or username:

Password:

Forgot your password?
Top-level
Aleksei � Matiushkin

@rubikoid зачем? Это не праздный вопрос. Нет ни единой причины, по которой он должен знать, что вот это число называется вот так.

8 comments
Rubikoid

@mudasobwa потому что человеку, который [потом] будет работать с этим кодом, надо полностью понимать, что этот код делает?

Добавлю абсурда: при таком подходе можно не именовать локальные переменные - зачем, по ним же и так всё видно.

Aleksei � Matiushkin

@rubikoid я эти клише слышал миллион раз, но спросить не поленюсь: как именование константы поможет понять, что этот код делает? Не общими словами только.

И вообще, сколько раз проблемы с пониманием кода упирались в магическую константу без имени?

Типа, знал бы, как зовут вот этот коэффициент — сразу бы все понял, а так — как в тумане?

Rubikoid

@mudasobwa как минимум, название константы может гуглиться.

Причем с ненулевой вероятностью - лучше, чем сама константа.

Кроме того, ассоциативная связь название константы -> алгоритм сильнее, чем сама константа -> алгоритм.

Aleksei � Matiushkin

@rubikoid это все рассказанная людьми, которые никогда всерьез не программировали, теория.

А вот практика: сколько раз лично вам доводилось гуглить константу из чужого кода? Это простой вопрос, но него можно ответить прямо, без цитат из вредных мотивационных книг.

Rubikoid

@mudasobwa а я не читал вредных^W любых мотивационных книг, я на основе собственного опыта говорю.

Лично мне константы гуглить периодически приходится, правда обычно я их достаю из бинарников, а не из исходного кода.

Хорошо, ну вот ещё пример, "живой":
Форматирование текста при выводе в консоль.

Я нахожу сомнительным тот факт, что кому-либо вообще может понадобится конфигурировать то, каким цветом в консоли рисуется OK.

Вместе с тем без использования констант код, во-первых, выглядит хуже, во-вторых становится копипастой (а следовательно повышается вероятность ошибок).

@mudasobwa а я не читал вредных^W любых мотивационных книг, я на основе собственного опыта говорю.

Лично мне константы гуглить периодически приходится, правда обычно я их достаю из бинарников, а не из исходного кода.

Хорошо, ну вот ещё пример, "живой":
Форматирование текста при выводе в консоль.

Я нахожу сомнительным тот факт, что кому-либо вообще может понадобится конфигурировать то, каким цветом в консоли рисуется OK.

# Python

c = rich.console.Console()

_ER = "\\[[red]ERR[/]]"
_OK = "\\[[green]OK[/]]"

c.print(f"{_OK} successful operation")
c.print(f"{_ER} unsuccessful operation")

## VS

c.print("\\[[green]OK[/]] successful operation")
c.print("\\[[red]ERR[/]] unsuccessful operation")
Aleksei � Matiushkin

@rubikoid это хороший пример, он действительно живой, вот только он полностью закрыт моим предложением вынести такую настройку в конфиг. Потому что она должна адекватно проверять stdout, и не печатать ничего, если он не терминал, а пайп, например.

> Я нахожу сомнительным тот факт, что кому-либо вообще может понадобится конфигурировать то, каким цветом в консоли рисуется OK.

Да ладно. Мои приложения не только разными цветами логи пишут, но еще и каждое свой эмоджик использует.

Rubikoid replied to Aleksei � Matiushkin

@mudasobwa
> Потому что она должна адекватно проверять stdout, и не печатать ничего, если он не терминал, а пайп, например.

А этим занимается библиотека, через которую вывод в консоль идет.
Вот уже она определяет, есть ли вообще поддержка цвета в терминале, и не в пайп ли случайно вывод идет, и очищает вывод от цветов.

Если бы я выносил это настройку в конфиг через энвы, мне пришлось бы передавать десять параметров, зануляющих форматирование цвета.

В таком случае логичней было бы вынести условный IS_PIPE в конфиг, на основые которого вычислять те самые константы.

> Да ладно.

Но поменять цвет OK с зеленого на красный же не хочется?

@mudasobwa
> Потому что она должна адекватно проверять stdout, и не печатать ничего, если он не терминал, а пайп, например.

А этим занимается библиотека, через которую вывод в консоль идет.
Вот уже она определяет, есть ли вообще поддержка цвета в терминале, и не в пайп ли случайно вывод идет, и очищает вывод от цветов.

Aleksei � Matiushkin replied to Rubikoid

@rubikoid если у меня половина вывода из других мест зеленая — то на синий может захотеться.

Но в любом случае, я не воевал за копипасту, если оно используется в трех местах — надо избавиться от изменения в трех местах заранее, это не про читаемость вообще.

Go Up