Точка с запятой перед операторной скобкой

1. user1342811 19 18.10.22 09:07 Сейчас в теме
Добрый день.
В последнее время заметил что стал часто пропускать точку с запятой перед операторной скобкой пример:
Если Условие Тогда
   Оператор1;
   Оперетор2
Иначе
    Оператор4
КонецЕсли;

Собственно вопрос такой, на что влияет точка с запятой перед операторной скобкой.
Единственное что нашёл в интернете:
Точку с запятой ставить надо, так как вдруг потом надо будет дописать что-нибудь и у оператора у которого нет точки с запятой, она уже будет нужна.

Хотелось бы услышать мнения. Ставить или нет точку с запятой и почему.
Спасибо.
Найденные решения
31. user1342811 19 23.10.22 04:30 Сейчас в теме
Судя по ответам. Главная проблема почти у всех, кто встречает такой код это его последующая доработка, хотя на мой взгляд это всё субъективно, но большинство считает, что так лучше не писать.
Единственное что действительно можно считать проблемой, это заимствование в расширении такого когда, когда приходится писать, что нибудь типа:
Если Условие Тогда
   Оператор1;
   Оперетор2
#Вставка
;
Оператор4;
#КонецВставки
Иначе
    Оператор4
КонецЕсли;
Показать

Что становиться не очень читабельным.
Всем спасибо.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. spacecraft 18.10.22 09:09 Сейчас в теме
(1) а того что уже нашли мало?
3. user1342811 19 18.10.22 09:13 Сейчас в теме
(2)Просто интересно узнать мнения.
4. THEBESTolo4b 10 18.10.22 09:14 Сейчас в теме
(1) а следующий программист посмотрел на это и грит потом, что за Гов**код.
5. user1342811 19 18.10.22 09:18 Сейчас в теме
(4)Не уверен что отсутствие точки с запятой признак гов***кода.
6. Sashares 35 18.10.22 09:22 Сейчас в теме
(5)А в чем проблема поставить?
7. spacecraft 18.10.22 09:25 Сейчас в теме
(6) это новое направление - анти индусский код. Там платили за количество символов, тут лень.
user1342811; +1 Ответить
8. user1342811 19 18.10.22 09:25 Сейчас в теме
(6)Проблем нет, просто заметил, что в последнее время стал пропускать.
Да и вроде как пустой оператор, может на что-нибудь влияет.
10. Sashares 35 18.10.22 09:28 Сейчас в теме
(8)Да все уже сказано - потребуется потом кому-то дописать код в процедуру, потребуется за вами доделывать. Делайте нормально сразу.
lefthander; +1 Ответить
12. user1826630 18.10.22 10:39 Сейчас в теме
(10) Или если расшрирять через ИзменениеИКонтроль, то придется эту строку ставить в #Удаление, и дублировать её во #Вставка (но уже с точко-запятой). А можно было бы и обойтись
Элементарное неуважение к коллегам, как по мне.
user1342811; +1 Ответить
13. user1342811 19 18.10.22 10:45 Сейчас в теме
(12)Полностью согласен.
Я не говорил, что принципиально не ставлю точку с запятой, а то что стал замечать за собой. Вот и задумался, а так ли это страшно. Теперь буду внимательнее
16. spacecraft 18.10.22 10:53 Сейчас в теме
(12)
Или если расшрирять через ИзменениеИКонтроль, то придется эту строку ставить в #Удаление, и дублировать её во #Вставка (но уже с точко-запятой). А можно было бы и обойтись

Чисто технически это не обязательно. Можно не удалять, а во Вставка начать с ;
Точка с запятой может располагаться и на другой строке кода.
Но да, это лишний напряг. И самое главное, возможность появления не информативной ошибки.
comptr; mixa4; dehro; user1342811; +4 Ответить
18. starik-2005 3088 18.10.22 11:11 Сейчас в теме
(10)
доделывать
Офигеть, доделыватели всю клавиатуру стерли на символе ";" )))
9. minarenko 18.10.22 09:25 Сейчас в теме
(1)а меня интересует что вы делаете с этим громадным свободным временем, которое у вас высвобождается не ставя точки с запятыми
15. lmnlmn 69 18.10.22 10:53 Сейчас в теме
(1) С точки зрения синтаксиса, эту точку с запятой ставить не нужно. Но уже упомянули про (12). Но это уже относиться не к синтаксису, а, скажем, к культуре разработки в эпоху расширений.
21. dehro 7 18.10.22 11:41 Сейчас в теме
(1)Логически она там не нужна. Ибо "Иначе", "КонецЕсли", "КонецЦикла", etc уже завершают блок.
Если нравится - ставьте.

По поводу "Красивости" кода: с псевдонимами "РегистрСведенийВременноПребывающиеПринятыеПоДолгосрочнымДог­оворамСрезПоследних" тоже работать не ахти как удобно, но терпят, чтобы "другим было понятно". Хотя другие так же мучаются))
22. user856012 14 18.10.22 11:55 Сейчас в теме
(1)
Собственно вопрос такой, на что влияет точка с запятой перед операторной скобкой.
На отношения между программистами. ;-)

И мерещится мне, что если бы вам приходилось регулярно расставлять точки с запятыми после других программистов, то тон ветки был бы сааавсем другим! :-)
user1342811; +1 Ответить
11. SlavaKron 18.10.22 10:20 Сейчас в теме
В таких конструкциях тоже не ставлю ";"
Если РезультатЗапроса.Пустой() Тогда
	Возврат
КонецЕсли;
14. user1826630 18.10.22 10:49 Сейчас в теме
(11) Ну, после возврата уже точно никогда ничего дописано не будет - ни в основном коде, ни в расширяемом ))
17. starik-2005 3088 18.10.22 11:08 Сейчас в теме
В паскалях еще такое было, что завершение блока само по себе "точка с запятой". Я, например, к этому нормально отношусь. И если коллега не может при необходимости поставить этот символ, то хреновый он коллега. Это как в запросе запятые перед элементами выборки ставить, чтобы коллегу не обидеть, ибо перед ИЗ запятая приведет к ошибке )))
19. Sashares 35 18.10.22 11:31 Сейчас в теме
(17)Это тоже самое, что соседи, что не выкидывают мусор в мусорку, а бросают в подъезде. Если другие соседи не могут донести чужой мусор до мусорки, они хреновые соседи.
У вас такая же логика, такого же уровня.

Делай свою работу нормально, чтобы за тобой не приходилось переделывать другим.
23. lmnlmn 69 18.10.22 12:08 Сейчас в теме
(19) Если что-то попадает в расширение это уже переделка. А лепить точки с запятой там где они излишни на случай чтоб при заимствовании в расширение копипастить не пришлось тоже не слишком рационально. А вдруг не заимствуют а я тут точек с запятыми налепил?
user1342811; +1 Ответить
24. Sashares 35 18.10.22 12:14 Сейчас в теме
(23)
А вдруг не заимствуют а я тут точек с запятыми налепил?

Простая логика:
- есть точка с запятой и заимствуют в расширение - проблемы ни у кого нет
- есть точка с запятой и НЕ заимствуют в расширение - проблемы ни у кого нет
- нет точки с запятой и заимствуют в расширение - есть проблема
- нет точки с запятой и НЕ заимствуют в расширение - нет проблемы

Зачем создавать проблему на пустом месте, если можно ее не создавать? Поставить ";" не такая и сложная задача.

Я не говорю, что это прям критичная проблема, если ее не будет, если разработчик забыл случайно поставить ";". Другой может это исправить. Я против целенаправленного подхода "не ставить ";" там где можно ее не ставить", т.к. это потенциально приведет к ошибке в будущем.
20. dehro 7 18.10.22 11:35 Сейчас в теме
(17)В Pascal оператор ";" назывался "пустой оператор" и служил для разделения операторов.
Там можно было по несколько точек с запятой подряд ставить: и всё работало.

Критично было только в случае нескольких вложенных if

if условие1 then оператор1 if условие2 then оператор2; else оператор3

Выделенный оператор указывал, что else к первому if
25. starik-2005 3088 18.10.22 12:59 Сейчас в теме
(20)
В Pascal оператор ";" назывался "пустой оператор" и служил для разделения операторов.
Там можно было по несколько точек с запятой подряд ставить: и всё работало.
Так 1С - это процедурная копия паскаля можно сказать. И точки с запятой тоже можно ставить сколько хошь.
user1342811; +1 Ответить
26. dehro 7 18.10.22 22:21 Сейчас в теме
(25) Все языки программирования в чём-то схожи. Элементы Pascal, разработанного для изучения программирования можно увидеть в любом языке программирования. Но это не значит, что этот язык копия Pascal.

Отличий много: строгая типизация, по циклам несовпадение (for ... to ... downto, repeat ... until ...), простой/составной оператор, etc.

Может создатели языка 1С и вдохновлялись Pascal, но язык получился сильно другой.

PS Цикла "Repeat оператор Until условие" в 1С явно не хватает.
27. user1342811 19 18.10.22 23:38 Сейчас в теме
(26)Я 1С вижу больше VB чем Pascal
28. nomad_irk 76 19.10.22 06:33 Сейчас в теме
(1)Делайте - не возражаем.....
(26)
Цикла "Repeat оператор Until условие" в 1С явно не хватает.


Есть же цикл "Пока Условие Цикл", чем не замена?
29. laperuz 47 19.10.22 07:06 Сейчас в теме
(28)Ну это не прямая замена, Repeat Until гарантированно хотя бы раз выполнится, Пока это аналог While.
Но, строго говоря, "явно не хватает", для меня более чем не явно)
30. lmnlmn 69 19.10.22 09:23 Сейчас в теме
(28)
Есть же цикл "Пока Условие Цикл", чем не замена?


Функционально - замена, жить можно. Но в Repeat ... Until постусловие. Т.е. до цикла не надо "инициализировать" условие. Компактней код получается и не приходится одно и то же в двух местах писать/вызывать.
31. user1342811 19 23.10.22 04:30 Сейчас в теме
Судя по ответам. Главная проблема почти у всех, кто встречает такой код это его последующая доработка, хотя на мой взгляд это всё субъективно, но большинство считает, что так лучше не писать.
Единственное что действительно можно считать проблемой, это заимствование в расширении такого когда, когда приходится писать, что нибудь типа:
Если Условие Тогда
   Оператор1;
   Оперетор2
#Вставка
;
Оператор4;
#КонецВставки
Иначе
    Оператор4
КонецЕсли;
Показать

Что становиться не очень читабельным.
Всем спасибо.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот