|   |   | 
| 
 | Философский вопрос об оформлении кода - 2 | ☑ | ||||||
|---|---|---|---|---|---|---|---|---|
| 0
    
        quest 03.06.12✎ 19:13 | 
 
        что-то потянуло меня пофилософствовать. 
  есть 2 процедуры. Функция УсловиеВыполняется возвращает либо истину либо ложь. процедура Вариант1(ЛюбаяКоллекция) Для Каждого х из ЛюбаяКоллекция цикл если не УсловиеВыполняется(х) тогда Продолжить; КонецЕсли; .... Тут какие-то действия с элементом коллекции .... КонецЦикла; КонецПроцедуры процедура Вариант2(ЛюбаяКоллекция) Для Каждого х из ЛюбаяКоллекция цикл если УсловиеВыполняется(х) тогда .... Тут какие-то действия с элементом коллекции .... КонецЕсли; КонецЦикла; КонецПроцедуры Какой из вариантов оформленя кода для вас предпочтительней? | |||||||
| 1
    
        aleks-id 03.06.12✎ 19:47 | 
        монопенисуально
  3 Вариант. | |||||||
| 2
    
        МихаилМ 03.06.12✎ 20:22 | 
        это описано в "совершенный код"     | |||||||
| 3
    
        Torquader 03.06.12✎ 20:25 | 
        Первый вариант предпочтительней, если сложное условие,
  так как его можно разбить на несколько (Если Подусловие(х) Тогда Продолжить;КонецЕсли) Второй вариант предпочтительнее в случае, когда планируется изменение кода, так как дописать в цикл два разных действия при различных условиях будет значительно проще: Если Условие1(Эл) Тогда Обработка1(Эл) КонецЕсли; Если Условие2(Эл) Тогда Обработка2(Эл); КонецЕсли; | |||||||
| 4
    
        DrShad 03.06.12✎ 20:37 | 
        да что же за фигня, (0) отсыпь уже - хочу чтоб и меня так торкунуло в выходной-то день     | |||||||
| 5
    
        quest 03.06.12✎ 20:42 | 
        (4) кому выходной, а кому и работать приходиться....     | |||||||
| 6
    
        aleks-id 03.06.12✎ 20:43 | 
        (5) судя по темам не приходится ;)     | |||||||
| 7
    
        quest 03.06.12✎ 20:44 | 
        (6) это просто что бы отвлечься...     | |||||||
| 8
    
        quest 03.06.12✎ 20:45 | 
        нельзя же все время только о работе думать.     | |||||||
| 9
    
        IamAlexy 03.06.12✎ 20:46 | 
        мне первый нравится больше... 
  удобнее когда в конце функции пролистаешь не надо разбираться в бесконечных конецесли; конецесли; конецесли; конецесли; конецесли; конецесли; конецесли; и высчитывать где ты там очередное "конецесли;" забыл поставить | |||||||
| 10
    
        Азазелло 03.06.12✎ 20:49 | 
        + еще в одну строку Если ... Тогда Продолжить КонецЕсли;     1 Вариант | |||||||
| 11
    
        0_Serg_0 03.06.12✎ 21:41 | 
        удобнее если надо  будет изменить код (добавить условий)     1 Вариант | |||||||
| 12
    
        experimentator76 03.06.12✎ 22:25 | 
        пользую интуитивно оба варианта
  тему можно закрывать | |||||||
| 13
    
        vde69 03.06.12✎ 22:31 | 
        первый вариант проще читать
  второй вариант прощще расширить (сделать несколько вариантов) использую оба | |||||||
| 14
    
        acsent 03.06.12✎ 22:58 | 
        (13) написать 1 лишнюю строчку - как сложно однако     | |||||||
| 15
    
        dklushin 03.06.12✎ 23:12 | 
        "Функция УсловиеВыполняется возвращает либо истину либо ложь."(0)
  Спасибо что прояснил, кэп. | |||||||
| 16
    
        dklushin 03.06.12✎ 23:18 | 
        по теме: конечно вариант 2. Вариант 1 это быдлокод, зачем было писать "продолжить;" если это не сократило ни количество переменных, ни количество конструкций языка?
  (9) посмотри внимательно, в обоих вариантах одинаковое количество циклов и условий. 2 Вариант | |||||||
| 17
    
        dklushin 03.06.12✎ 23:19 | 
        вообще злоупотреблять операторами безусловного перехода не стоит даже в 1с.     | |||||||
| 18
    
        experimentator76 03.06.12✎ 23:28 | 
        они в 1С не нужны     | |||||||
