Шедевр кода

User avatar
lxf
Уже с Приветом
Posts: 13482
Joined: 04 Jul 2001 09:01
Location: Boston, MA

Re: Шедевр кода

Post by lxf »

Помнится давно мне пришлось доделывать сайт, написанный на ColdFusion. Там тоже была дикая возня с календарём и кучей кейсов, а в конце была приписка -- Sorry guys I could not figure out how to make this shit shorter... По крайней мере автору была не чужда самокритика. :-)
Larsonsager
Уже с Приветом
Posts: 1860
Joined: 02 Sep 2016 20:26

Re: Шедевр кода

Post by Larsonsager »

Я видел код, где какое-то несложное выражение типа A*sin(x) + B*cos(x), верное для любого x, было расписано для пущей надежности в виде:
if (x < pi/2)
{
C = A*sin(x) + B*cos(x);
}
else if (x >= pi/2 && x < pi)
{
C = A*cos(x - pi/2) - B*sin(x - pi/2);
}

- и так 16 раз, потому что на самом деле там не только x, но и y менялся, и как x, так и y могли попадать в каждый из четырёх квадрантов.

Но вот что любопытно: этот чувак уже к 30 годам, написав к тому моменту около тридцати статей (каждую свою статью он публиковал дважды: по-английски с соавторами в журналах американских и королевских обществ и по-китайски с урезанным числом соавторов в Китае), стал ассосиейт-профессором в родном Китае, получил солидную по меркам американской профессуры зарплату, дом в бесплатное пользование и - благодаря своей позиции - хорошую позицию для жены. Потрясающая работоспособность и отсутствие привычных западному ученому моральных принципов легко перевесили пробелы в тригонометрии и программировании.
User avatar
M. Ridcully
Уже с Приветом
Posts: 12017
Joined: 08 Sep 2006 20:07
Location: Силиконка

Re: Шедевр кода

Post by M. Ridcully »

Larsonsager wrote: 31 Jan 2018 01:02 Я видел код, где какое-то несложное выражение типа A*sin(x) + B*cos(x), верное для любого x, было расписано для пущей надежности в виде:
if (x < pi/2)
{
C = A*sin(x) + B*cos(x);
}
else if (x >= pi/2 && x < pi)
{
C = A*cos(x - pi/2) - B*sin(x - pi/2);
}

- и так 16 раз, потому что на самом деле там не только x, но и y менялся, и как x, так и y могли попадать в каждый из четырёх квадрантов.
Без 16 раз, наверное, можно бы было и обойтись, но может вы чуток приукрасили?

А сделать несколько вариантов, чтобы избежать экстремумов или потери точности - то что в этом плохого?
Мир Украине. Свободу России.
tau
Уже с Приветом
Posts: 514
Joined: 07 Dec 2001 10:01
Location: toronto

Re: Шедевр кода

Post by tau »

Функция sin(x) определена на всём пространстве вещественных чисел, по идее. К тому же, sin(x) === cos(x - pi/2) для любого х, как и было сказано.
Выглядит странно, конечно. Программист мог бы объяснить тем, что там были изначально разные формулы для разных квадрантов, а потом усохли. Понятно же, что эволюционные наслоения в коде иногда приводят и к более смешным наслоениям.
tau
Уже с Приветом
Posts: 514
Joined: 07 Dec 2001 10:01
Location: toronto

Re: Шедевр кода

Post by tau »

dup

Return to “Вопросы и новости IT”