Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2010.09.12;
Скачать: [xml.tar.bz2];

Вниз

функции и процедуры   Найти похожие ветки 

 
Scot Storch   (2010-06-16 18:50) [0]

функции и процедуры длиной 500-700 строк (без повторяющихся кусков кода) это нормально?


 
Игорь Шевченко ©   (2010-06-16 18:52) [1]

Это омерзительно


 
tesseract ©   (2010-06-16 18:58) [2]

Нормально, если дело идёт например о расчете производственных затрат через графы. Даже мало.


 
Ega23 ©   (2010-06-16 19:14) [3]

Это ненормально. Хотя ситуации разные бывают. Но исключение только подтверждает правило.


 
Правильный$Вася   (2010-06-16 19:15) [4]

а в строке сколько операций?


 
KilkennyCat ©   (2010-06-16 19:27) [5]

функции и процедуры созданы не ради избавления от повторяющихся кусков кода, относится к этому таким образом - лмд.


 
_Юрий ©   (2010-06-16 19:28) [6]

Полагаю, что нормальный размер - один экран, если больше - надо думать над разделением на части


 
Jeer ©   (2010-06-16 20:05) [7]


> это нормально?


Это диагноз.

Берете с десяток известных библиотек и напускаете на них Счетчик.
Вы увидите статистику.

P.S.
Математических приложений разных сфер деятельности мной создано немало, но все функции и процедуры ( в среднем ) укладывались в диапазон 50-150 значимых строк.

Все остальное - от лукавого.
ИМХО.


 
DVM ©   (2010-06-16 20:13) [8]

Это неудобно, но вполне нормально. И уж ни в коем случае не омерзительно.
Стремиться все разбить на функции в 5-10 строчек как и все обернуть классами, суть которых класс ради класса - вот это ненормально, это паранойя.

Потом внутри функции на 500 строк вполне могут жить подфункции по 50 строк или меньше.


 
MsGuns ©   (2010-06-16 20:17) [9]

В [1] все сказано


 
Jeer ©   (2010-06-16 20:39) [10]


> Это неудобно, но вполне нормально.


Понимаю, что Вы хотели сказать, но, в данном случае, речь идет о процедурном программировании. ООП тут ни при чем.
Точно также, как и локальные функции/процедуры.

В старые времена был прием разворачивания цикла в линию ради ускорения счета ( устранение циклов и накладных расходов на них).
Сейчас тоже можно так, а нужно ли ?

Насчет "омерзительно" - это эмоции, не более.
Процедура из 700 строк говорит либо о неумении использования приема "разделяй и властвуй", либо о принципиальном желании сосредоточить весь функционал в одной процедуре.

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


 
AlexDan ©   (2010-06-16 20:47) [11]

> Scot Storch   (16.06.10 18:50)  
Да, видно уж очень надо было..


 
Омлет ©   (2010-06-16 21:17) [12]

Это ригидность сознания или просто лень.


 
DVM ©   (2010-06-16 21:25) [13]

У меня в одной программе есть функция на 600 строк. В принципе ее наверное можно разбить и я даже порывался как то это сделать и даже сделал (так что не лень и разбить я ее мог), но потом вернул как было. Она существует скорее как исключение, но тем не менее.

Функция сия является методом одного класса. Функция выполняет свою работу по разбору потока данных. Шаг за шагом из потока последовательно выделяется нужная информация, причем активно в последующих шагах используются результаты предыдущих.

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

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

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


 
Омлет ©   (2010-06-16 21:34) [14]

Хм. Сейчас посмотрел, самая длинная функция в текущем проекте - 1330 строк. Я же говорю - лень )))


 
картман ©   (2010-06-16 21:44) [15]


> Удивительно, если разбить ее на части - от этого теряется
> ее читабельность,

хм...


> Омлет ©   (16.06.10 21:34) [14]
>
> Хм. Сейчас посмотрел, самая длинная функция в текущем проекте
> - 1330 строк. Я же говорю - лень )))

что же она такого делает?


 
Омлет ©   (2010-06-16 22:09) [16]

> что же она такого делает?

Формирует большую и сложную конфигурацию для устройства..


 
Демо ©   (2010-06-16 22:09) [17]

Процедура или функция в 200-500 строк - ничего особенного. Вполне среднее число.
Тем более, если используются структуры с большим количеством полей.
Например, у меня сейчас в рабочем проекте используется структура с количеством полей более 50. Каждое поле необходимо заполнить, обработка информации и преобразование занимает немалое количество строк.
Причём программа структурирована достаточно хорошо.


> функции и процедуры длиной 500-700 строк (без повторяющихся
> кусков кода) это нормально?


Абсолютно нормально, если это необходимо.


 
Jeer ©   (2010-06-16 22:14) [18]

Проблема объективной оценки качества кода и ее освещение в работах Дейкстры и Иордана - известна. Это еще 60-е годы.

Сейчас же, инструментарий code metrics, встроен в некоторые системы программирования и можно вполне адекватно оценивать качество части ПО, хотя бы и в виде процедур.

Оценка ведется по показателям:
- индекс эксплуатационной надежности (Maintainability Index, MI
- циклическая сложность (Cyclomatic Complexity, CC)
( http://en.wikipedia.org/wiki/Cyclomatic_complexity )
- глубина наследования (Depth of Inheritance)
- сцепление классов (Class Coupling)
- число строк кода (в целом, а не в процедуре)


 
Jeer ©   (2010-06-16 22:18) [19]


> Тем более, если используются структуры с большим количеством
> полей.


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


 
В школу!   (2010-06-16 22:26) [20]


> Процедура или функция в 200-500 строк - ничего особенного.
>  Вполне среднее число.


Фортран уже давно не используется


 
Демо ©   (2010-06-16 22:48) [21]


> В школу!   (16.06.10 22:26) [20]
> > Процедура или функция в 200-500 строк - ничего особенного.
> >  Вполне среднее число.Фортран уже давно не используется


Не перепутал форум?


 
В школу!   (2010-06-16 22:55) [22]

Демо ©   (16.06.10 22:48) [21]

Ну что ты, как можно! Где еще встретишь программистов, отстаивающих фортрановские принципы в объектно-ориентированных языках ?


 
Jeer ©   (2010-06-16 22:58) [23]


> отстаивающих фортрановские принципы в объектно-ориентированных
> языках ?


Ну да, конечно - все тут такие объектные, аж штамп некуда поставить.

Вопрос возник о процедурах, а не о методах.


 
Демо ©   (2010-06-16 23:10) [24]


>  Где еще встретишь программистов, отстаивающих фортрановские
> принципы в объектно-ориентированных языках ?


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


 
В школу!   (2010-06-16 23:16) [25]

Jeer ©   (16.06.10 22:58) [23]

Метод сильно отличается от процедуры ?

Демо ©   (16.06.10 23:10) [24]


> Догматизм ещё никому не смог помочь решать новые задачи
> и проблемы.


поэтому удивляет заявление в [17]


 
Rouse_ ©   (2010-06-16 23:21) [26]


>
> Scot Storch   (16.06.10 18:50)
>
> функции и процедуры длиной 500-700 строк (без повторяющихся
> кусков кода) это нормально?

Смотря в какой ситуации.
Я писал только на прологе функции инициализацию крипконтекста примерно в две тысячи строчек асм кода, а сама процедура вынесена несколькими инклудами в отдельные модули :)


 
KilkennyCat ©   (2010-06-16 23:24) [27]

мне повезло - у меня не хватит терпения столько писать. поэтому у меня все коротко.


 
Демо ©   (2010-06-16 23:29) [28]


> Демо ©   (16.06.10 23:10) [24] > Догматизм ещё никому не
> смог помочь решать новые задачи > и проблемы.поэтому удивляет
> заявление в [17]


И чем же удивляет? Тем, что отвергает догмы?


 
Демо ©   (2010-06-16 23:31) [29]


> В школу!   (16.06.10 22:55) [22]


Где написано и кем, что процедуры должны быть менее 500 (700, 1000 и т.д.) строк?


 
Rouse_ ©   (2010-06-16 23:32) [30]


> KilkennyCat ©   (16.06.10 23:24) [27]
>
> мне повезло - у меня не хватит терпения столько писать

Ну когда ТЗ соответствующее выкатят еще и не столько нашуруешь :)


 
В школу!   (2010-06-16 23:35) [31]

Демо ©   (16.06.10 23:31) [29]

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


 
Rouse_ ©   (2010-06-16 23:36) [32]


> В школу!   (16.06.10 23:35) [31]

У меня маленькая просьба, ты не мог-бы изменить никнейм?


 
Правильный$Вася   (2010-06-16 23:43) [33]

я б не сказал, что длинно - это нормально
но приемлемо во многих случаях
и у себя я как-то не сильно стремлюсь делить логически непрерывные участки кода на части только из красоты

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


 
Демо ©   (2010-06-16 23:47) [34]


> В школу!   (16.06.10 23:35) [31]
> Демо ©   (16.06.10 23:31) [29] Написано программистами для
> программистов.


Конкретнее - кто и где написал об этом?


>  Никто никому ничего не должен, боже упаси тебя подумать,
>  что тебе чего-то навязывают


Даже и не думал.


> есть код удобный в сопровождении и есть код неудобный.


А с чего ты взял, что процедура в 500 строк неудобна для сопровождения? Личные домыслы? Или это твои процедуры неудобны для сопровождения? Или неумение их писать? Или отсутствие необходимости реализации сложных линейных  алгоритмов?


> А дальше твой осознанный выбор.


Моё осознанный выбор - необходимость и достаточность.


 
Rouse_ ©   (2010-06-16 23:52) [35]


> Демо ©   (16.06.10 23:47) [34]
> А с чего ты взял, что процедура в 500 строк неудобна для
> сопровождения?

Дим, ну что ты взьелся :) Процедура даже в две строки не удобна для сопровождения, будучи написана бездумно. Просто мало квалифицированных людей способных написать "нетленку в трех томах" из 500 и более строк, которую можно адекватно сопровождать.


 
Rouse_ ©   (2010-06-16 23:56) [36]

Кстати, открою маленький секрет - достаточное количество NtАпи функций реализованы блобами в более чем 1000 строк. Ну это так... о птичках :)


 
KilkennyCat ©   (2010-06-17 00:13) [37]


> Rouse_ ©   (16.06.10 23:56) [36]

я всегда знал, что там бездари работают!  :)


 
В школу!   (2010-06-17 00:34) [38]

Rouse_ ©   (16.06.10 23:36) [32]


> У меня маленькая просьба, ты не мог-бы изменить никнейм?


Мне нравится

Демо ©   (16.06.10 23:47) [34]


> Конкретнее - кто и где написал об этом?


МакКоннелл


> А с чего ты взял, что процедура в 500 строк неудобна для
> сопровождения? Личные домыслы? Или это твои процедуры неудобны
> для сопровождения? Или неумение их писать? Или отсутствие
> необходимости реализации сложных линейных  алгоритмов?


Это твои процедуры неудобны для сопровождения. Вряд ли ты за 7 лет научился их писать иначе.


 
Демо ©   (2010-06-17 01:13) [39]


> В школу!   (17.06.10 00:34) [38]


> МакКоннелл


Наверное умный мужик?
Думаешь он прав?
Слова его - догма?


> Это твои процедуры неудобны для сопровождения. Вряд ли ты
> за 7 лет научился их писать иначе.


Меня-то как раз мои процедуры вполне устраивают. И длинные, и короткие.
Не все, конечно, но большинство.

Странная сентенция по поводу 7 лет.
К чему бы это?


 
Сменил ник   (2010-06-17 01:16) [40]

Демо ©   (17.06.10 01:13) [39]


> Меня-то как раз мои процедуры вполне устраивают.


Вот и славно


> Наверное умный мужик?


Не дурак. Почитай


> Странная сентенция по поводу 7 лет.
> К чему бы это?


А я видел твои творения



Страницы: 1 2 3 4 вся ветка

Форум: "Прочее";
Текущий архив: 2010.09.12;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.56 MB
Время: 0.006 c
15-1276860797
SD Software
2010-06-18 15:33
2010.09.12
Как скомпилировать драйвер


15-1276585131
brother
2010-06-15 10:58
2010.09.12
Любителям zx-spectrumа: видео...


2-1276166904
avgshron
2010-06-10 14:48
2010.09.12
CRC по модулю 256


15-1275146068
stas
2010-05-29 19:14
2010.09.12
Win 7 получить доступ к файлам реестра


15-1276687464
HTCppcpcpc
2010-06-16 15:24
2010.09.12
HTC





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский