OberonCore
https://forum.oberoncore.ru/

циклы, assert-ы, структурность, си и стадность
https://forum.oberoncore.ru/viewtopic.php?f=27&t=6919
Страница 1 из 1

Автор:  arisu [ Воскресенье, 19 Март, 2023 03:44 ]
Заголовок сообщения:  циклы, assert-ы, структурность, си и стадность

просматривая давеча некоторые свои сишные исходники, заметил интересное.

1. код насквозь больной premature optimisation. получается так почти рефлекторно, а если этого не делать — то ощущается дискомфорт: у нас же (с придыханием) системный язык! надо «оптимизировать» сразу!

2. циклы забиты break'ами, потому что п.1. а чего, если метка явно не объявлена — то неструктурный переход не считается!

3. и забавное: очень часто после циклов стоят assert-ы, которые проверяют постусловие. некоторое время я считал это признаком хорошего и надёжного кода. простите, если вы пили чай/кофе и только что поперхнулись.

и про стадность явней: когда я пишу на обероне (компонентном паскале, но неважно), давление пункта 1 про «настоящие программисты сразу оптимизируют» почти исчезает. вместе с ним исчезает множество (но, каюсь, далеко не все) assert-ов из пункта 3 — в силу ненадобности.

печальное: полностью излечиться никак не удаётся, и эмуляторы break через булы всё равно подло пробираются в код.

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

Автор:  Artyemov [ Понедельник, 20 Март, 2023 02:05 ]
Заголовок сообщения:  Re: циклы, assert-ы, структурность, си и стадность

arisu писал(а):
и выдавать им еду исключительно за правильно написаные циклы.

Похоронные ж конторы озолотятся... (-;

Автор:  arisu [ Понедельник, 20 Март, 2023 02:21 ]
Заголовок сообщения:  Re: циклы, assert-ы, структурность, си и стадность

Artyemov писал(а):
arisu писал(а):
и выдавать им еду исключительно за правильно написаные циклы.

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

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

Автор:  Rifat [ Четверг, 13 Июль, 2023 14:05 ]
Заголовок сообщения:  Re: циклы, assert-ы, структурность, си и стадность

arisu писал(а):
просматривая давеча некоторые свои сишные исходники, заметил интересное.

1. код насквозь больной premature optimisation. получается так почти рефлекторно, а если этого не делать — то ощущается дискомфорт: у нас же (с придыханием) системный язык! надо «оптимизировать» сразу!

2. циклы забиты break'ами, потому что п.1. а чего, если метка явно не объявлена — то неструктурный переход не считается!

3. и забавное: очень часто после циклов стоят assert-ы, которые проверяют постусловие. некоторое время я считал это признаком хорошего и надёжного кода. простите, если вы пили чай/кофе и только что поперхнулись.

и про стадность явней: когда я пишу на обероне (компонентном паскале, но неважно), давление пункта 1 про «настоящие программисты сразу оптимизируют» почти исчезает. вместе с ним исчезает множество (но, каюсь, далеко не все) assert-ов из пункта 3 — в силу ненадобности.

печальное: полностью излечиться никак не удаётся, и эмуляторы break через булы всё равно подло пробираются в код.

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

Break - плохо. Логические переменные уже гораздо лучше.
Насчет assert, в них нет ничего плохого. Они, как неустаревающие комментарии, должны проверять код, что ничего не поломалось.

Автор:  arisu [ Четверг, 13 Июль, 2023 17:11 ]
Заголовок сообщения:  Re: циклы, assert-ы, структурность, си и стадность

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

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

Автор:  Comdiv [ Вторник, 18 Июль, 2023 01:48 ]
Заголовок сообщения:  Re: циклы, assert-ы, структурность, си и стадность

Утверждения вставляют не для того, чтобы они проваливались точно так же, как страховку приобретают не для того, чтобы катастрофа произошла.
Конечно, не нужно ставить их для каждого цикла, но не ставить, потому что код «должен» быть написан правильно и нечего это проверять - это ещё более плохая идея.

Автор:  arisu [ Вторник, 18 Июль, 2023 09:30 ]
Заголовок сообщения:  Re: циклы, assert-ы, структурность, си и стадность

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

в некоторых случаях, впрочем, его имеет смысл писать, если цикл сложный (хотя это уже code smell) — просто в качестве упрощённой документации по ожидаемым результатам.

я же фигачил такие ассерты по правилу: «чем больше сдадим — тем лучше!» а это и читать мешает, и показывает злоупотребление всякими break, которые нарушают читаемость.

как-то вот так.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/