Оптимизация кода ..

Creater_82

Доброго времени суток...Вопрос об подчистке кода при работе командой не стоит - т.к. иначе запутается даже гений, но вот при работе одному, когда все, уже пора прогу отдавать,имеется мысля в голове, что вот надо все в порядок привести, как-то:1)глобализовать переменные2)перекидать все дополнительные формы в длл или просто динамически создавать3)глобализовать все заголовки форм, диалогов и пр. пр.4)универсализовать все процедуры и функции и пр. пр.так вот вопрос к тем, кто работает дольше и просто мудрее (нада же ввернуть что-нито для подмазки http://www.sql.ru/forum/images/happy.gif ) - имеет ли все это смысл и вообще, лично ВЫ так делаете?Заранее благодарен всем тем, кто ответит.С уважением, Дмитрий------------------------------------У меня богатый словарный запас, в нем присутствуют слова "оксюморон", "клепсидра", "перст указующий" и даже "ибо". Но некоторые мысли я никак не могу выразить словами. Хочется просто взять черенок от лопаты и отп*** всех..
19 ответов

Creater_82

Ну... зачем оптимизировать, когда можно просто взять черенок от лопаты


Creater_82

Альт,классная идея, но - это даже не стеб - иной раз даже поплакать охота )))))


Creater_82

1)глобализовать переменные2)перекидать все дополнительные формы в длл или просто динамически создавать3)глобализовать все заголовки форм, диалогов и пр. пр.4)универсализовать все процедуры и функции
Если эти пункты Вы называете оптимизацией, то лучше действительно взять черенок лопаты и хорошенько приложить его к голове того, кому пришла в голову мысль использовать глобальные переменные и (в особенности) "формы в DLL".


Creater_82

Альт,классная идея, но - это даже не стеб - иной раз даже поплакать охота )))))
Ну так и бери лопату, практики будет много.


Creater_82

Dimitry Sibiryakov,сорри, это действииельно не оптимизация - я же написал "уборка" кода...не более того )))нет. переменные не выкладываются в длл - просто в отдельный, специальный модульа вот формы в длл - как бы я больше не вижу вариантов, при которых можно было бы позднее менять (дополнять) программу. иначе ИМХО - только полная перекомпиляция и соответственноклиенту идет опять полный набор. а так - просто меняются длл и.. все - факир былтрезв и фокус получился.а по первому вопросу - мне и в страшном сне не привидится назвать эти манипуляции оптимизацией - это просто оговорка вышла.С уважением, Дмитрий


Creater_82

иначе ИМХО - только полная перекомпиляция и соответственно клиенту идет опять полный набор.
Сколько гигабайт занимает ваш екзешник?


Creater_82

Dimitry Sibiryakov,)))))) 0,004,8 гБно так хочется делать красиво - сменил длл - и усе ))))неужто я один только так делаю? ))с уважением, Дмитрий


Creater_82

#3--http://www.podgoretsky.com


Creater_82

Anatoly Podgoretsky,а вот за ссылочку пасибки - именно это мне и надо было! С уважением, Дмитрий


Creater_82

Anatoly Podgoretsky,.. Надо помнить, что библиотеки являют собой рудиментарную форму технологии клиент-сервер, а с ..момента их появления прогресс ушел далеко вперед...В любом случае, включить модуль в uses проще, чем сделать LoadLibrary...Ну, и никаких классов в DLL, в случае острой нужды используйте BPL или COM вместо dll. т.е., по вашему мнению, лучше собирать все в один ехе шник и навсегда уйти от всего, что позволяет итоговую программу сделать более разделенной? С уважением, Дмитрий


Creater_82

т.е., по вашему мнению, лучше собирать все в один ехе шник и навсегда уйти от всего, что позволяет итоговую программу сделать более разделенной?
Надо чётко понимать, что добавит в программу гибкости, а что - геморроя. У меня, например, "извне" грузятся большие фоновые картинки и отчётные формы.


Creater_82

Если хочешь уйти от DLL Hell то монолит.Проще распротранять и поддерживать.--http://www.podgoretsky.com


Creater_82

1)глобализовать переменные
Не стоит. Есть такая точка зреня, что глобальные переменные - это зло. Я до конца с ней не согласен, но тем не менее, попытка глобализовать "всё что нужно" может привести в будущем к другим странным артефактам (особенно в мультизадачности), с которыми тоже надо будет воевать. В крайнем случае - глобализуйте константы.
4)универсализовать все процедуры и функции
Здесь поставлю плюс тыщу. Но как это сделать? Думаю, что это самый сложный вопрос. Надо читать умные книжки старика Фаулера и пытаться их знания применить. Заранее скажу что ни один начальник крупного проекта, (который напрямую с кодингом не связан) не поддержит эту идею. Универсализация? Ради чего? На будущее. На какое будущее? Ближнее или дальнее? Тестирование после рефакторинга надо? Надо. На тестирование надо еще времени и денег выделить? Если да - то сколько? И т.п.


Creater_82

я бы начал с БО:тынцНу а формы... Опять же если хочешь формы менять, то надо делать прослойку для визуализации... Формы в длл я бы не хранил, а вот БД, самое оно.


Creater_82

... но вот при работе одному, когда все, уже пора прогу отдавать,имеется мысля в голове, что вот надо все в порядок привести, как-то:1)глобализовать переменные2)перекидать все дополнительные формы в длл или просто динамически создавать3)глобализовать все заголовки форм, диалогов и пр. пр.4)универсализовать все процедуры и функции и пр. пр.
Вот когда уже все, и надо прогу отдавать, совсем некстати делать на скорую руку кардинальные "улучшения" , которые вероятно приведут к трудноуловимым ошибкам. Все надо делать во время разработки, используя принцип "сначала подумать, а потом кодить", а не альтернативный ;)


Creater_82

при разработке больших проектов часто сложно проблемы реализацииесли в план работ не включена оптимизация, то приходится писать так как умеешь, и не экспериментировать, особенно, если за сроками строго следят заказчикипотому перед началом работ нужно выделить оплачиваемое время на оптимизацию, и потратить его на лишние обдумывания или переделки, в результате буду довольны все.в Вашем случае ничего трогать не стоит, моя практика показывает, что у новичков большие проблемы с длл :), там много подводных камней (в контексте Delphi & VCL)запомните на всю жизнь: нужно оптимизировать - когда нужно!т.е.: либо вы будете планировать время (при чем в ТЗ) на оптимизацию кода, либо когда от заказчика поступит жалоба - "а у нас все тупит, ошибки, поставили на др. комп и не работает" и т.п., первый вариант лучше, но в Вашем слуае предлагаю начать новый проект, и там заюзать новые подходы, реализовать, которые, хотелось бы в прошлом проекте.а выгодней всего: сказать заказчику следующее:
сейчас реализовано через попу, хоты работать будет 100%если вы мне заплотите, то я готов взяться за оптимизацию кода, при этом появятся следующие возможности: бла-бла-бла, про возможности дальнейших разработок, ради которых не придется обращаться к основному разработчику, а нанять любого, или типа того
т.е. из вашей оптимизации долно что-то вытекать, если вы хотите просто оптимизировать код, из-за того что вы этого хотите - пожалуйста, заказчика это никак не трогает, только прогу ему отдайтеесли вы хотите что-то выностить в длл, для этого должны быть веские основания (допустим простота добавления функционала), т.к. в новых осях могут возникнуть траблы при обращении к их ресурсам
это сугубо мое личное мнение, сужу по опыту, но еще раз:
запомните на всю жизнь: нужно оптимизировать - когда нужно! :)


Creater_82

mayton,ну с этим проще - пока я ждал ответов, переделывал процедурки и функциЁночки - мне аж самому теперь нравится, как все работает )))а с начальниками проще - в данный момент на вольных хлебах т.ч. начальник у меня один - self )))С уважением, Дмитрий


Creater_82

SanSYS,в ваших словах есть над чем подумать т.ч. - СПАСИБО )С уважением, Дмитриц


Creater_82

ну с этим проще - пока я ждал ответов, переделывал процедурки и функциЁночки - мне аж самому теперь нравится, как все работает )))
Ну дай бог. Не забудь про тестирование... А-то...