Что нового

Замечание насчет <include>

Suppir

Продвинутый
Сообщения
967
Репутация
62
Я заметил, что большая часть моих скриптов имеет в начале запись вида:

Код:
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>
#Include <GuiButton.au3>
#Include <GUIEdit.au3>
#include <Date.au3>
#include <File.au3>
#include <Array.au3>
#Include <Misc.au3>


Бывает и гораздо больше инклюдов :-X

Интересно, почему разработчики не могут объединить эти частоиспользуемые библиотеки в одну? Ну, пусть скомпилированный скрипт будет не 300 kb занимать, а 500 kb - какая разница?
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Потому что кроме соображении оптимизации кода, это неудобно.
 
Автор
S

Suppir

Продвинутый
Сообщения
967
Репутация
62
CreatoR
Я заметил, что если даже много инклюдов прописано, то exe-шник мало увеличивается в размерах. Только в случае, если из этих библиотек реально много функций используется. Если бы библиотеки объединили, то писать кода гораздо меньше.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Suppir
Если у Вас в коде 20-30 инклюдов, то, наверняка не менее 500 - 1000 строк дальнейшего кода. И что тогда такое каких-то 20-30 лишних строк с инклюдами? Лишних 2 минуты? Это большая потеря времени! :laugh:
 
Автор
S

Suppir

Продвинутый
Сообщения
967
Репутация
62
Конкретно в этом примере 340 строк кода (11 килобайт).


Интересно, а вот бы написать скрипт для SciTE, чтобы он автоматически добавлял все необходимые include исходя из кода? :smile:
Т.е. если упоминается функция _FileCountLines(), то добавить в начало #Include <File.au3>
 

SyDr

Сидра
Сообщения
651
Репутация
158
Конкретно в этом примере не 340 строк кода, а 340 + все строчки из включённых файлов. Я бы, напрмер, не хотел выдирать из включённых библиотек нужные функции только потому, что кому-то хочется писать на 10 строчек кода меньше.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Suppir
на 340 строк кода 13 строк с инклюдами это чуть меньше 4%. Тем более, что если Вы окно в Koda рисовали, то 9 из 13 подставились автоматом. Итог 4 инклюда - чуть больше 1%. И думать над ними не надо, в отличии от остального кода. :smile:
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
Надеюсь такого никогда не будет. Это конечно круто, что автор в каждом своем скрипте через раз использует по 14 инклудов, но ошибочно с его стороны думать что так делают все. Лично я редко использую больше 2 инклудов. И то там что-то типа File.au3 и Array.au3. Таскать за собой каждый раз этот багаж - не фэншуево 8)
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Suppir [?]
большая часть моих скриптов имеет в начале запись вида
Те из нас кто пользовался более ранними версиями, помнят что раньше это было короче и, должен признаться что проще:

Код:
#include <GUIConstants.au3>
#Include <GuiButton.au3>
#Include <GUIEdit.au3>
#include <Date.au3>
#include <File.au3>
#include <Array.au3>
#Include <Misc.au3>


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

[?]
вот бы написать скрипт для SciTE, чтобы он автоматически добавлял все необходимые include исходя из кода?
Organize Includes in SciTE4Autoit3
 

FlatX007

Tattoo!
Сообщения
197
Репутация
35
странно у меня почему то их всегда много
Код:
#include-once
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <TabConstants.au3>
#include <ComboConstants.au3>
#include <WindowsConstants.au3>
#include <GuiEdit.au3>
#include <GuiImageList.au3>
#include <GuiTab.au3>
#include <GuiButton.au3>
#include <GuiComboBoxEx.au3>
#include <GuiStatusBar.au3>
#include <File.au3>
#include <String.au3>
#include <Array.au3>
#include <Date.au3>
#include <GUICtrlSetOnHover_UDF.au3>
#include <Resources.au3>
#include <GuiRichEdit_UDF.au3>
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Я в чем-то согласен с Suppir'ом. До сих пор не пойму, зачем нужно было разделять WinAPI.au3, Constants.au3 и WindowsConstants.au3, когда эти самые константы только там и используются. Или например GUIEdit.au3 и EditConstants.au3, и т.д. Даже в WinAPI константы находятся в одном модуле с функциями. Но с другой стороны не стоит забывать, что UDF непосредственно к AutoIt имеет только техническое отношение. UDF - это функции, написанные самими пользователями, как модно сейчас говорить - энтузиастами. И что, все UDF нужно объединить в один мега UDF, aka AutoItEx.au3? В этом случае получиться мега каша...
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Я довольно часто залезаю в инклюды, чтобы посмотреть, как написана и что и как делает та или иная функция, и часто нахожу там всякие для себя новые знания и полезности. Не всегда пользуюсь поиском, иногда просматриваю функции подряд. Каждый инклюд - на одну тему - смотреть удобно. Представляю, если их все объединить в один мега-инклюд, как "удобно" будет этот мега-инклюд просматривать, проще в "Войне и мире" найти какую-нибудь фразу. :smile:
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
FlatX007 [?]
у меня почему то их всегда много
Это к чему?

Yashied [?]
зачем нужно было разделять WinAPI.au3, Constants.au3 и WindowsConstants.au3, когда эти самые константы только там и используются
Вообще то Constants.au3 используется ещё для работы с элементами Tray, а WindowsConstants.au3 для работы с GUI, и WinAPI.au3 там далеко не всегда нужен.

Или например GUIEdit.au3 и EditConstants.au3
Опять же, константы Edit используются для элементов GUI, зачем мне в скрипте функии GUIEdit если я ими не пользуюсь (в простых скриптах нативных элементов достаточно)?
 
Автор темы Похожие темы Форум Ответы Дата
T Боты для игр 2
Похожие темы
Насчет функции Send
Верх