Имя: Пароль:
1C
 
Немного про сложности представления. Какой вариант легче читать?
0 Галахад
 
14.06.23
14:53
1. Другой вариант 56% (5)
2. Вариант 1 33% (3)
3. Вариант 2 11% (1)
Всего мнений: 9

Вариант 1
Если А Тогда
	Если Б Тогда
		...
	КонецЕсли;
	Если С Тогда
		...
	КонецЕсли;
Иначе
	Если Д Тогда
		...
	КонецЕсли;
КонецЕсли;


Вариант 2
Если А и Б Тогда
	...
КонецЕсли;
Если А и С Тогда
	...
КонецЕсли;
Если НЕ А Тогда
	Если Д Тогда
		...
	КонецЕсли;
КонецЕсли;
1 SleepyHead
 
14.06.23
14:52
(0) Разница непринципиальна.
2 Волшебник
 
14.06.23
14:53
1-й лучше

Вариант 1
3 majkk
 
14.06.23
15:02
(0) Одинаково легко. Тренируйте кратковременную память, тогда и вопросов таких возникать не будет.
Ваш вопрос странный. Кому должно быть легче читать? Интерпретатору? Ему пофиг. Настоящему программисту? Ему тоже пофиг. Непрограммисту? Так и ему пофиг! Но уже совсем по другой причине, он ни первое, ни второе не поймет. Начинающему программисту? А зачем ему делать легче? Пусть читает что посложнее и тренирует кратковременную память
4 Галахад
 
14.06.23
15:04
Пытаюсь понять почему эта самая сложность считается именно так:

void myMethod () {
    try {
        if (condition1) { // +1
            for (int i = 0; i < 10; i++) { // +2 (nesting=1)
            while (condition2) { … } // +3 (nesting=2)
            }
        }
    } catch (ExcepType1 | ExcepType2 e) { // +1
    if (condition2) { … } // +2 (nesting=1)
    }
} // Cognitive Complexity 9
5 Галахад
 
14.06.23
15:05
(3) Дурацкий подход. Процедуры в 1000 строк кода и запросы на 20 экранов не улучшают удобство разработки.
6 Ногаминебить
 
14.06.23
15:06
Но во втором логичнее же
Если Не А и Д тогда

КонецЕсли;

Вариант 1
7 НафНаф
 
14.06.23
15:07
(0) упрощенно:

Если А Тогда
    Действие1();
Иначе
    Действие2();
КонецЕсли;

внутри методов свои одноуровневые условия
8 majkk
 
14.06.23
15:09
(4) Из текста непонятно? Там же все расписано +1,+2,+3
9 majkk
 
14.06.23
15:15
(5) Смотря что считать удобством. За разбор одного запроса на 20 экранов с заказчика можно взять очень много денег. И это удобно. Разве нет? )))
10 Eiffil123
 
14.06.23
15:18
(9) а заказчику не пофиг, вы 20 экранов запроса разобрали или 1 строку? откуда он узнает?
11 РусКомп
 
14.06.23
15:18
Если А И Б Тогда
    ...
ИначеЕсли А И С Тогда
    ...
ИначеЕсли Д Тогда
    ...
КонецЕсли;
12 РусКомп
 
14.06.23
15:19
Если А И Б Тогда
    ...
ИначеЕсли А И С Тогда
    ...
ИначеЕсли не А и Д Тогда
    ...
КонецЕсли;

Другой вариант
13 Мультук
 
14.06.23
15:23
(12) Я за этот вариант

Другой вариант
14 Eiffil123
 
14.06.23
15:31
(11) чем с ИначеЕсли лучше?
15 mikecool
 
14.06.23
15:32
(7) +1
16 Мультук
 
14.06.23
15:36
(14)

Тем что легко и просто исчезает малейшая иллюзия (просто при чтении), что какие-то действия могут быть выполнены несколько раз.
В вариант1 и вариант2 это придется анализировать и помнить.
17 Новый1сник2
 
14.06.23
15:45
(12) норм

Другой вариант
18 Aleksey
 
14.06.23
15:55
А разве во втором варианте не будет тратиться время на постоянное вычисление чему равно А

Вариант 2
19 majkk
 
14.06.23
15:56
(10) Из выставленного счета, Ватсон!
20 Волшебник
 
14.06.23
15:56
(18) можно вычислить один раз и загнать в переменную
21 Ногаминебить
 
14.06.23
15:57
(12) Стоп. А как же вариант, когда А Б С истина и должны выполниться 1 и 2 условие последовательно?
22 KJlag
 
14.06.23
16:04
(0) я подсел на такое:
загнать в функцию/процедуру

Если А Тогда

    Если Б Тогда
    ...
        Возврат;
    КонецЕсли;

   //Если С
   ...
   Возврат;

КонецЕсли;

Если Д Тогда
    ...
КонецЕсли;


но если выбирать из 1 и 2, то 2, ибо большие "если" на 1-2 страницы меня напрягают, а если еще туда добавить "иначе"

Другой вариант
23 ptiz
 
14.06.23
19:17
Однозначно

Вариант 1
24 Bigbro
 
15.06.23
06:45
от ситуации зависит и от условий.
иногда они логически связаны из контекста
иногда нужно просто перебрать все варианты по если иначе
иногда нас действительно интересует лишь пара сочетаний и одно невыполнение, на все остальное плевать.

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

Если ЭтоРабочаяБаза Тогда
  Если а Тогда
    ...
  Иначе
    ...
  КонецЕсли;
Иначе // копия
  Если б Тогда
    ..
  КонецЕсли;
КонецЕсли;

вот тут объединять ничего не нужно - условие проверки рабочая база или нет никак не связано с бизнес логикой.

Другой вариант
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.