andrzejn: (Curious)
[personal profile] andrzejn
Итак, ответы на программистские вопросы, которые я считаю правильными. Я постарался сформулировать их так, чтобы поняли непрограммисты.

1. Сложная форма ввода.
б) Лучше собрать все проверки и логику в одном месте и исполнять последовательно. Лучше делать на каждый чих сотни лишних проверок (которые пользователь всё равно не заметит), чем безуспешно искать ошибки и побочные эффекты в сотнях отдельных кусочков, которые связаны в неизвестном порядке.

2. Регулятор реактора.
б) Редкими коррекциями удерживать процесс в допустимой "зелёной зоне" куда лучше, чем непрерывно сражаться за недостижимый оптимум. Куда меньше износ аппаратуры и куда меньше шансов, что от непрерывной работы что-нибудь заглючит и поломается. А "зелёной зоны" субоптимальных результатов нам вполне достаточно.

3. Расчистка сомнительных мест.
а) Если есть время, любые проблемы лучше расследовать немедленно. Просто потому, что вы сейчас в контексте, помните все подробности и держите в голове все нужные модели. Если отложить разбирательство, потом потребуется куда больше времени на возврат к теме. Исправлять результаты расследования, кстати, можно и не немедленно, если окажется, что чинить придётся слишком сложные и отдалённые куски. Такой масштабный ремонт можно и отложить (записав все найденные подробности). Но перещупать подручные сомнения нужно сейчас, пока они под руками.

4. Синхронизация параллельных процессов.
б) Пока возможно (пока производительность не начинает из-за этого заметно падать), лучше держать одну общую блокировку на все разные критические ресурсы сразу: так не будет ни одного шанса, что несколько процессов захватят по ресурсу, потянутся за следующим и заблокируют друг друга.
Аналогия из реальной жизни: лучше сделать один общий замок на двери туалета, чем отдельные ширмы с замками на унитазе, умывальнике, коробочке с мылом и сушилке для рук.

5. Большая сложная программа.
б) Простые посредственные решения в долгосрочном масштабе лучше безупречно сложных, потому что их куда легче поддерживать. За десять лет команда частично сменится, а оставшиеся забудут старые подробности. В сложном коде они будут слишком долго исправлять найденные ошибки, слишком медленно добавлять новые возможности и сажать в процессе слишком много новых ошибок, так что новые версии будут слишком редки и полны проблем.
А надоедливые, но не критичные ошибки юзерам пофиг, лишь бы критические ошибки исправлялись, а важные возможности добавлялись быстро.

Как видите, решения выходят за рамки чисто программистских задач и вполне годятся для реальной жизни.

программистские ответы на вопросы 8)

Date: Saturday, 12 September 2009 13:20 (UTC)
From: [identity profile] neo-der-tall.livejournal.com
А Вам не кажется, что надо для начала бы определить критерий "правильности".

Пример, поведение выбранное в вопросе 3 приведет к увольнению человека, как тормоза и префекциониста в куче фирм работающих по критерию цена-качества. Т.к. а) трудозатраты на расследование и исправление, там где надо, очень труднопроверяемы б) расследовать можно до бесконечности с) программер сам выстроит приоритеты возможностей, не имея ни полномочий, ни представления о картине в целом.

По прочим ответам можно выдать аналогичные "фи"

условие типа "если Вы - бог" 8)

Date: Saturday, 12 September 2009 16:51 (UTC)
From: [identity profile] neo-der-tall.livejournal.com
ну ок, согласен. Из развернутых ответов, или даже из развернутых отказов от ответов, можно многое вытянуть. Но вот на сколько это много будет иметь дело к тем качествам, что необходимы хорошему программеру...8)

Profile

andrzejn: (Default)
Андрій Новосьолов

June 2025

M T W T F S S
      1
2 345678
9101112131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Tuesday, 3 June 2025 08:25
Powered by Dreamwidth Studios