| 19
    
        dklushin 03.06.12✎ 23:30 | 
        (18) ну тот же "продолжить" нужен, когда ищешь элемент в массиве, нашёл, зачем продолжать цикл? приходится брейк вызывать.     | |||||||
| 20
    
        КонецЦикла 03.06.12✎ 23:32 | 
        Первый рулит имхо, сразу понятно что отсекается (читабельнее что ли)     | |||||||
| 21
    
        IamAlexy 03.06.12✎ 23:32 | 
        (16) внимательно мой пример почитай и подумай еще раз..     | |||||||
| 22
    
        experimentator76 03.06.12✎ 23:35 | 
        (19) я подумал про GOTO
  продолжить - неявный переход | |||||||
| 23
    
        IamAlexy 03.06.12✎ 23:36 | 
        (19) фантазию включи.. если надо обработать 2 строки а не одну.. 
  а если вдруг о боже - целых три строки? или, чем черт не шутит, аш невообразимых ЧЕТЫРЕ строки??? | |||||||
| 24
    
        quest 03.06.12✎ 23:36 | 
        голосовать не забывайте, а? 
  И аргументировать почему вам нравиться тот или иной вариант. все таки хочется собрать статистику. | |||||||
| 25
    
        quest 03.06.12✎ 23:37 | 
        (22) попытка/исключение - это тоже неявное гото. и что? смысл его бояться?     | |||||||
| 26
    
        IamAlexy 03.06.12✎ 23:37 | 
        статистика     1 Вариант | |||||||
| 27
    
        IamAlexy 03.06.12✎ 23:37 | 
        на мисте     2 Вариант | |||||||
| 28
    
        IamAlexy 03.06.12✎ 23:37 | 
        как правлио     1 Вариант | |||||||
| 29
    
        IamAlexy 03.06.12✎ 23:37 | 
        несколько не отражает     2 Вариант | |||||||
| 30
    
        IamAlexy 03.06.12✎ 23:37 | 
        статистику     1 Вариант | |||||||
| 31
    
        quest 03.06.12✎ 23:40 | 
        в теперь бы еще аргументацию к постам с (26) по (30) :)     | |||||||
| 32
    
        dklushin 03.06.12✎ 23:40 | 
        (21) подумал. В какой-то степепи проще. Не стоит того)
  (23) да хоть стотыщ? ты хочешь сказать, чтио второй вариант будет медленнее? (25) вот за это в цикле руки отрывают. Попытка/исключение очень медленный процесс. Лучше 100 проверок, если это возможно, чем выполнение кода в попытке. 2 Вариант | |||||||
| 33
    
        IamAlexy 03.06.12✎ 23:41 | 
        аргументация простая - любой мистятен может в одной и той же ветке проголосовать любое количество раз, причем за разные варианты...
  ВР грит типа это правильнее.. Это я к тому что голосовалка на мисте носит единственный смысл - нетопить длинные ветки | |||||||
| 34
    
        IamAlexy 03.06.12✎ 23:45 | 
        (32) 1. ага.. во всех степенях проще.. когда у тебя процедура/функция в пять-семь скринов вмещается, то есть ты ее всю сразу не видишь - реально подбешивает когда у тебя в конце процедуры/фуннкции собрана хрень типа
  конецЕсли; конецЕсли; конецЕсли; КонецЦикла; КонецЦикла; КонецЕсли; КонецЦикла; КонецЦикла; КонецЕсли; и проверка ругается на то что где то этот конец... лишний.. или его наоборот нехватает.. а первый вариант позволяет упростить, уменьшить количство вложенностей условий.. сразу 2. я про скорость ничего не говорил - речь сугубо про удобочитаемость кода и удобство дальнейшей модификации оного. 3. всем плевать что ты в цикле делаешь если у тебя в целом программа работает так как она должна работать.. задрачиваться на эфимерное "попытка медленнее чем если" и приэтом делать неоптимальные запросы - смысла мало.. | |||||||
| 35
    
        dklushin 03.06.12✎ 23:55 | 
        (34)
  вот 3 пункт твой главный аргумент: "какая тебе нафиг разница, всё равно работает". Про неоптимальные запросы ничего не говорил, я за то, чтобы писать оптимальные. про 1й пункт: концов цикла тоже дофига будет. Можно при написании помечать их одинково, например "Начало условия 1: конец условия 2" Если ты нашёл для себя приём бороться с неудобством среды(нельзя выделять начало и конец конструкции) то это не значит что он крут. Он быдлокоден, и всего. 2 Вариант | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |