Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Флейм про оформление и begin-end
|
|||
|---|---|---|---|
|
#18+
16.04.2021 11:59, _Vasilisk_ пишет: > Когда в конце процедуры образовывается лесенка из 4-5 end, то не такой и маразм при наличии подсветки - маразм. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2021, 12:02 |
|
||
|
Флейм про оформление и begin-end
|
|||
|---|---|---|---|
|
#18+
МП> CnPack отлично подсвечивает и на старых версияx IDE. Угу, но им пользуются не только лишь все и бажный был он раньше. МП> а писать "от чего конец" - маразм. Это в абстрактной идеальной ситуации - маразм, да. А когда там не только лесенка, а простыня, которая по вертикали в экран не помещается - не маразм, а удобство. Надо не в догмы ударяться, а работать так, как удобно и эффективно (при чём не только тебе). Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2021, 12:05 |
|
||
|
Флейм про оформление и begin-end
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов Рустам Только если длинные блоки (что уже плохо) Длинные блоки - это само по себе не плохо. Это нормально и где-то неизбежно, если не принимать откровенно искусственных решений. Плохо, когда у длинных блоков начинается разнообразная и непредсказуемая вложенность. И тогда уже никакие отметки на end-ах делу не помогут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2021, 12:46 |
|
||
|
Флейм про оформление и begin-end
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_ Мимопроходящий а писать "от чего конец" - маразм. Когда в конце процедуры образуется лесенка из 4-5 end - это верный признак кривого нуждающегося в улучшении кода сверху от них. Я сейчас пробежал глазами страшный легаси модуль, на переделку которого точу зубы с тех пор как пришёл в этот проект - и то больше трёх end-ов подряд нигде не увидел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2021, 12:52 |
|
||
|
Флейм про оформление и begin-end
|
|||
|---|---|---|---|
|
#18+
softwarer> Длинные блоки - это само по себе не плохо. softwarer> Плохо, когда у длинных блоков начинается softwarer> разнообразная и непредсказуемая вложенность. То ли я не понял, что ты пытался сказать, то ли это какая-то демагогия. "разнообразная вложенность" - понятие слишком растяжимое - скажем, наличие в одной п/п if (одного или нескольких), case и try..except является разнообразной вложенностью или нет? softwarer> И тогда уже никакие отметки на end-ах делу не помогут. Помогут увидеть блоки. Код лучше не сделают, конечно. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2021, 13:32 |
|
||
|
Флейм про оформление и begin-end
|
|||
|---|---|---|---|
|
#18+
softwarer> страшный легаси модуль ... softwarer> больше трёх end-ов подряд нигде не увидел. Да ну, 3 end - это курам на смех, 3 end-a автоматически образуются в каждом втором-третьем длинном методе. Вот, для примера, расскажи мне, как рефакторить следующий г*код: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. И это простыня всего лишь на 60 строк, на экран почти помещается. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2021, 13:40 |
|
||
|
Флейм про оформление и begin-end
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов Рустам 3 end-a автоматически образуются в каждом втором-третьем длинном методе. Ну в общем, да. Один end на процедуру, один на finally - то есть нормально два. Один резервный - на какую-нибудь доп. хрень. А вот когда их 4-5 - это уже наворочено. Гаджимурадов Рустам Вот, для примера, расскажи мне, как рефакторить следующий г*код: Ну для начала, очевидно Код: pascal 1. 2. 3. 4. а дальше уже надо предметно смотреть, что внутри этих case-ов. В недавнем прошлом, когда я занимался такой хренью, лучшим оказался подход Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. но это уже принципиально зависит от. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2021, 13:58 |
|
||
|
Флейм про оформление и begin-end
|
|||
|---|---|---|---|
|
#18+
softwarer> Ну для начала, очевидно softwarer> if Key = VK_DELETE then DeleteSomething(FSelRow); softwarer> if Key = VK_RETURN then ReturnSomething(FSelRow); Ну что и ожидалось - вместо одного длинного плохого метода получить два плохих, но покороче. А вчера были большие, но по пять, а сегодня маленькие, но по 3. (с) > лучшим оказался подход > type > TSelRow = class > protected > procedure DoDelete; virtual; > procedure DoReturn; virtual; > end; Это ИМХО ещё хуже, чем одна длинная простыня. Впрочем, не настаиваю. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2021, 14:18 |
|
||
|
Флейм про оформление и begin-end
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов Рустам "разнообразная вложенность" - понятие слишком растяжимое Я не возьмусь сформулировать математически строго - сама область слишком зыбкая и растяжимая. Попробую примерно так: 1. Линейный блок (то есть тот, где передача управления идёт строго сверху вниз) может быть столь длинным, сколь нужно для конкретной задачи. Это нормально читается и не создаёт практических проблем. В том числе он может включать в себя локальные (то есть небольшие) ветвления и циклы, это не мешает. В том числе он может быть завёрнут в try. 2. Цикл может включать в себя длинный блок (а-ля блок из первого пункта) если он такой один и занимает практически всё тело подпрограммы (практически всё - в смысле, что до цикла и после цикла может быть несколько технических строк, но ничего существенного). 3. В ветвлении совершенно недопустимы два длинных блока (if условие then длинный else длинный). Ветвление с одной веткой (if условие then длинный) чаще всего следует переписать как (if not условие then exit; длинный). Ветвление с одной длинной и одной короткой веткой нежелательно. Если таки не удаётся его избежать, короткая ветка должна идти первой (if условие then длинный else короткий) следует переписать как (if not условие then короткий else длинный). 4. В некоторых случаях допустимо дальнейшее наращение вложенности (например, цикл, телом которого является цикл с длинным блоком или if с длинным блоком), но здесь быстро наступает предел (скажем, какой-нибудь двукратно вложенный if внутри длинного блока из предыдущего примера уже точно слишком). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2021, 14:25 |
|
||
|
Флейм про оформление и begin-end
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов Рустам Ну что и ожидалось - вместо одного длинного плохого метода получить два плохих получше Всё правильно. Там, где нет возможности для одного глобального улучшения, надо идти шаг за шагом. Гаджимурадов Рустам Это ИМХО ещё хуже, чем одна длинная простыня. В твоём случае - возможно. В моём - это неизмеримо лучше. Краткая характеристика моего случая в терминологии из твоего примера: FSelRow - несколько десятков, условно группируемых на два подтипа, склонны к регулярному пополнению; клавиши - пара десятков, стабильны, обработчики - в большинстве случаев типовые, частично - типовые для подтипа FSelRow, время от времени - особые, однажды прописанные, почти никогда не меняются. Соответственно, какое удовольствие было ползать среди двух десятков простыней, содержащих case на полсотни вариантов каждая.... я как один раз его ощутил, так сразу и переделал на короткий элегантный модуль, в котором добавление нового FSelRow делается за несколько минут, просто-напросто добавлением нового класса и доопределением в нём трёх-четырёх методов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2021, 14:39 |
|
||
|
Флейм про оформление и begin-end
|
|||
|---|---|---|---|
|
#18+
softwarer> 3. ... Если таки не удаётся его избежать, короткая softwarer> ветка должна идти первой (if условие then длинный softwarer> else короткий) следует переписать как (if not условие softwarer> then короткий else длинный). Ну это вариации из Макконнелла, он описал их лучше (хоть и гораздо многословнее), ИМХО. Кроме того, лично мне больше нравится (и понятнее/читабельнее) "натуральный" код, вместо "переставленного по размеру". Т.е. НЕ "переделанный" вариант следующего вида: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Да и вообще, "важный"/основной код хочется видеть до второстепенного, а не переставлять наоборот. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2021, 14:48 |
|
||
|
Флейм про оформление и begin-end
|
|||
|---|---|---|---|
|
#18+
softwarer> удовольствие было ползать среди двух десятков простыней Когда простыней много - да, плюсы могут пересилить минусы. :) softwarer> короткий элегантный модуль, в котором добавление softwarer> ... делается за несколько минут, просто-напросто softwarer> добавлением нового класса и доопределением в нём трёх-четырёх методов. Ну, "за несколько минут" оставим без комментариев, но ты забыл упомянуть, насколько разрастается при этом код (по сравнению с одной простыней, не несколькими) и все прелести взаимодействия не-friendly классов. :) Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2021, 14:53 |
|
||
|
Флейм про оформление и begin-end
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов Рустам Ну это вариации из Макконнелла, он описал их лучше (хоть и гораздо многословнее), ИМХО. Я допускаю, что Макконнел заглядывал в мой код, когда писал свою книгу. Гаджимурадов Рустам Кроме того, лично мне больше нравится (и понятнее/читабельнее) "натуральный" код, вместо "переставленного по размеру". Ничего не имею против, но при этом else за пару страниц от if категорически нечитабелен. Просто без вариантов. Я назвал вариант приведения наименьшей кровью, но если результат не устраивает - можно воспользоваться любым другим подходом, устраняющим такой if. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2021, 14:53 |
|
||
|
Флейм про оформление и begin-end
|
|||
|---|---|---|---|
|
#18+
"Флейм"...хм. Ёлы-палы, просто спросил!)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2021, 15:06 |
|
||
|
Флейм про оформление и begin-end
|
|||
|---|---|---|---|
|
#18+
Barmaley57> "Флейм"...хм. Ёлы-палы, просто спросил!)) Предложи название получше - переименую. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2021, 15:09 |
|
||
|
Флейм про оформление и begin-end
|
|||
|---|---|---|---|
|
#18+
softwarer> при этом else за пару страниц от if категорически нечитабелен. В смысле "условие" else или сам блок? Для "условия" как раз есть подсветка, комментарии, фолдинг и пр. извраты. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2021, 15:11 |
|
||
|
Флейм про оформление и begin-end
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_ Когда в конце процедуры образовывается лесенка из 4-5 end, то не такой и маразм От таких мест нужно избавляться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2021, 15:16 |
|
||
|
Флейм про оформление и begin-end
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов Рустам Ну, "за несколько минут" оставим без комментариев Верное решение. Гаджимурадов Рустам ты забыл упомянуть, насколько разрастается при этом код Боюсь тебя огорчить, но я померял. Между версиями v1 и v2 (последними перед переделкой) добавление 4-х FSelRow по старому типу привело к увеличению кода на 95 строк. Между версиями v3 и v4 (первыми после переделки) добавление 2-х FSelRow по новому типу привело к увеличению кода на 52 строки. Если вычесть из этих строк пустые и комментарии, думаю, окажется, что код ещё и сокращается. Впрочем, это в любом случае неважно. Размер кода важен, когда маневрируешь между простынями. Здесь же FSelRow собран в компактный лежащий вместе класс, размером, например (у последнего из добавленных) 36 строк, с которыми ты и работаешь. До всего остального кода просто нет никакого дела. Если захочется, можно, например, вынести этот FSelRow в отдельный файл и наслаждаться "разросшимся кодом" менее 50 строк. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2021, 15:18 |
|
||
|
Флейм про оформление и begin-end
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов Рустам В смысле "условие" else или сам блок? В смысле, программный код, содержащий такую конструкцию. Гаджимурадов Рустам Для "условия" как раз есть подсветка, комментарии, фолдинг и пр. извраты. Скажем так, костыли до определённой степени помогают, но не вижу смысла полагаться на них как на базовый механизм. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2021, 15:22 |
|
||
|
Флейм про оформление и begin-end
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов Рустам, авторавтор Минус фигурных скобок в том что если камент... ... Про комментирование в целях отладки уже отметили, .... Ну, отладке это точно не помешает, если не путаться в их последовательности Код: pascal 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2021, 16:05 |
|
||
|
Флейм про оформление и begin-end
|
|||
|---|---|---|---|
|
#18+
Gerasimenko> Ну, отладке это точно не помешает, если не путаться в их последовательности Ну Вы хоть сообщение, на которое отвечаете, дальше первой строчки прочитайте что ли... softwarer> добавление 4-х FSelRow по старому типу softwarer> привело к увеличению кода на 95 строк Это для скольки штук простыней? softwarer> Здесь же FSelRow собран в компактный лежащий softwarer> вместе класс, размером, например 36 строк Ещё раз - ты на каждый FSelRow свой наследник делаешь или что именно тут 36 строк занимает? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2021, 16:24 |
|
||
|
Флейм про оформление и begin-end
|
|||
|---|---|---|---|
|
#18+
ъъъъъ _Vasilisk_ Когда в конце процедуры образовывается лесенка из 4-5 end, то не такой и маразм Ну как ты от них избавишься? Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Что тут выкинуть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2021, 16:34 |
|
||
|
Флейм про оформление и begin-end
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов Рустам, - именно в примере - все пары b/e. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2021, 17:27 |
|
||
|
Флейм про оформление и begin-end
|
|||
|---|---|---|---|
|
#18+
ЯННП. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2021, 17:30 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=40063086&tid=2037285]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
179ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 14ms |
| total: | 290ms |

| 0 / 0 |
