Jun. 27th, 2009

alexthunder: (Default)
Одна из самых распространённых ошибок программирования - сделанный выбор.

Принятие решение для программистов является одним из самых сложных вопросов. Особенно на начальном этапе занятия этим ремеслом. С годами до некоторых доходит, а до некоторых не доходит никогда. Это я исходя из наблюдаемого мной по опыту общения делаю вывод.

Так уж получается что человек образованный и занятый трудом интеллектуёвым занимается принятием решений. Да и вообще мораль общественная в отношении принятия решений назидает что?

Правильно! Она назидает что решения надо принимать правильные.

А какое решение самое правильное в программировании знаете?

В ПРОГРАММИРОВАНИИ САМОЕ ВЕРНОЕ РЕШЕНИЕ - ОТЛОЖЕННОЕ

Что это значит на практике?

Это значит что для ХОРОШЕГО программиста правильный цвет это не красный и не синий. Правильный это тот который выбран пользователем. И это в общем касается решительно всего и распространяется на всю глубину тайнописи кода.

Когда перед программистом встаёт какой-то выбор, то в идеале он должен найти способ не принимать решения прямо сейчас. Задача его в подавляющем большинстве случаев сводится к тому чтобы оставлять выбор на потом.

Например выражение : for (int i=0; i<100; i++) содержит сделанный выбор о количестве повторений. Это и есть сделанный выбор. Общеизвестная уже практика подсказывает что куда лучше придать этому выражению вид : for (int i=0; i<MY_LIMIT; i++) и задать вот этот самый MY_LIMIT где-то в заголовке где его потом проще отыскать.

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

Там в файле конфигурации это значение сможет менять коллега-гик-администратор который выколупает смысл этого значения из своего многолетнего опыта.

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

Вы думаете это я лекции читаю о том что не надо хардкодить константы в программе?

Нет же. Это я лишь пример привожу куда более широкого и общего правила, выделенного жирным там выше.
К сожалению большинство наблюдаемых мной коллег программистов не в состоянии экстраполировать это правило дальше чем "не надо хардкодить константы" в то время как на этом это правило далеко не заканчивается.

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

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

Наша задача не решать за людей, а обеспечивать людям саму возможность этого решения.

Profile

alexthunder: (Default)
alexthunder

February 2017

S M T W T F S
    1234
567 891011
12131415161718
1920212223 2425
262728    

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 2nd, 2025 12:37 pm
Powered by Dreamwidth Studios