|
Фичи платформы - век живи, век учись - дураком помрешь | ☑ | ||
---|---|---|---|---|
0
vvp91
23.05.19
✎
16:20
|
Прямо сейчас мой прог показал мне фичу платформы (8.3.13), которая очень понравилась - создание нового элемента соответствия инициализацией:
Причем в справке этого не описано. Ни запрещено, но и не описано. Естественно весь код, до этого писался через "Карта[Ключ] <> Неопределено" и через "Карта.Вставить(Ключ, Значение)". Причем в типовых нигде такого нет. На партнерке была дискуссия о синтаксическом сахаре в платформе - https://partners.v8.1c.ru/forum/topic/1754180 Хотелось бы разных простых инициализаций простых коллекций. Но, блин, от них ничерта не дождешься. |
|||
1
H A D G E H O G s
23.05.19
✎
16:21
|
Зачем?
|
|||
2
Garykom
гуру
23.05.19
✎
16:22
|
(0) PHP-щиной и JS-щиной повеяло...
|
|||
3
Cyberhawk
23.05.19
✎
16:22
|
А зачем "Карта[Ключ] <> Неопределено"?
|
|||
4
H A D G E H O G s
23.05.19
✎
16:22
|
Хорошо, что вот таких энтузиастов нахрен послали.
|
|||
6
Garykom
гуру
23.05.19
✎
16:27
|
(5) Не использую в принципе, ибо потом когда обычно требуется добавить ИначеЕсли лишние действия
|
|||
7
H A D G E H O G s
23.05.19
✎
16:28
|
Синтаксис языка хорош, когда он читаем
Если Тогда Иначе КонецЕсли; гораздо читаемый, чем ?() Аналогично МойМассив = Новый Массив(); МойМассив.Добавить("раз"); МойМассив.Добавить("два"); МойМассив.Добавить("три"); гораздо читаемей, чем это ушлепство из других ЯП МойМассив = ["раз", "два", "три"]; |
|||
8
H A D G E H O G s
23.05.19
✎
16:29
|
(6) Да теже точки останова.
|
|||
9
Кир Пластелинин
23.05.19
✎
16:29
|
(0) в 8.3?) лол. еще в 8.2 так можно было
|
|||
10
GANR
23.05.19
✎
16:42
|
(0) Классическая перегрузка операторов в ООП. При желании можно создать класс Матрица, а потом с матрицами A, B, C проделывать (A + B) * C или A * A + B * B. Ну а то, что Вы этого не знали - невелика потеря, если Вам знаком метод соответствия Вставить.
|
|||
11
PR
23.05.19
✎
16:53
|
(0) Чувак нашел недокументированную никому нахрен не нужную фичу и срочно переписал весь свой код на код с ее использованием, чтобы после отрубания этой фичи все весело наипнулось
И этим хвастается Я ничего не пропустил? :)) |
|||
12
Джинн
23.05.19
✎
16:57
|
(7) Плюсану.
(11) Он к этому еще новых фич хочет, чтобы наипнулось гораздо основательнее. |
|||
13
lodger
23.05.19
✎
17:02
|
(0) использование фич не описанных в доке ведет к глубокой печали, когда в следующем релизе платформы эти фичи выпилят и ничего не скажут.
|
|||
14
PR
23.05.19
✎
17:06
|
(7) Соглашусь насчет ?(), почти всегда можно обойтись Если...
Про массив вообще не понимаю, что тут обсуждать В 1С читабельность кода на два — три порядка важнее его размера Быстрее понимать Быстрее править Меньше ошибок Проще отлаживать Быстрее и надежнее лепить горящие заплатки, когда бизнес встал 1С — язык высокого уровня, каждая неверная строчка может привести к реальным финансовым проблемам Я даже не знаю, что на другой чаше весов? Место на диске? Возможность работать на мониторе не 36", а 18"? Повышение уровня эндорфинов в стране из-за множественных оргазмов гиков? |
|||
15
Вафель
23.05.19
✎
17:09
|
(14) и поэтому все делают на запросах километровых.
конечно чтоб читабельнее было |
|||
16
гангста парадайз
23.05.19
✎
17:11
|
(15) ну запросы и синтаксис языка не путай, на скуле такого же размера запросы
|
|||
17
Вафель
23.05.19
✎
17:12
|
(16) на каком скуле, ты про что вообще?
|
|||
18
mikecool
23.05.19
✎
17:12
|
(15) ну вот зачем ты... )))
|
|||
19
Вафель
23.05.19
✎
17:13
|
(0) на 1с не очень выглядит ибо не разницы между сравнением и присваиванием.
и с 1 взгляда тут не понятно |
|||
20
гангста парадайз
23.05.19
✎
17:14
|
(14) >1С — язык высокого уровня, каждая неверная строчка может привести к реальным финансовым проблемам
Обнял, братиш |
|||
21
pavig
23.05.19
✎
17:18
|
(5)
А мне ?() нравится в случае простых операций. Очень удобно в одну строчку присвоить значение переменной, чем писать пять строчек Если Зачем Почему Иначе МожетЗакончим НетЕщеОдноУсловие Ок Кончай. Как раз гораздо понятнее и проще. |
|||
22
Nyoko
23.05.19
✎
17:18
|
(0) 1с не права в этих, если так можно документировать, нельзя выдавать исключение. чё сопли то размазывать .
|
|||
23
Garykom
гуру
23.05.19
✎
17:20
|
(20) Вы еще заплачьте и дружно удалитесь в закат...
|
|||
24
Rovan
гуру
23.05.19
✎
17:45
|
(0) у меня есть старая платформа 8.3.6.1383 - там в справке написано
Соответствие (Map) Элементы коллекции: КлючИЗначение Для объекта доступен обход коллекции посредством оператора Для каждого … Из … Цикл. При обходе выбираются элементы соответствия. Возможно обращение к значению элемента посредством оператора [...]. В качестве аргумента передается значение ключа элемента. **** В 1С:Предприятие 8.3 (8.3.14.1630) точно так же |
|||
25
Garykom
гуру
23.05.19
✎
17:59
|
(24) Ну бывает, возможно кто то даже использовал для получения значения, но для записи нового значения а не замены существующего по ключу не догадался.
|
|||
26
mistеr
23.05.19
✎
18:05
|
(0) Даже в 8.2.13 работает.
Но я не пользовался. Теперь наверное буду. Не понял возмущения противников такого синтаксиса. Чем Вставить() более читабельно? Я бы даже сказал менее, т.к. не совсем очевидно, каким параметром идет ключ, а каким значение. Если с массивом так можно, почему нельзя с соответствием? В других языках ассоциативные массивы так и работают. |
|||
27
vvp91
23.05.19
✎
18:29
|
(24) Да, в справке написано именно так.
И обращение через [...] для присваивания - это нормально. Новое для меня и отличное от остальной платформы здесь только то, что для Соответствие, одновременно с присвоение происходит добавление этого элемента в соответствие. (25) Действительно не догадался - нигде в платформе такого поведения в коллекциях нет. (19) Ну да - непривычно. Но сокращает некоторый код, типичный для моих сценариев - проверить наличие, если нет или есть, то инициализировать. И еще несколько ускоряет работу кода - на больших данных заметно. |
|||
28
Сияющий в темноте
23.05.19
✎
18:51
|
создание массива в 1с при помощи функции СтрРазделить
|
|||
29
Вафель
23.05.19
✎
18:56
|
(28) только со строками, с числами уже нельзя
|
|||
30
Вафель
23.05.19
✎
18:56
|
(27) а зачем для соотвествия проверять?
вставить работает всегда |
|||
31
vvp91
23.05.19
✎
19:06
|
(30) Например, собственный индекс над таблицей значений, отклонение дублей по ключу индекса или специфическая обработка дублей. Или массовая пакетная обработка объектов с таб.частями, которые дозаполняются разрозненно и нет возможности вначале отсортировать поток данных табчастей по объектам.
Плюс примеры можно увидеть в партионном учете ЕРП, когда строятся цепочки обработки товаропотока. |
|||
32
PR
23.05.19
✎
19:45
|
(18) Он в споре ищет истину
|
|||
33
Cyberhawk
24.05.19
✎
07:49
|
(27) "сокращает ... код"
Карта["0001"] = Истина // одна строка Карта.Вставить("0001", Истина) // одна строка В чем сокращение? |
|||
34
Mikeware
24.05.19
✎
08:24
|
а чем плох синтаксический сахар?
чем плох ?() В конце концов, любые циклы - это минимум условие+переход. т.е. for/while/until тоже можно считать сахаром... |
|||
35
Mikeware
24.05.19
✎
08:26
|
(33) писать меньше. Если еще разделяется присваивание и проверка равенства - то нагляднее. Хотя - дело вкуса и соглашений о "хорошем коде"
|
|||
36
Cyberhawk
24.05.19
✎
08:33
|
(35) "писать меньше" // Но дольше: квадратная скобка вместо круглой )
|
|||
37
Сияющий в темноте
24.05.19
✎
08:33
|
Вообще,в 1с квадратные скобочки,это аналог оператора получить,но оператор получить lvalue не возвращает,а квадратная скобочка,оказывается,что да.
Для структуры же можно использовать Структура.Ключ просто,ключ в скобочки никто не пишет. |
|||
38
Cyberhawk
24.05.19
✎
08:42
|
(37) "ключ в скобочки никто не пишет" // https://a.d-cd.net/e8AAAgDQBOA-960.jpg
|
|||
39
ЗашелОставить Ответ
24.05.19
✎
08:43
|
(7), (12) - кажется это наглядная демонстрация
https://www.factroom.ru/facts/4763 ...И так, постепенно заменяя всех обезьян, вы придете к ситуации, когда в клетке окажутся 5 обезьян, которых водой вообще не поливали, но которые не позволят никому достать банан.... |
|||
40
Cyberhawk
24.05.19
✎
08:45
|
(39) Да из-за квадратных скобочек весь сыр-бор )
|
|||
41
Сияющий в темноте
24.05.19
✎
08:51
|
Когда,например,из VbScript обращаешься к 1с,то квадратных скобочек простр нет,а VbScript для массивов использует круглые.
Опять же,если у коллекции есть метод ПолучитьЭлементПоИндексу,то в реализации можно написать все,что угодно,как и вернуть. |
|||
42
djekting
24.05.19
✎
08:51
|
(14)ага кроме 1с больше не начем учетных систем нету.....знаешь на биржах деньги посерьезнее крутятся и на 1с там ничего не пишут...
тут все понятно как и в 1с
а тут с помощью LINQ:
Итак, код стал меньше и проще. В принципе все выражение можно было бы записать в одну строку: var selectedTeams = from t in teams where t.ToUpper().StartsWith("Б") orderby t select t. Но мы любим писать километры кода, якобы для читаемости...если человек не понимает код значит ему не хватает квалификации и работу он эту выполнять не должен. |
|||
43
Mikeware
24.05.19
✎
09:04
|
(42) "Программы пишутся для компьютера, но читаются людьми"© Д.ВанТассел.
не стоит уж сильно жертвовать читаемостью и понимаемостью. да, возможно ваш код будет читать (сопровождать/перерабатывать) разраб более низкой квалификации. Учитывайте и это. |
|||
44
dmpl
24.05.19
✎
09:40
|
(13) Все будет еще веселее, когда эти фичи будут глючить :) А разработчика нафиг пошлют, т.к. не документировано.
|
|||
45
Провинциальный 1сник
24.05.19
✎
09:45
|
(40) Именно так, у 1сников к квадратным скобочкам врожденная неприязнь, так как надо переключать раскладку)
|
|||
46
dmpl
24.05.19
✎
09:49
|
(45) Если писать на английском - раскладку можно не переключать :)
|
|||
47
dmpl
24.05.19
✎
09:58
|
(42) Обе конструкции можно записать в одну строку. Примерно одинаковой длины.
|
|||
48
Mikeware
24.05.19
✎
09:58
|
(46) в турбоконфе - с зажатым альтом без переключения языка работает. "треугольные скобки" ("больше"-"меньше") тоже...
|
|||
49
Hillsnake
24.05.19
✎
10:04
|
||||
50
icipher
24.05.19
✎
10:13
|
(42) на котлине
val teams = listOf("Бавария", "Боруссия", "Реал Мадрид", "Манчестер Сити", "ПСЖ", "Барселона").filter { it.capitalize().startsWith('Б') }.sorted() :) |
|||
51
PR
24.05.19
✎
10:55
|
(42) И к чему был этот мозговой высер, я не понял?
К тому, что типа на каких-то языках код короче, чем в 1С или что? И про что? Про примитивнейший пример с формированием списка значений по условию и его последующей сортировкой? Приведи такой же пример хотя бы что ли про создание документа Реализация товаров и услуг с заполнением табличной части Товары остатками на складе Тогда и поговорим про сравнение читабельности и объема кода на 1С и на прочих языках |
|||
52
playmaker
24.05.19
✎
12:02
|
(50) На Swift та же фигня))
let teams = ["Бавария", "Боруссия", "Реал Мадрид", "Манчестер Сити", "ПСЖ", "Барселона"].filter {$0.hasPrefix("Б")} .sorted() В 1С давно мечтаю о таком написании: "НовыйДокумент.ВидОперации = .ПродажаКомиссия;" вместо "НовыйДокумент.ВидОперации = Перечисления.ВидыОперацийРеализацияТоваров.ПродажаКомиссия;" Т.к. что это за тип перечисления и так ясно исходя из типа значения реквизита "ВидОперации" данного документа. Ну и "н += 1" вместо "н = н + 1" тоже лишь упростит код, особенно когда названия переменной длинное. |
|||
53
Вафель
24.05.19
✎
12:14
|
(42) и вместо того чтобы запрос правильный написать, сначала все выберем в коллекцию, а потом ее уже будем фиьтровать
|
|||
54
MM
24.05.19
✎
12:17
|
(53) Так похоже придётся объяснять, что такое ленивое выполнение в LINQ, и то, что LINQ запрос сам преобразуется в SQL с нужными отборами, когда обращается к БД.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |