Размер модуля...

Любые обсуждения, не нарушающие правил форума.

Модератор: Модераторы

С какого размера стоит разбивать модуль?

Порядка 100 строк
2
9%
1000 строк
6
27%
10 000 строк
6
27%
100 000 строк
1
5%
1 000 000 строк
0
Голосов нет
Размер значения не имеет
7
32%
 
Всего голосов : 22

Размер модуля...

Сообщение Иван Шихалев » 07.11.2013 05:20:56

Собственно, это такой отвлеченный вопрос по «рекомендуемому стилю кодирования». Имеет ли значение размер модуля? Стоит ли разбивать большой модуль на несколько, если логическая структура этого не требует (но позволяет)? С какого размера начинать разбиение?
Аватара пользователя
Иван Шихалев
энтузиаст
 
Сообщения: 1138
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург

Re: Размер модуля...

Сообщение Mikhail » 07.11.2013 10:32:32

Иван Шихалев писал(а):Собственно, это такой отвлеченный вопрос по «рекомендуемому стилю кодирования». Имеет ли значение размер модуля? Стоит ли разбивать большой модуль на несколько, если логическая структура этого не требует (но позволяет)? С какого размера начинать разбиение?

А можно поподробнее. Что в модуле, набор подпрограмм + переменные + типы?
Mikhail
энтузиаст
 
Сообщения: 565
Зарегистрирован: 24.10.2013 16:06:47

Re: Размер модуля...

Сообщение Лекс Айрин » 07.11.2013 10:34:05

Mikhail, имхо, речь о "средней температуре по палате".
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Размер модуля...

Сообщение Иван Шихалев » 07.11.2013 10:55:25

Mikhail писал(а):А можно поподробнее. Что в модуле, набор подпрограмм + переменные + типы?

А что от этого зависит? Существенное условие я указал в самом начале:
Иван Шихалев писал(а):логическая структура этого не требует (но позволяет)
Аватара пользователя
Иван Шихалев
энтузиаст
 
Сообщения: 1138
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург

Re: Размер модуля...

Сообщение Mikhail » 07.11.2013 11:02:52

Иван Шихалев писал(а):А что от этого зависит? Существенное условие я указал в самом начале:


Я, обычно, смотрю не на число строк, а на число объектов, т.е. переменных, подпрограмм, типов, классов, констант,...
Их должно быть немного, в пределах сотни. Подпрограмм, желательно, не более 20-30.
Mikhail
энтузиаст
 
Сообщения: 565
Зарегистрирован: 24.10.2013 16:06:47

Re: Размер модуля...

Сообщение vada » 07.11.2013 13:07:10

А если у тебя такая насыщенная компонентами форма. Развитое меню, множество вкладок и полей ввода/редактирования?
Там одних обработчиков событий может быть несколько сотен, да еще обработка данных, файловый ввод/вывод, ...

Я инклудами решаю проблему огромности модуля. Всяческими HandleEvents.inc, SourseData.inc, Report.inc, ...
Аватара пользователя
vada
энтузиаст
 
Сообщения: 691
Зарегистрирован: 14.02.2006 13:43:17

Re: Размер модуля...

Сообщение Vadim » 07.11.2013 13:42:53

Я, обычно, смотрю на то, чтобы мне было не тяжело лазить по исходнику. Если становится тяжело - разбиваю на файлы руководствуясь для одного файла какой-то общей логической связью, например события какой-то, связанной между собой, группы компонентов.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Размер модуля...

Сообщение Иван Шихалев » 07.11.2013 18:19:04

vada писал(а):А если у тебя такая насыщенная компонентами форма.

А это уже означает, что логическая структура не позволяет.
Аватара пользователя
Иван Шихалев
энтузиаст
 
Сообщения: 1138
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург

Re: Размер модуля...

Сообщение hinst » 07.11.2013 22:41:28

нужно чтобы в модуле было не более 1000 строк кода
иначе рано или поздно получается что в коде чёрт ногу сломит
Как вариант можно часть кода вынести в include-файл, но не так, чтобы просто вынести, к примеру, всю секцию implementation, а чтобы было какое-то логическое основание, чтобы его вынести. Модули с формами тоже можно разбить на множество меньших модулей или include-файлов
Я часто делаю чтобы был один класс ~ один модуль, а если нужны ещё и процедуры, то их ставить в отдельный модуль
А ещё не надо делать чтобы были uses-секции в implementation, то есть, чтобы не было круговых зависимостей в модулях, иначе, опять же, чёрт ногу сломит в коде (ну а если кого-то чёрт не волнует, те могут конечно делать модули по 100 000 строк)

Добавлено спустя 4 минуты 46 секунд:
да кстати за 100 строк похоже никто не проголосовал, т.к если делать модули по 100 строк, то это так же как и большие модули приведёт к тому, что чёрт сломит в коде ногу

Добавлено спустя 5 минут 41 секунду:
другое дело что чтобы было везде оптимальное число строк кода, нужно либо с самого начала знать все требования и проработать в деталях весь дизайн, либо, как я обычно делаю, придумывать всё по ходу и постоянно переписывать. Когда в модуле накапливается больше 1000 строк кода, надо выносить код в отдельный модуль. А так как все такие л*****е з*****ы, то модули засираются, и кончается это плохо
Аватара пользователя
hinst
энтузиаст
 
Сообщения: 781
Зарегистрирован: 12.04.2008 18:32:38

Re: Размер модуля...

Сообщение Vapaamies » 08.11.2013 00:17:45

В своем проекте я всякие нудные определения во включаемые файлы выношу, особенно платформенные, если в одном модуле перемешан и платформенный, и ОО-код. Еще, наверное, ассемблер будет хорошо выноситься, поскольку он тоже длинный и нудный. У меня пока нет такого количества ассемблерных вставок, чтобы проверить, а заимствования из FastCode и так в отдельных файлах.

В остальном же полезно иметь классы целиком в файле модуля, чтобы по Ctrl+Shift+Вверх/Вниз удобно перемещаться (Delphi). Пока самый большой модуль у меня порядка 2800 строк.
Аватара пользователя
Vapaamies
постоялец
 
Сообщения: 292
Зарегистрирован: 24.07.2012 22:37:59
Откуда: Санкт-Петербург

Re: Размер модуля...

Сообщение PapaNT » 08.11.2013 11:08:28

В интернете есть куча бесплатных утилит для оценки качества исходного кода.
Попробуйте воспользоваться поисковыми серверами для нахождения оных и "покурить" результаты обработки своих исходников...
PapaNT
постоялец
 
Сообщения: 167
Зарегистрирован: 11.09.2009 12:06:46
Откуда: Москва

Re: Размер модуля...

Сообщение Иван Шихалев » 08.11.2013 19:36:21

PapaNT писал(а):куча бесплатных утилит

Это, конечно, замечательно. Вот только к вопросу отношения не имеет.

Добавлено спустя 6 минут 37 секунд:
PapaNT писал(а):куча бесплатных

Ну, и это, мягко говоря, неправда. Если речь о pascal-коде идет.
Аватара пользователя
Иван Шихалев
энтузиаст
 
Сообщения: 1138
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург

Re: Размер модуля...

Сообщение Helltar » 08.11.2013 21:15:34

Блин, не за то проголосовал ._.

Думаю разбиение по 1000 строк самый оптимальный вариант.
Аватара пользователя
Helltar
новенький
 
Сообщения: 22
Зарегистрирован: 11.07.2013 02:28:53

Re: Размер модуля...

Сообщение Иван Шихалев » 08.11.2013 22:15:02

Helltar писал(а):Блин, не за то проголосовал

В данном опросе можно менять свое мнение.
Аватара пользователя
Иван Шихалев
энтузиаст
 
Сообщения: 1138
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург

Re: Размер модуля...

Сообщение kazalex » 08.11.2013 22:29:14

Иван Шихалев писал(а):Имеет ли значение размер модуля? Стоит ли разбивать большой модуль на несколько, если логическая структура этого не требует (но позволяет)?

Ориентироваться, прежде всего, стоит именно на логическую структуру, а не количество строк. Но все-же не совсем понятна формулировка "не требует, но позволяет". У меня есть модуль XmlRpc.Types количство строк в котором приближается к 15 тыс. Там описаны только базовые типы и работа с ними. Ничего лишнего. По идее, я мог бы выделить каждый тип в отдельный модуль, но это будет означать, что мои пользователи вместо Uses XmlRpc.Types; вынуждены будут писать Uses XmlRpc.Value, XmlRpc.Array, XmlRpc.Struct и так далее. Мне эта идея не нравится. Однако, если бы в ObjectPascal была нормальная реализация пространств имен я не задумываяь разделил бы такой большой файл, но не потому что он такой большой, а потому, что в этом случае такое деление выглядело бы логичным.
kazalex
постоялец
 
Сообщения: 296
Зарегистрирован: 01.06.2012 14:54:10

След.

Вернуться в Потрепаться

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

Рейтинг@Mail.ru