Имя: Пароль:
1C
1С v8
Правила именования переменных
, ,
0 svsvsv
 
26.09.17
13:17
1. Без правил, как хочу, так и пишу 36% (4)
2. Без префиксов, по стандартам 1С (КамелКасе) 27% (3)
3. Префиксы по области видимости (п, л, м, гл, ...) 18% (2)
4. Префиксы по типу данных (сз, тз, м/мас, ...) 18% (2)
Всего мнений: 11

Коллеги, кто-то из вас придерживается стандартов разработки (в части оформления кода) с сайта ИТС?

И второй вопрос, если нужно добавить переменную в типовом модуле, ставите ли какие-то префиксы/постфиксы у таких переменных?

И третий вопрос, в наименованиях параметров собственных процедур и функций, используете ли префикс "п" (например, Функция ЧислоПростое(пЧисло) )?
1 Cyberhawk
 
26.09.17
13:19
3. Зачем префикс п у параметра?
2 Лефмихалыч
 
26.09.17
13:20
Моё бусидо:
1. всегда CamelCase
2. ИмяДолжноОтражатьСутьАНеТипДанныхИлиОбластьВидимости. Даже у параметров.
3. Ни каких сокращений
4. Ни каких префиксов
3 Лефмихалыч
 
26.09.17
13:20
в результате, правда, от чтения php-кода у меня кровь из глаз...
4 Волшебник
 
модератор
26.09.17
13:22
(2) Пишется "никаких"
5 Лефмихалыч
 
26.09.17
13:23
(4) тем более
6 Сияющий Асинхраль
 
26.09.17
13:26
(2) +100500 +(4) +100 :-)
7 Мэс33
 
26.09.17
13:27
(0) да не. Пишем под настроение.
Всякие там Перем ыыыы;
8 assasu
 
26.09.17
13:28
(0) для массивов я пишу мМойМассив. для структур стМояСтруктура, для таблиц тзМояТаблица
9 1dvd
 
26.09.17
13:28
(8) расстрелять
10 Лефмихалыч
 
26.09.17
13:29
(7) (8) если долго так код писать, то вместо пальцев писюны вырастут
11 Мэс33
 
26.09.17
13:29
(10) сколько лет для этого надо?
12 Лефмихалыч
 
26.09.17
13:30
(11) приглядись к ладошкам
13 Мэс33
 
26.09.17
13:30
(9) вы его не поняли просто.
Имелось ввиду: м<МоеНазваниеМассива>
14 бомболюк
 
26.09.17
13:31
пару раз заведете случайно локальную переменную с именем реквизита - сразу научитесь префиксы ставить.
15 Лефмихалыч
 
26.09.17
13:31
(13) прекрасно поняли
16 Мэс33
 
26.09.17
13:31
(12) посмотрел, в ладони где-то полторы штуки баксов. Что дальше?
17 assasu
 
26.09.17
13:31
(10) не замечал. бывают небольшие боли в пальцах.. разжимаю /сжимаю кулаки и все..
18 assasu
 
26.09.17
13:31
(13) конечно!
19 Мэс33
 
26.09.17
13:33
Мне нравится, когда одинэсниг творчески переменные называет. Код читаешь как интересную книгу.
20 v77
 
26.09.17
13:34
мМойМассив мМояСтруктура мМояТаблица

Роберт Рождественский
21 assasu
 
26.09.17
13:35
(19) я видел процедуру "ЧакНоррис". такое вот творчество
22 v77
 
26.09.17
13:35
(17) боли бывают небольшими только до появления геморроя
23 Мэс33
 
26.09.17
13:35
(20) мой компьютер, мои документы.
24 Мэс33
 
26.09.17
13:36
(22) да нет геморроя.
Что вы прямо.
Геморрой есть у того, кто придет после тебя))))
25 Cyberhawk
 
26.09.17
13:36
Что по поводу (1)?
26 _Дайвер_
 
26.09.17
13:37
(8) Вырви глаз
27 Wirtuozzz
 
26.09.17
13:37
28 yfylhjkjy
 
26.09.17
13:37
"как переменную назовешь.."
хоть матерными словами называй, все равно найдутся те, кому не понравится.
29 _Дайвер_
 
26.09.17
13:37
(2) + 100500
30 v77
 
26.09.17
13:38
(25)ну, как бы, чистой воды дебилизм
31 Мэс33
 
26.09.17
13:38
(25) в js встречаешь такое
myFunc(m_options) {}

Похоже по аналогии
32 Рэйв
 
26.09.17
13:39
я тоже стараюсь у сложных типов всегда ставить префиксы типа.
С каких это пор стало некошерным?
Когда концов не найдешь откуда ноги растут у переменной очень пользительная привычка.
33 Cyberhawk
 
26.09.17
13:39
(30) Вряд ли стремление к дебилизму объясняет желание ставить п перед параетрами. Скорее всего ты не понял вопрос...
34 v77
 
26.09.17
13:39
(31) так там не "p", а "m"
35 Лефмихалыч
 
26.09.17
13:40
(18) скорее - кончено
36 Denis_CFO
 
26.09.17
13:40
я на телевизоре на пятом канале часто вот такое встречаю: След.<НазваниеФункции>. Постоянно думаю, каких-только методов у Рогозиной нет.
37 v77
 
26.09.17
13:41
(33) ну понятно, что стремились не к дебилизму, а к красоте.
38 Мэс33
 
26.09.17
13:41
(34) не столь важно.
п - похоже от "переменная"
39 Лефмихалыч
 
26.09.17
13:42
(32) примерно с тех пор, как, кроме C паскаля появились еще какие-то языки.
Если так делать, то, когда понадобится (а такое бывает не редко) поменять тип, тебе нах весь код переписывать. Это - как минимум. Кроме того, это засоряет к херам текст, его становится невозможно читать.
40 Мэс33
 
26.09.17
13:42
(32) на руки давай посмотрим))))
41 Мэс33
 
26.09.17
13:44
(39) это странно, если вдруг тебе понадобится поменять тип у переменной "тзМояТаблицаЗначений" на что-то другое.
42 Лефмихалыч
 
26.09.17
13:44
(25) у которых писюны вместо пальцев, они часто называют параметры методов теми же именами, которые уже есть в данном скопе. Им приходится на эту проблему костыль навешивать.
43 Рэйв
 
26.09.17
13:44
(40) *Посмотрел.
Не нахожу ничего не предусмотренного природой:-)
44 assasu
 
26.09.17
13:44
(22)я хожу в спорт зал . и всем советую пару, тройку раз в недели
45 Рэйв
 
26.09.17
13:45
(41)Правила хорошего тона рекомендуют сделать новую переменную
46 Мэс33
 
26.09.17
13:46
(43) ну и хорошо. Зная твой многолетний опыт, боялся, что писюны идёт вдруг отросли ))))
47 Мэс33
 
26.09.17
13:46
Идёт => вдруг
48 Лефмихалыч
 
26.09.17
13:47
(41) вот этому коду можно на вход закинуть, как структуру, так и соответствие, так и массив со структурами и соответствиями, так и таблицу с колонками Ключ и Значение.
И бывает изначально рассчитывал на структуру, а потом - куяк - появился фрагмент кода, в котором надо третье поле или еще 10, а остальной код, как был, так и остался. Если у тебя тип - часть имени, тебе весь код менять, либо оставлять в коде на*балово для будущих поколений.


Для каждого КлючЗначение Из ОтветСервера Цикл
   А = КлючЗначение.Ключ;
   Б = КлючЗначение.Значение;
49 Лефмихалыч
 
26.09.17
13:48
(41) что странного ты находишь в развитии кода?
50 Сияющий Асинхраль
 
26.09.17
13:49
+(6) Хотя префикс тз частенько пишу, скорее по привычке, чем по надобности
52 Cyberhawk
 
26.09.17
13:50
(42) Так от таких совпадений никто не застрахован. Простой пример: сначала ты добавил в форму какой-нибудь контекстный метод, а потом 1С в эту форму добавила _реквизит_, совпадающий с твоим именем
53 Мэс33
 
26.09.17
13:50
(48) если переменная живёт внутри метода, поменять его раз плюнуть.
Во вторых, что за фраза "изначально рассчитывал на структуру".)) А потом "куяк"? Я так не хочу программировать)
54 Cyberhawk
 
26.09.17
13:50
+Я думаю, что (52) - ответ на (1)
55 Рэйв
 
26.09.17
13:51
(0)Поидее это только в парметры функции может прийти что угодно.Их префиксовать типом и правда смысла нет.
Но не могу представить ситуацию когда надо непременно в переменную мМойКлассныйМассив запихать структуру и никак без этого не прожить
56 Лефмихалыч
 
26.09.17
13:51
(52) меня не надо агитировать. Я тоже не понимаю, что помешает этим же ребятам реквизит формы назвать с первой буквой п.
57 Рэйв
 
26.09.17
13:51
(55) к (48)
58 Cyberhawk
 
26.09.17
13:52
(56) Так в типовых 1С вроде так ни разу не делалось
59 Ненавижу 1С
 
гуру
26.09.17
13:53
Возврат Запрос.Выполнить().Выгрузить()[0].СуммаВсего;
60 vicof
 
26.09.17
13:53
(2) Поддерживаю. +100500
Код становится самодокументируемым, и не нужно писать комментарии, объясняющие, что это за переменная и для чего нужна.
61 Мэс33
 
26.09.17
13:53
(55) там не тип, если речь о параметрах функции. Это префикс просто для того, чтобы дальше по коду было понятно, с чем работаешь.
62 Филиал-msk
 
26.09.17
13:53
(55) Например, когда ты внезапно обнаружил, что поиск по твоему чудо-массиву посему-то тормозит и решил переделать его на быстрое соответствие.
63 Cyberhawk
 
26.09.17
13:54
(59) А после первой ошибки обернуть в попытку и довольно закрыть конфигуратор)))
64 Лефмихалыч
 
26.09.17
13:54
(55) у меня 100500 раз такое было.
Ну и (48) - это лишь один из примеров, почему префиксы - это зло. Я еще называл читабельность. К читабельности вопросы есть?

Когда в коде префиксы, то его читаешь, как какие-то сотонинские заклинания на польском... Омерзительно и не понятно и, как результат, тратишь время не на образование контекста в голове, а на борьбу с орфографическими изысками...
65 Ненавижу 1С
 
гуру
26.09.17
13:55
(63) да, но нет
так писать можно, только если твой запрос гарантированно возвращает единственную строку выборки
66 Филиал-msk
 
26.09.17
13:56
(64) ... с синтаксическими ошибками, хехе

Если гл_тзОткаммандировныеСотр Тогда
67 Лефмихалыч
 
26.09.17
13:57
шл_тзСписДел
68 Мэс33
 
26.09.17
13:57
(64) читабельность не страдает.
Дело же привычки.
Но, к сожалению мне не приходилось работать с конфой где все написано по фэншую и по соглашению о коде.
Обычно несколько поколений прогеров уже налабали как могли)))
Так что глаз давно не дёргается.
69 vicof
 
26.09.17
14:00
(67) Не СписДел
70 GedKo
 
26.09.17
14:00
сокращенцам - особый котел.

для каждого тс из тз цикл
если тс.ос = 1 или тс.тк = 2 или тс.оз = 3 тогда
   тт = 1;
71 Филиал-msk
 
26.09.17
14:01
(69) Оооо да, отдельный котел уже сконфигурирован для любителей употреблять отрицание в идентификаторах

Если Не ФайлНеЗакрыт Тогда
72 Филиал-msk
 
26.09.17
14:04
(68) > Обычно несколько поколений прогеров уже налабали как могли)))

Но ты же ведь не такой, ты лучше, правда? (;
73 Мэс33
 
26.09.17
14:06
(72) конечно лучше (аххаха).
Что может быть лучше кода бывшего бухгалтера)))). Шучу.
74 Филиал-msk
 
26.09.17
14:07
(73) В 6.0 ЕМНИП все переменные должны были с П начинаться, кста
75 Мэс33
 
26.09.17
14:08
(74) 6ку я только краем глаза застал. Сбежал на 7ку).
76 _Дайвер_
 
26.09.17
14:08
(71) АХАХХАХ
77 _Дайвер_
 
26.09.17
14:12
(71) - на - дает +, это я специально для таких случаев себе заметку сделал))) Когда первый раз с таким столкнулся, впал в ступор xD
78 Мэс33
 
26.09.17
14:13
(71)
Если НЕ ФайлНеЗакрыт И ФайлНеОткрыт Тогда
79 Филиал-msk
 
26.09.17
14:14
(78) ИНАЧЕ ЛОЖЬ КОНЕЦ
80 _Дайвер_
 
26.09.17
14:15
Далекая ветка 2008 года
типовая Бухия 7.7

Функция РубКоп(Сумма)
   Руб=Цел(Сумма);
   Коп=ОКР(100*(Сумма-Руб),0,1);
   СуммаРубКоп=""+Руб+"руб."+Цел(Коп/10)+(Коп-10*Цел(Коп/10))+"коп.";
   Возврат СуммаРубКоп;
КонецФункции
81 Филиал-msk
 
26.09.17
14:18
Кстати иногда подобное и в организации интерфейса проскакивает, пользователи ж послабее закаленных кодеров будут-то. Когда используется чекбокс, действие которого что-то отключает или запрещает. Пользун вывихивает себе разум в попытке осознания ситуации что для того, чтобы что-то выключить, надо что-то включить.
82 Мэс33
 
26.09.17
14:28
(80) а теперь гуру 1Сникам вопрос - как бы вы этот кусок "сегодня" переписали? "По-правильному"?
83 Филиал-msk
 
26.09.17
14:29
(82) Да. Мы бы это кусок переписали сегодня по правильному.
84 _Дайвер_
 
26.09.17
14:31
(82) Я не гуру 1С, но сейчас механизмы есть много новых механизмов типа формат и т.д. Так что даже близко похожего не стало бы
85 drcrasher
 
26.09.17
14:38
(2) единственный вариант, который пройдет АПК. у меня боль и страдание, когда проверку заворачивает на не канонических переменных типа Стр
86 Филиал-msk
 
26.09.17
14:41
(85) АПК... будет помечена как особенность и все. Ты еще 1Сникам с Дмитровского шоссе запрети реквизиты называть как ДатаОкончания1, хехе
87 Мэс33
 
26.09.17
14:42
(83) (84) а никто и не предложит свой вариант.
Так и думал.
Даже уважаемый Лефмихалыч постесняется.
88 Лефмихалыч
 
26.09.17
14:44
(80) что... это за говно?
89 svsvsv
 
26.09.17
14:44
Функция ЧислоПростое(пЧисло). Здесь пЧисло - это типа "параметр"
Где-то была статья на каком-то сайте, в которой предлагали для параметров ставить префикс "п", для локальных переменных - префикс "л", для реквизитов формы - префикс "рф", для переменных модуля - префикс "м".
В типовых, кстати, у переменных модуля часто встречается префикс "м"

Но с префиксами код как-то не смотрится
90 bzs015
 
26.09.17
14:44
Какие-то буквы-дополнение  нужны если память шалит и не можешь понять философию программирования. Не забудь, что русский код имеет одновременно однозначный код в английском варианте. Код без всяких букв отлично работает. Пей гинкоум, если что-то забываешь.
91 Мэс33
 
26.09.17
14:46
(90) глицин тоже неплох
92 svsvsv
 
26.09.17
14:46
в (80) пробелов не хватает перед и после равно =)
93 svsvsv
 
26.09.17
14:46
и перед/после "+"
94 Мэс33
 
26.09.17
14:47
(88) не суть.
Важен вопрос - как этот код написали бы вы.
Как обозвали бы переменные, саму функцию.
Все по бусидо в (2).
95 drcrasher
 
26.09.17
14:47
(86) особенность это хорошо, но я всё равно не понимаю, почему нельзя в сообщениях пользователю использовать ё, ! и повелительное наклонение?
96 Fish
 
26.09.17
14:51
Сам префиксы в переменных не использую, но и не переживаю сильно, наткнувшись на них в чужом коде.
97 bzs015
 
26.09.17
14:56
Еще раз для непонятливых код 1С идет на русском от английского кода, а не наоборот. Что непонятно? Потому что английский язык считается лучшим в работе программ вообще. И вообще код 1С - это сборный от нескольких англоязычных языков программирования.
98 Fish
 
26.09.17
14:57
(97) "Потому что английский язык считается лучшим в работе программ вообще. " - Сам придумал? :)
99 Лефмихалыч
 
26.09.17
14:57
(94) ну, например

Функция СуммаДляПечати(Сумма)
   Рубли = Цел(Сумма);
   Копейки = ОКР(100*(Сумма-Рубли),0,1);
  
   КопейкиРазряд1 = Цел(Копейки/10);
   КопейкиРазряд0 = (Копейки-10*Цел(Копейки/10));
  
   Возврат СтрШаблон("%1Руб.%2%3коп.", Рубли, КопейкиРазряд1, КопейкиРазряд0);
КонецФункции
100 Cyberhawk
 
26.09.17
14:58
(89) Для параметров методов формы надо какой-то префикс, отличный от параметров это формы (для которых и предлагается "п"). Я для параметров форм и ее реквизитов в последнее время перешел на "п" и "рф", но вот с префиксами к параметрам методов пока не обжегся (а это вовсе не исключено)
101 aka AMIGO
 
26.09.17
14:59
Какие правила? Что-то я не помню, чтобы они были к наименованиям..

Как удобно и понятно - так и именую.
В последней обработке
ОснКомплект
ОснДокумент
ДругойКомплект
ДругойДокумент
Процедура ПеренестиВТаблицуКомплектации()
ТЗК (таблица значений)
Оно, конечно, можно назвать РезультирующийДокумент, но легко ошибиться при печати, и будет накапливаться досада.. К концу написания кода будет противно смотреть в модуль. Домой захочется. :)

Мой код, что хочу - то и делаю :)
Какие могут быть правила..
102 Cyberhawk
 
26.09.17
15:00
(101) Код после тебя достанется кому-то, потому и правила
103 bzs015
 
26.09.17
15:01
Вообще как-то здесь на форуме была тема стандарт языка 1С. Желательно его не нарушать, иначе после тебя твой код никто не сможет прочитать. Да и работать новый код будет только в твоей программе и только в одном месте.
104 Брудвар
 
26.09.17
15:03
(2) CamelCase  - правильно так: camelCase. Иначе получится какой-то одноэсовский КамелКасе

Мое правило: Писать по стардартам по которым написан редактируемый код.
Достаточно запомнить только одно правило, и все. Не надо изобретать велосипед.
105 Cyberhawk
 
26.09.17
15:05
(104) Так есть как с верхним первым регистром, так и с нижним
106 Филиал-msk
 
26.09.17
15:06
(87) Рефакторинг код платный, уж извини. Мы же жадные, ты не забыл?
107 Филиал-msk
 
26.09.17
15:08
(105) ты путаешь camelCase и PascalCase
108 Брудвар
 
26.09.17
15:09
(105) Если это имя класса или какой-то конструктор или фабрика, а не простая переменная, то другое дело.
109 Cyberhawk
 
26.09.17
15:09
(107) Не путаю, это и есть два варианта CamelCase
110 Мэс33
 
26.09.17
15:10
(99) спасибо.
Код кстати стал читабельнее и понятнее.
111 Брудвар
 
26.09.17
15:10
(107) Точняк. Вчера только на Паскале печатал. Прикольно было.
112 aka AMIGO
 
26.09.17
15:11
Писать переменные на английском , в порядке лизания в одно место известно кого, не буду ни в жисть! :)
Для меня это - не проблема, но не буду принципиально.
Дешевые понты.
113 Филиал-msk
 
26.09.17
15:12
(112) Ъ (;
114 bzs015
 
26.09.17
15:13
https://thequestion.ru/questions/111989/pochemu-bolshinstvo-yazykov-programmirovaniya-na-angliiskom-yazyke взгляд на языки программирования с позиции английского языка, как языка семантики и языка международного общения.
115 Брудвар
 
26.09.17
15:13
(112) Если от лизания известно кого тебя отделяют только лишь переменные на английском, то конечно лучше не рискуй!
116 Мэс33
 
26.09.17
15:15
(112) ой мля )
117 Филиал-msk
 
26.09.17
15:15
(114) Англичанам, кста, хуже. У них язык победнее, все буквально читать приходится.

удалить хМояРучка;
118 aka AMIGO
 
26.09.17
15:16
:)) давайте, давайте :)
119 Брудвар
 
26.09.17
15:16
(114) Согласен. Особенно бесит слово КонецЦикла. Какой балбес это придумал?
120 Мэс33
 
26.09.17
15:17
(117) удалить() - звучит на русском не очень, особенность языка,
а инфинитив в английском звучит нормально delete()
121 Fish
 
26.09.17
15:17
(112) Что будешь делать с WebЦвета? :))
122 Мэс33
 
26.09.17
15:18
(121) :0)) ахахаха
123 aka AMIGO
 
26.09.17
15:18
(117) но код получается короче :)
Del xMyHand - 11 символов
удалить хМояРучка - 17 символов, в 1.5 раза длиннее :)
124 aka AMIGO
 
26.09.17
15:19
(121) Напишу WebColors :)
125 _Дайвер_
 
26.09.17
15:19
(121) + xD
126 Филиал-msk
 
26.09.17
15:20
(123) Классика ж
https://habrahabr.ru/post/41561/
127 aka AMIGO
 
26.09.17
15:21
(126) Забавно :)
128 Брудвар
 
26.09.17
15:22
(123) при чем здесь hand?
del myPen покороче будет.
Хотя на русском даже не понятно что за ручка.
129 aka AMIGO
 
26.09.17
15:24
(128) Ну, да - ручка с чернилами, ручка ребенка и ручка у чайника :)
130 Филиал-msk
 
26.09.17
15:24
(128) потому что хендл (;

Вот так всегда, берутся именовать сущности а слов не хватает. И начинается... глсзтз
131 _Дайвер_
 
26.09.17
15:27
(130) В русском языке такой проблемы нету)
132 aka AMIGO
 
26.09.17
15:27
"глсзтз" не придумать мне ни в жисть! Именую, чтобы было мне понятно.
Хотя..
глСЗ - я б поименовал глобальную в ГМ. Было бы понятно, что это есть и где оно
133 bzs015
 
26.09.17
15:30
Что интересно в русских языках программирования, это то, что они все имеют синхронный однозначный английский перевод, если их открыть и на них посмотреть. https://ru.wikipedia.org/wiki/Языки_программирования_с_ключевыми_словами_не_на_английском Сравним еще сколько языков написано на русском и сколько на английском, сколько языков базовых (низкого уровня) написано на английском. Сколько Операционных систем написано русских и сколько написано английских?
134 aka AMIGO
 
26.09.17
15:31
+132 мне в наследство (с 2002 года, кажись) достались глобальные Рубли
Что-ж.. правильно названа переменная, применяю.
Есть:
Перем глКатПечФорм;.. ну и Бог с ней, её и пишу, где надо. И не меняю её типа глКаталогПечатныхФорм, ибо на проверку - фигня.
135 Филиал-msk
 
26.09.17
15:35
(133) Сперва добейся? ))))))))))
136 bzs015
 
26.09.17
15:36
(135) Это точно
137 Филиал-msk
 
26.09.17
15:37
(136) Что точно?
138 Fish
 
26.09.17
15:37
(133) Успокойся уже. Все программы и все ОС работают в машинных кодах. И им пофиг, от слова совсем, с какого языка их преобразовал компилятор.
139 aka AMIGO
 
26.09.17
15:37
+134 с того же времени есть

Процедура ЗаисьВСправочник(Конт) Экспорт

Именно "Заись".
Поскольку применена во многих местах, плюс к тому, рулит опенконф - имя это не трогаю.
141 aka AMIGO
 
26.09.17
15:42
+139  могу поменять везде в конфе на RecToRef, угодив тем самым авторам известных постов в ветке :)
142 Филиал-msk
 
26.09.17
15:43
В восьмерке выгодно писать правильно и давать реквизитам вменяемые имена. Потому что ЗаполнитьЗначенияСвойств.
143 aka AMIGO
 
26.09.17
15:44
(142) Во, это уже традиция. В 7-ке - было вольное именование.
146 Филиал-msk
 
26.09.17
15:47
(141) Тогда уж BuniToRec (:
147 Филиал-msk
 
26.09.17
15:47
(144) Кто и как мешает тебе размножаться? Это важно! Подробости!
148 Брудвар
 
26.09.17
15:48
(144) Не важно сколько русских, важно сколько россиян.
149 bzs015
 
26.09.17
15:49
Проблема неразрешаемая или, как говорят суперзадача.
150 Sserj
 
26.09.17
15:58
(114) Детские понты.
Человек не живущий в англоязычной среде всегда будет заведомо проигрывать в произовдительности. Потому что приходится тратить часть ресурсов мозга на переводы туда-обратно.
151 Филиал-msk
 
26.09.17
15:59
(150) Программист?
155 aka AMIGO
 
модератор
26.09.17
16:02
Не отклоняйтесь от темы. Иначе ветка будет закрыта.
156 aka AMIGO
 
26.09.17
16:05
(150) "Проигрывать в производительности" - это-то ладно.. Вот уставать он будет, и совершать ошибки - это посерьёзнее пунктик.
157 Fish
 
26.09.17
16:10
(150) А зачем переводить туда-сюда? Для того, чтобы писать программы на том же Паскале или Си знание английского совершенно не нужно, как и дословный перевод операторов совершенно ни к чему не нужен. Достаточно знать, что и как работает.
158 aka AMIGO
 
26.09.17
16:12
(157) Это если прогер имеет уже достаточный опыт, тогда всё получается автоматом.
Сомневаюсь чуток, что в 1С будет такой опыт :)
159 _Дайвер_
 
26.09.17
16:21
(158) Ну в 1С приходит понимание программирования, язык то объектно ориентированный. Переменные, процедуры, функции, циклы и прочее уже знаешь, подтянуть английский это уже другое
160 aka AMIGO
 
26.09.17
16:26
В 1С еще хорошо, что прогер не ограничен размером памяти, и прочих показателей.
В 1969-1973 г.г. я работал на первых советских ЭВМ, в частности, МИР-1 и МИР-2. Память не помню уж, какая, но прожка едва входила, чтобы выполняться. Иногда увлекался и хвост кода обрезался.. и сообщений об этом не поступало! Вот засада-то была .. И проверить было трудно.
У меня с тех пор остался пожелтевший листок с кодом, я считал контура для р/приемника - входные и гетеродинные.
Приведу фрагмент кода. Это цикл такой :)
"ДЛ" Ы=1 "Ш" 1 "ПО" 1020 "ВЫП" ЧВИТ=ЧКАН*0,5... ну и т.д. :)
ЧВИТ - число витков, ЧКАН - частота канала
Сокращал всё, что можно..
Вот с тех пор я и слепляю инфу в имени переменной :) 47 лет уж миновало, а мурашки по коже до сих пор :)
Особенно, когда считать приходилось сход ракеты со стапеля, вот тут был мандраж.. непередаваемый..
161 aka AMIGO
 
26.09.17
16:30
+ так что ТЗЗ и ТЗтмп - мои самые популярные имена :)
162 Sserj
 
26.09.17
16:31
(157) А что сегодня пишут на Паскале или Си с использованием только операторов???
Если хелловорд вывести то оно конечно может и хватит, да и то стандартные библиотеки вроде как нужны.
А все современные фреймворки и библиотеки сейчас такие классы и методы имеют, что местный ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент не таким уж и мутным выглядит :)
163 Филиал-msk
 
26.09.17
16:35
Здесь, кстати, ещё и влияние предметной области есть. Ну-ка, фанатики английского, как правильно написать СальдоДебетовоеНаКонецПериода, а? (:
164 aka AMIGO
 
26.09.17
16:37
(163) Да ну его.. SDebKonPer - и достаточно :)
165 drcrasher
 
26.09.17
16:38
(164) тогда уж SDebEndPer
166 Филиал-msk
 
26.09.17
16:38
(164) И NachPer, ага
167 aka AMIGO
 
26.09.17
16:41
(165) (166) А что, нормально-ж :)

Скользнул глазами по постам, что-то не нашел ссылки на необходимость писать код 1С на английском..
Или невнимателен. Для эуропэйцев кодируют единицы.. ну, от силы сотня прогеров 1С, и это - всё..
168 infosoft-v
 
26.09.17
16:48
(0) доработали стандарт коллег из (CROC Inc) и теперь придерживаемся его при групповой разработке https://github.com/infosoft-v/1c-styleguide

Там все в полном объеме и префиксы и именование констант и логирование ошибок.
169 Филиал-msk
 
26.09.17
16:48
(167) Тут европейцы даже не при чем. Ещё меньшее число людей пишет конфигурации с нуля, не дорабатывая типовые и не используя БСП и прочее БПО. А используя хоть что-то за основу автоматически получаешь в нагрузку "вариант встроенного языка" и т.п.
Вот и бесится народ - "а я, да мы, да никто"... (:
170 aka AMIGO
 
26.09.17
16:53
(168) Интересно.. процентов 10-15 из рекомендаций, пожалуй, выполняю, остальное - как Бог на душу положит :)
ЗЫ. хорошая ссылка..
171 ildary
 
26.09.17
16:55
(170) особенно хорошо смотрится имя переменной бЭтоБрак
172 Филиал-msk
 
26.09.17
16:55
(168) То есть вы каждый раз переименовываете параметры в автоматически создаваемых платформой обработчиках? Бедненькие...
173 Филиал-msk
 
26.09.17
16:56
(170) Там процентов 90 - стандарты разработки самой 1С с ИТС
174 Klesk
 
26.09.17
16:58
(0) для фикси, не вижу особого смысла в собственных префиксах, так как в основном приходиться править типовой код, возможно документировать в этом случае лучший вариант, но лень, и мне пофиг на тех кто будет после меня, а я разберусь
175 mxs089
 
26.09.17
17:05
ЭлементКоллекцииПроизвольныйИзТаблицыЗначения

я так объявляю переменную для итератора

так для обхода строки табличной части

ЭлементКоллекцииСтрокаТабличнойЧастиИзТабличнойЧасти
176 mxs089
 
26.09.17
17:07
локальную переменную можно объявлять так

ЛокальнаяПеременнаяКонтрагентыМассив = Новый Массив;

и обязательно очистить в конце

ЛокальнаяПеременнаяКонтрагентыМассив = Неопределено;
177 Филиал-msk
 
26.09.17
17:10
(176) Очень жаль, что ты не используешь вспомогательное слово Ссылка! У тебя ведь массив ссылок, а не какой-то ерунды.
178 Numerus Mikhail
 
26.09.17
17:11
(175) Удобно? Мне кажется если добавить в конце ИмениБорисаНургалиева, то быстрее работать будет.

Переменные, хоть и должны называться осмысленно, не должны иметь длинных имен.
179 Cyberhawk
 
26.09.17
17:12
(176) Зачем в конце чистить, если оно само очистится?
180 Numerus Mikhail
 
26.09.17
17:13
(176) А Зачем очищать? Тут уже была куча споров на эту тему, но вроде как это необязательно.
181 mxs089
 
26.09.17
17:17
(179) (180) хочу все контролировать
182 Филиал-msk
 
26.09.17
17:20
(168) Кстати, сейчас заметил. Ваши стандарты сами себя не соблюдают. Например в части присвоения значения структуре...

// Хорошо:
ПараметрыПодключения = ПолучитьПараметрыПодключения()

...и предыдущего требования венгерской нотации для имени переменной той самой структуры.
И не надо, пожалуйста, отчаянно вешать на уши лапшу, что имеется в виду реквизит обьекта.
183 Филиал-msk
 
26.09.17
17:21
(178) ты не можешь написать фамилию без ошибок, неверный?
184 strrike
 
26.09.17
17:21
(178) оффтоп - а если добавить не НурГалиева, а Нуралиева, то вообще обгонит С.
185 Numerus Mikhail
 
26.09.17
17:23
(183) Честно сказать, я даже не знал как она пишется. По памяти писал. Ошибся, с кем не бывает :)
186 Филиал-msk
 
26.09.17
17:25
(185) Вот в имени ты даже не сомневался. Особенно, если вспомнить, что разработкой платформы (и значит влиянием на скорость) заведует Сергей (:
187 Cyberhawk
 
26.09.17
17:33
(182) Глаголы типа "Получить" в риведенном примере - не по стандарту :) Надо просто ПараметрыПодключения()
188 Cyberhawk
 
26.09.17
17:34
(185) Нургалиев это какой-то с ГИБДД связанный чел
189 Филиал-msk
 
26.09.17
17:36
(188) Эксминистр МВД, ЕМНИП. Это тот, "который разрешил"
190 Cyberhawk
 
26.09.17
17:42
(189) Чего разрешил?
191 Филиал-msk
 
26.09.17
17:44
(190) http://lurkmore.to/Нургалиев_разрешил
192 Numerus Mikhail
 
26.09.17
17:44
(190) Бить полицейских
193 Cyberhawk
 
26.09.17
17:45
(191) Спс)
194 Tateossian
 
26.09.17
17:56
(80)

РублиКопейки = Формат(Сумма, "ЧДЦ=") + "руб. " + Формат(Сумма*100, "ЧЦ=2; ЧДЦ=; ЧРД=") + "коп. ";
195 Tateossian
 
26.09.17
18:16
(194) Исправляюсь, так не будет работать, но будет работать вот так:

Коп = Сумма*100%100;

Руб = Сумма-(Сумма*100%100)/100;
196 trdm
 
26.09.17
18:31
1. Префиксы по области видимости.
Перем глГобальнаяПеременная;
2. Префиксы параметров функций и временных переменных.
Функция Фоо(псРаз, псДва)
   вСуммаРаДва = псРаз + псДва;
   Возврат вСуммаРаДва;
КонецФункции;

Да, я извращенец, но код так понятнее.
197 trdm
 
26.09.17
18:34
типа "вСуммаРаДва" в - временная
псРаз - пс - пас,передача.
198 Филиал-msk
 
26.09.17
18:52
(197) Как ты думаешь, что делает следующий фрагмент кода?

Процедура ПолучитьСуффиксныйМассив_(Ранг, След, Охват = 1) Экспорт
    
    Старший = След.ВГраница();
    К = Ранг.Количество();
    
    Пока Старший < Ранг.ВГраница() Цикл
        
        Змея = Новый Массив(Ранг.Количество(), 1);
        
        Для у = 0 По След.ВГраница() Цикл
            Для ж = 1 По След[у].ВГраница() Цикл
                
                ё = (Цел(След[у][ж]) - Охват + К) % К;
                х = Ранг[(ё + Охват) % К];
                Змея[Ранг[ё]].Добавить(ё + 0.1 * (Змея[Ранг[ё]][0] <> х));
                Змея[Ранг[ё]][0] = х
                
            КонецЦикла
        КонецЦикла;
        
        Старший = - 1;
        
        Для у = 0 По К - 1 Цикл
            Для ж = 1 По Змея[у].ВГраница() Цикл
                
                ё = Змея[у][ж];
                Старший = Старший + ё % 1 * 10;
                Ранг[ё] = Старший
                
            КонецЦикла
        КонецЦикла;

        Охват = Охват * 2;
        
        След = Змея
        
    КонецЦикла
    
КонецПроцедуры
199 vs84
 
26.09.17
19:08
(2) Святая истина!
1. всегда CamelCase
2. ИмяДолжноОтражатьСутьАНеТипДанныхИлиОбластьВидимости. Даже у параметров.
3. Ни каких сокращений
4. Ни каких префиксов

Здравый, неэгоистичный, компетентный разработчик 1С будет следовать этому, а не ставить под сомнение.
200 Филиал-msk
 
26.09.17
19:12
200 (:
201 youalex
 
26.09.17
22:19
(0) 1. Тип переменной пишу в имени, если только он сочетается с ее сутью и предназначением. Т.е., СтруктураПараметров, МассивПараметров, ТаблицаПараметров, но не  струкПараметры, массПараметры, тзПараметры. И, боже упаси, сПараметр, чПараметр. Иногда, влезая в чужое и некрасивое, чтобы все не лопатить, могу написать ПараметрЧислом, а "Параметр" - изменить на ПараметрДатой.

2. Область видимости. Зависит, как ни странно, от контекста. Внедряя чуждое (внешник), стараюсь ограничивать, и писать не Склад, а ЭтаФорма.Склад, или ЭтотОбъект.Склад. В именовании, соответсвенно, м/гл/п, и иногда л(локальная) - соблюдаю. Да, это режет глаза, но в итоге помогает избежать многих мин.
Печально, что в обработке нет нескольких модулей, печально, что обработку нельзя сделать исключительно локальной, т.е. чтобы она могла получать и воздействовать на глобальный контекст - только через какой-то предопределенный префикс(пространство имен)
202 youalex
 
26.09.17
22:26
(201) > соответственно
203 Брудвар
 
26.09.17
23:04
(201) Что за бездарные у тебя имена переменных?
ПараметрЧислом - вообще же не отражает сути. Ни одно из двух слов ничего полезного не значит. Это все равно что называть переменную МояПеременная.
Внутри ПараметрЧислом может храниться что угодно.
Лучше называть переменные по сути. Например вместо твоего ПараметрЧислом будет КоличествоВнуков или РастратыЗаПонедельник. Это же более понятно, согласись. И то что внутри число тоже понятно, хотя в названии нет этого слова.
204 Филиал-msk
 
26.09.17
23:18
(203) > называть переменную МояПеременная
Нет моя.
205 pavig
 
27.09.17
00:05
(0)
префиксы не использую (кроме см. ниже), и не люблю читать чужой код с префиксами.

НО
часто использую "тз" и "тек"

Например,
тзТовары = Товары.Выгрузить();
Для Каждого текСтрока Из тзТовары Цикл

или сокращения КЗ
Для Каждого КЗ Из [ИмяПеременнойТипаСтруктура]
206 youalex
 
27.09.17
00:43
(203) ты, видимо, не внимательно читаешь.
И тебе не приходилось ковырять код, где переменная Параметр (название условно)
по ходу выполнения (в ветках циклов и условий) - принимает то численные, то строковые значения, причем различающиеся по смыслу и предназначению.
Молод ты еще (с)
207 youalex
 
27.09.17
00:43
(206) >невнимательно
208 vis_tmp
 
27.09.17
06:33
(198)Циклы крутит )
209 igorPetrov
 
27.09.17
07:29
(206) И когда эта переменная принимает разные типы значений, ты её переименовываешь? Что за бред?
210 Лефмихалыч
 
27.09.17
09:23
(168) венгерская нотация - отстой времен палеолита. Ни чего не дает, только время отнимает и раздувает код. В особенности - для языков с не строгой типизацией.

Сильно веселящими получаются булевские переменные.
бЭтоБрак Читается, как "Б*%№дь! Это брак!"

Эти префиксы дают иллюзию самодокументируемости, нагружая при этом программистов бестолковой вознёй.
Вот, для примера соАдреса - ну, видишь ты, что это соответствие, и чего дальше-то? Соответствие чего чему? А хрен его разберет - читай 5 метров кода выше/ниже. Ни чего не документирует это имя. Да, я понимаю, что это только пример и в настоящем коде там было бы какое-то соАдресаЧоНибудьТамКОнкретноПонятного. Но только тогда на кой болт это "со" кому нужно?..
211 Филиал-msk
 
27.09.17
09:29
(210) На самом деле это прямое следствие того, что народ у нас не умеет и даже не хочет в сложные и эффективные структуры данных. Для него проще нашлепать 100500 простых переменных, запутаться в них, ввести "стандарты", объявить себя победителем, а фирму 1С - ничего не понимающими в жизни.
212 Филиал-msk
 
27.09.17
09:32
Кстати не разу ни видал, чтобы яростные поклонники венгерской нотации именовали, например, реквизиты в структуре со своими вывихами. Например соТовар.бЭтоБрак. Интересно, почему? (;
213 _Дайвер_
 
27.09.17
09:35
ТоварПоУмолчанию = Справочники.Номенклатура.НайтиПоКоду("0000001");
ПроцентАКласса = 80;
ТекущаяДата = ТекущаяДата();
Массив(такой то) = Новый Массив;
ТаблицаЗначений(чего то там) = Новый ТаблицаЗначений;
Структура(такая то) = Новый Структура;
Запрос = Новый Запрос;
В массивах, ТЗ, Структуре не больше 1 добавочного слова, что бы не получалось вроде такого ТаблицаЗначенийСистемыКомпоновкиДанныхДляОтчетаПоНоменклдатуре, в модуле объектов понятно что откуда берется, и для чего. Отладчик в помощь, а читать что-то пТовар, пПроцАКласс, М, сд, перЗамНачОт, нЭн и т.к. не очень понятно, даже я уверен что, тот кто это писал сам забудет, и будет отладчиком проходиться и смотреть что это за неведомая херня!?Непомню...
214 Филиал-msk
 
27.09.17
09:40
(208) Почти угадал (: Это часть весьма интересных математических расчетов, автор даже иногда на мисте бывает.

Вот скажи, как на твой взгляд это сопровождать и отлаживать?
215 _Дайвер_
 
27.09.17
09:40
Я понимаю когда сокращают общие объекты данных, ТабличнаяЧасть = ТЧ; ТаблицаЗначений = ТЗ, но когда свои придумывают, которые кроме тебя никто не знает это невоспитанность и эгоизм. Писать код надо для людей, а не для машины. Как кто-то там выражался)
216 _Дайвер_
 
27.09.17
09:45
(214) Рефакторинг) Переменные не имеют смысловой нагрузки вообще, ТС кода явно угарает так
217 Cyberhawk
 
27.09.17
09:59
(216) Ошибаешься: К = количество, змея = видимо по анлогии с игрой, когда она растет на единичку
218 Cyberhawk
 
27.09.17
09:59
*аналогии
219 Лефмихалыч
 
27.09.17
10:00
(214) сжечь
220 Лефмихалыч
 
27.09.17
10:01
(215) Robert "Uncle Bob" Martin в книге "Clean coder"
221 Лефмихалыч
 
27.09.17
10:02
или clean code - не помню. Толковая очень книжка, кстати. Не без идеалистических замашек, но толковая
222 Филиал-msk
 
27.09.17
10:04
(219) @ildarovich, к тоби пришли (:
223 Fedor-1971
 
27.09.17
10:06
(210) + со - как Соответствие, так и СообщениеПользователю и что имели в виду переменной соАдрес?
Я просто воспринимаю переменные как некое название, без смысла (по крайней мере при первоначальном анализе кода, потом ищу возможный смысл, если он есть). Если код достаточно большой, тогда наименование переменных очень желательно делать просто осмысленными и максимально краткими, например, текЗаказ вместо ТекущаяСтрокаСДаннымиЗаказаИзРезультатовВыборкиИнформацияОЗаказах
(т.е. текущая строка из выборки ИнформацияОЗаказах, а в ней данные о нечто под названием Заказ)
для отчётов имеет смысл переменные называть соответственно параметрам в ячейках

(214) и что там такого криминального, ну потратишь на анализ  кода не 5 минут, а целых 7 (вай: скандал, беда, пичаль) 95% из которых будешь вникать в алгоритм работы, а не в наименования переменных.
Вот когда этот код шибко умный "оптимизатор" запишет в 3-5 строк (так интерпретатор работает быстрее), вот тогда будет ВАЙ

По сути: в нормальном варианте вырабатывается локальное соглашение об оформлении кода, например, для конторы (или проекта), а глобальные стандарты используются для основы и только. Отступ = tab (или 2 пробела), = отделяется пробелами от переменных, параметры функцй пишутся через пробел после "," (например, функ(пар1, пар2, пар3)
224 _Дайвер_
 
27.09.17
10:08
(217) Понять то что к чему можно, но сколько ты времени потратишь на это? Помимо очевидного К есть еще У,Ж,Ё,К,Старший,Охват,След. Неужели трудно написать понятно?
225 Лефмихалыч
 
27.09.17
10:08
(222) не, этого можно оставить. А код - сжечь
226 Cyberhawk
 
27.09.17
10:09
(224) Это ты что-то юлишь :) Я лишь отвечал на твою фразу "Переменные не имеют смысловой нагрузки вообще", вроде показав, что какая-то нагрузка все-таки в них присутствует
227 Лефмихалыч
 
27.09.17
10:10
(223) тратить время - криминально. Его потому, что неоткуда взять дополнительного, чтобы восполнить потери. У человека нет ни чего ценнее времени.
228 _Дайвер_
 
27.09.17
10:12
(226) Она есть))) Но ее еще понять нужно)
229 Cyberhawk
 
27.09.17
10:13
(228) Не спорю, что для легкого/быстрого понимания кода другими автор кода не приложил усилий
230 _Дайвер_
 
27.09.17
10:20
(220) Да, мне её брат давал читать, я только не дочитал еще ее)
231 Fedor-1971
 
27.09.17
10:22
(227) Это да, но что быстрее проанализировать имеющееся (для С изучить библиотеки и без разницы как там внутри написан код) или написать своё (тут уж точно пустая трата времени)?

была история в "мохнатые" 90: где-то в районе 85 года на Basic кто-то наваял процедурку с модным наименованием переменных (длинные и красивые), группой в 15 человек студентов не смогли вкурить алгоритм работы две недели, за то переписали за 30 минут на С. Оказалось препод (гад, в реально горящем задании) нас решил научить логике "оцени что быстрее сделать своё при известных начальных данных и нужном результате или копать что-то готовое"

(229) он и сам не вспомнит через год - два
232 infosoft-v
 
27.09.17
10:49
(210) >> венгерская нотация - отстой времен палеолита. Ни чего не дает, только время отнимает и раздувает код. В особенности - для языков с не строгой типизацией. <<

Венгерская нотация особенно полезна для языков с нестрогой типизацией. Это защитный механизм от ошибок программиста.

Вы выбрали неплохой пример с соАдрес. Допустим, мы не используем префиксов и у нас есть переменная "Адрес" которая содержит соответствие. Программист, во время разработки может неверно предположить о типе этой переменной и сделать код нерабочим. Причем контроль синтаксиса будет проходить без проблем. Вот пример:

// неверно предположили о типе и добавили такой код
Адрес = "г. Вогоград, ул. Мира";

// этот код был написан ранее и он теперь нерабочий
Если Адрес.Количество() > 0 Тогда
    Город = Адрес.Получить("Город");
КонецЕсли;


Префикс типа "со" не позволит программисту допустить такую ошибку. Скорее всего он напишет так

Если ТипЗнч(соАдрес) = Тип("Соответствие") Тогда
    соАдрес.Вставить("Адрес", "г. Вогоград, ул. Мира");
Иначе
    // логирование ошибки
КонецЕсли;

Венгерская нотация и парадигма защитного программирования дают неплохие результаты.
233 Брудвар
 
27.09.17
10:51
(206) Если твои переменные меняют свой тип по ходу выполнения программы, значит ты плохой программист и называешь свои переменные не правильно.
234 Филиал-msk
 
27.09.17
10:55
(232) На вопрос в (212) ответьте, пожалуйста, мадьярофилы
235 Fedor-1971
 
27.09.17
11:16
(232) Шутник, что помешает присвоить строку в переменную с соответствием? название переменной? Если не было анализа алгоритма работы - то ни что, даже мысль не шелохнётся.
И таки да: соАдрес - это соответствие или сообщение пользователю привязанное к полю формы адрес?
236 Fedor-1971
 
27.09.17
11:27
(233) как использовать переменную (или как назвать оную) это личное дело программиста (может, даже культурных традиций программирования). Не забываем память конечная величина и туча переменных для иттераторов типа чПозицияМассива1 (2,3, и т.д.), которые потом остаются висеть до окончания выполнения функции (особенно большой) тупо её отъедают, а ещё интереснее, когда переменной что-то присваивается, но она больше не используется.
237 infosoft-v
 
27.09.17
11:37
(212) отвечаю на вопрос.

Ключи и поля коллекций именуем так же с использованием префиксов. Вот пример. Это описание функции. Параметр этой функции - таблица значений

// Функция - Получить обновленные статусы как ТЗ
//
// Параметры:
//  тзСтатусыДокументов     - ТаблицаЗначений - OUT. таблица статусов с полями:
//        * сИдЭДО - Строка - ИД ЭДО
//        * чСтатусДокумента - Число - статус документа
//        * чСтатусТранспортный - Число - статус транспортный
//
// Возвращаемое значение:
//  Булево - признак успешного выполнения
//
238 infosoft-v
 
27.09.17
11:39
(235) >> И таки да: соАдрес - это соответствие или сообщение пользователю привязанное к полю формы адрес? <<
Это соответствие, потому что так прописано в StyleGuide и разработчики команды придерживаются этого документа
239 Брудвар
 
27.09.17
11:43
(236) Программу в первую очередь надо писать для людей, и только во вторую очередь для машины. Это основное правило хорошего программиста.
Если ради экономии памяти занимаемой итераторами называть переменные непонятными именами - это очень непрофессионально.
Итератор занимает каплю дешевой памяти, а человек потом должен тратить дорогостоящее время чтобы разобраться в коде. Ты просто вредитель.
240 Филиал-msk
 
27.09.17
11:49
(237) Охотно верю. Вы всегда так и делаете. Прямо в своих стандартах, которого придерживаются ваши разработчики:


// Хорошо:
ПараметрыПодключения = ПолучитьПараметрыПодключения();
// Возвращаемое значение - структура:
//     URLСервиса         - Строка
//     ИмяПользователя    - Строка
//     ПарольПользователя - Строка
...

// Хорошо:
Если ОткрыватьОбъектПриИдентификаторе(ИдентификаторОбъекта) Тогда
    ПараметрыРасшифровки.Вставить("ОткрытьОбъект", Ложь);
        
    ЕстьПоказатель  = Ложь;
    ЕстьКорЗначение = Ложь;
    ЕстьСчет        = Истина;
    Счет            = Неопределено;
    ПервыйЭлемент   = Неопределено;
КонецЕсли;


Китайские танцы, простихосподи
241 Брудвар
 
27.09.17
11:50
(236) >> как использовать переменную (или как назвать оную) это личное дело программиста

Нужно искоренять такое мышление. У вас явно нет человека которые делает код ревью, но видно что он очень необходим.
242 Fedor-1971
 
27.09.17
11:51
(238) У Вас "Придерживаются", остальные "Может быть придерживаются", тут обсуждали общую концепцию

(237) если есть описание то зачем "ч" перед переменной, оно что-то изменит или добавит смысла? Я уже прочитал, что передано и с каким типом, не?

(239) имелось в виду использование одной переменной, названной  "иттератор" для всех циклов в блоке кода (или несколько, если есть вложенные циклы). Опять же есть ситуации когда иттераторы действительно нужны разные. Всё индивидуально в реализации каждого куска кода
243 Fedor-1971
 
27.09.17
12:03
(241) для масштабных, с чёткой документированностью, проектов (что-то типа стандартных библиотек алгоритмов) наименование переменных играет не критичную роль. Всё равно, программер пишет и код, и краткое описание перед функцией, и собственно (отдельно или по ходу) описываются не очевидные места алгоритма.

Ну посмотрел ревьютель на переменные, да названы красиво и по стандарту, а в алгоритме навёрнуто так, что и через неделю не разберёшь что сделали с кучей неявных преобразований и т.д.
В своё время очень боролись с вынесением кода в процедуры, т.к. это повышает вероятность ошибки. Логика простая: "Кто-то может передать не предусмотренные параметры, например, структуру вместо строки"
Так что, и компания стандартизации имён переменных придёт к своему какому-то логическому оптимуму. В общем случае его нет, в локальном есть. Примерно как "Бардак не поддаётся автоматизации, но некоторые его реализации можно автоматизировать"
244 Брудвар
 
27.09.17
12:04
(242) Я не против конкретно итераторов, это ты про них начал писать.
Я имею в виду вообще любые переменные. Использовать плохие имена ради экономии памяти - это плохо. А итераторы занимают вообще мало маста, даже думать не нужно о том сколько сэкономишь на них. Просто называй правильно, и все.
245 Филиал-msk
 
27.09.17
12:06
(243) >  боролись с вынесением кода в процедуры, т.к. это повышает вероятность ошибки.

Вы таки исполнили извечную мечту 1С и заставили программировать бухгалтеров?
246 Брудвар
 
27.09.17
12:08
(243) Если кажется что функция и ее параметры не понятны без описания перед ней - это первый звоночек говорящий что название функции не отражает ее сути или она перегружена функционалом. Описание конечно хорошо, но правильно когда и без него все понятно. Я стараюсь писать только такие функции.
А вообще, почитай о правилах хорошего программирования в интернете. Там будет много чего нового.
247 Брудвар
 
27.09.17
12:11
(243) >> "Кто-то может передать не предусмотренные параметры, например, структуру вместо строки"

Это проблема конкретно языка одинески. Ни компилятор не проверяет типы, ни конфигуратор не выдает ошибки что не правильный тип параметра. Не знаю почему до сих пор не навели порядок.
248 Fedor-1971
 
27.09.17
12:14
(244) Смысл сказанного мною с примером иттератора: надо использовать память с умом, и не объявлять лишних переменных где это возможно

(245) нет это было на американском проекте автоматических космических зондов (там кто-то из классиков программирования рулил проектом, уже не помню)

(246) читал, выработал для себя некий оптимум длина/смысл и использую его, можно назвать это почерком программирования

(247) Не только, даже С не сможет отловить ошибки в параметрах, если заявлена Структура (передали таки структуру, но не ту)
249 Сильф
 
27.09.17
12:16
(0) Да, да, нет.
250 Fedor-1971
 
27.09.17
12:18
(246) я привёл пример Больших проектов, там функция в 2 строчки обязательно документируется, что передали, что вернётся и особенности алгоритма.
Это используется дальше в системах построения хелпов и для автоматического построения документации. Вот тут большая роль превьюера и как там его.
251 Сильф
 
27.09.17
12:19
(0) + префикс ставлю у общих модулей, в которые выношу мною написанные процедуры.
252 Филиал-msk
 
27.09.17
12:21
(248) даже С не сможет отловить ошибки в параметрах, если заявлена Структура (передали таки структуру, но не ту)

typedef он для слабаков, да... Ах да, у вас же Космические Спутники, извините, пожалуйста!
253 Мэс33
 
27.09.17
12:28
(247) вот типизацию не надо тащить в 1С )
254 Fedor-1971
 
27.09.17
12:28
(252) Ого куда нас занесло, а начали то с Как обозвать переменную "стр" или "СтрокаВыборки"?
255 Мэс33
 
27.09.17
12:29
(254) труЪ программеры в ветке
256 Филиал-msk
 
27.09.17
12:34
(254) астоящие Фидошники Сабж е Меняют!
257 Филиал-msk
 
27.09.17
12:35
(253) Мадьярофилам не нравятся твои слова (:
258 youalex
 
27.09.17
12:38
(209) точнее будет сказать - не переименовываю, а создаю новую переменную, если в чужом коде, который ковыряю,  на одной переменной "сидит" несколько сущностей. Для того, чтобы распутать этот клубок.
259 Fedor-1971
 
27.09.17
12:42
(256) и как фидошники продемонстрируют глобальную/критичную разницу внутри одной функции между названиями переменных "стр" или "СтрокаВыборки"? Кроме как: "кодевьювер не пропустит", "не несёт смысловой нагрузки" и "не соответствует неким стандартам"?
260 Брудвар
 
27.09.17
12:44
Да пох короче, пишите как хотите. Не мне потом ваш код разгребать.
261 Филиал-msk
 
27.09.17
12:44
(259) Наличием внешнего, по отношению к функции контекста.
262 Филиал-msk
 
27.09.17
12:46
А дальше см (169), (211) и т. п...
263 Филиал-msk
 
27.09.17
12:46
(260) Слабак!
264 Брудвар
 
27.09.17
12:48
(259) "стр" или "СтрокаВыборки" - оба варианта плохие, не отражают суть содержимого, но показывают только тип переменной. Ты тип объявляешь чтоли?
265 Брудвар
 
27.09.17
12:48
(263) Я успокоился и вернулся
266 Мэс33
 
27.09.17
12:51
(264) а в таком варианте использование "стр"?

Для Каждого стр Из тзИмениБорисаТакогоТо Цикл
КонецЦикла
267 Fedor-1971
 
27.09.17
12:52
(264) блин, Для каждого стр из ВыборкаЗаказов цикл - глобальную разницу продемонстрируй? дальше я использую "стр" и остальной код вертится около него, чем это лучше/хуже "СтрокаВыборки"

(261) и как внешний контекст влияет на названия переменных внутри функции?
268 Филиал-msk
 
27.09.17
12:52
(267) > и как внешний контекст влияет на названия переменных внутри функции?

Внезапно и яростно, как...
269 Брудвар
 
27.09.17
12:54
(267) Хорош тупым прикидываться. Что в выборке? Заказы? Тогда:
Для каждого Заказ из ВыборкаЗаказов цикл

Так понятно?
270 Филиал-msk
 
27.09.17
12:54
Назови, например на досуге в модуле справочника переменную функции именем "Код". Потом расскажешь.
271 dezss
 
27.09.17
13:00
С точки зрения банальной эрудиции каждый индивидуум, критически мотивирующий абстракцию, не может игнорировать критерий утопического субъективизма, концертуально интерпретируя общепринятые дефанизирующие поляризаторы, поэтому консенсус достигнутый диалектической материальной классификацией всеобщих мотивации в парадогматических связях предикатов, решает проблему усовершенствования формирующих геотрансплантационных квазипузлистатов всех кинетических кореллирующих аспектов.

Так вот, это относится к написанию каждым своего кода, даже при наличии каких-то общих признаков.
272 dezss
 
27.09.17
13:01
(271) + а именование переменных непосредственно относится к написанию кода
273 Брудвар
 
27.09.17
13:02
(271) С этим нельзя несогласиться.
274 Fedor-1971
 
27.09.17
13:02
(269) о какой нервный, это плохо. "стр" я могу использовать в последовательных циклах
Для каждого стр из ВыборкаЗаказов цикл
КонецЦикла;
Для каждого стр из ВыборкаНакладных цикл
КонеЦикла;
без ущерба в понимании кода, но с экономией в плане используемой памяти

(270) Перем Код; так? всё нормально будет,
а вот Для каждого Код из ВыборкаЭлементов цикл - это уже конкретная засада
275 Брудвар
 
27.09.17
13:03
Оставляю вас. Мне пора годный код писать.
276 Брудвар
 
27.09.17
13:05
(274) Ты отпустишь меня или нет сегодня?

Пиши лучше
Для каждого стр из выборка цикл
КонецЦикла;
Для каждого стр из выборка цикл
КонеЦикла;

Выборка занимает больше памяти чем стр, сэкономишь больше памяти.
277 X Leshiy
 
27.09.17
13:05
(274) Какая голимая отмазка :)
278 Fedor-1971
 
27.09.17
13:08
(276) Ступай с Богом, твори на радость себе и людям.
(и меньше ориентируйся на стандарты и мнение других долбодятлов)

(277) Уважаемый, меня долго учили экономить память. Можешь считать это деформацией доставшейся в подарок от СССР
279 Филиал-msk
 
27.09.17
13:10
(278) > учили экономить память
и пользоваться записной книжкой, когда ее не хватает?
280 X Leshiy
 
27.09.17
13:10
(278) Лучше бы ума набрался :)
281 Fedor-1971
 
27.09.17
13:17
(279) нет учили создавать системы в ситуации чётких ограничений время/память (либо вычислить функцию за 0.001 сек, либо сэкономить память и вычислить оную за 0,5 сек)

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

(280) Могу предложить сделать то же самое.

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

За сим откланиваюсь, пойду заниматься делом.
282 romix
 
27.09.17
13:38
(2) Такие требования неадекватны (и их кстати нет у 1С) - т.к.

0) Сама 1С им не подчиняется (СтрНайти, СокрЛП). Смотрим синтакс-помощник ОткрытьФорму - там параметр П.

1) Имеете потенциальные пересечения с реквизитами (например, документа). Это трудноуловимая ошибка, которая может появиться в значительном объеме кода при добавлении в реквизитный состав очередных реквизитов.

Вопрос к 1С - почему не дали для реквизитов свой контекст. Проблема решается префиксами, увы и ах.
Префиксы тз, м, ст - несут полезную информацию, что за переменная, если по смыслу надо несколько одинаковых, и вообще.

2) Имеете потенциальные проблемы с копированием кода (движок 1с не обнуляет переменную цикла после цикла).

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

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

3) Имеете потенциальные проблемы со встроенными именами самого движка 1С. ОткрытьФорму с параметром П во встроенной справке - не случайна, т.к. использование CamelCase без сокращения приведет здесь к трудноуловимому сюрпризу.
283 dezss
 
27.09.17
14:09
(282) 3) к какому сюрпризу?
284 Филиал-msk
 
27.09.17
14:29
(283) Ромикс испугался неудачного пример в СП и привычно развел теорию заговора

(282)
ПараметрыОткрываемойФормы = Новый Структура("Ключ", Поставщик);
Форма = ПолучитьФорму("Справочник.Контрагенты.ФормаОбъекта", ПараметрыОткрываемойФормы);
Форма.Открыть();

Жги дальше.
285 romix
 
27.09.17
15:08
(284) Неудачный бы заменили на удачный. Что же не заменяют. Может быть, этот стиль - единственно понятный.

Имена Параметры и/или ПараметрыФормы зарезервированы 1С, типичный любитель стиля CamelCase их использует и (внезапно) получает трудноуловимую ошибку. Любитель префиксов - ошибки не получает, у него всё работает.

Это только один пример - но мало ли еще и других имен зарезервировано 1С.

ПараметрыОткрываемойФормы - причастный оборот. Причастия, деепричастия, страдательные причастия, пассивные глаголы, наречия - точно ли хороший стиль?
286 Филиал-msk
 
27.09.17
15:22
(285) > Причастия, деепричастия, страдательные причастия, пассивные глаголы, наречия - точно ли хороший стиль?

Эк тебя корежит с русского языка-то. Словарный запас маленький? Не можешь, слов для описания прикладных сущностей подобрать? Бедненький.
Тогда да. Бе и ме префиксы тебе помогут.
287 romix
 
27.09.17
15:25
(0) Префиксы п для параметров, на мой взгляд, абсолютно адекватны - пОбъект, пТекст, пКонтрагент

Тем самым, вы отстраиваетесь:

1) от встроенных имен 1С в данном контексте (Объект)

2) от реквизитов объекта, формы (Контрагент), в том числе и тех, которые в процессе разработки еще не добавили в реквизитный состав (но скоро добавят, и -внезапно - получат трудноуловимую ошибку).

3) от имен переменных, которые уже могут использоваться в процедуре или функции.
288 romix
 
27.09.17
15:33
(286) См. Стивен Кинг "Как писать книги".
Он очень критически относится к пассивным формам глагола и наречиям. "Открываемый" - пассивная форма.
289 svsvsv
 
27.09.17
15:48
Добавил голосовалку
290 Филиал-msk
 
27.09.17
15:53
(288) Тонко. Отличный намек на то, что конфигурации 1С должны захватывать, внушать страх и будоражить воображение. Спасибо за мнение столь именитого автора жанра!
291 romix
 
27.09.17
15:53
(286) >Бе и ме префиксы тебе помогут.

В контексте формы и объекта они необходимы - иначе будете все время ловить трудноуловимые пересечения имен.

В модулях менеджера или общих модулях префиксы не нужны, можно спокойно писать сразу под стандарт.

Типы встроенных коллекций (массив, структура, таблица значений) префиксами я бы выделял, поскольку это очевидно улучшает код.

Префиксы по типу данных (сз, тз, м/мас, ...)
292 Лефмихалыч
 
27.09.17
15:54
(232) если у нас есть есть переменная Адреса, которая содержит соответствие, то нам надо дать по жопе и выгнать наиух нас на улицу, ибо мы херовые программисты в этом случае и ни какие нотации нас не спасут, поскольку проблема не в буквах, а в том, что руки не тем концом к туловищу приаттачены.

Префикс "со" в данном случае ни чего не исправляет.
293 svsvsv
 
27.09.17
15:55
(287) +

Префиксы по области видимости (п, л, м, гл, ...)
294 Лефмихалыч
 
27.09.17
16:03
(287) если программист, не глядя на все эти пункты, пишет код, то стоит ли таком у программисту вообще ключи от конфигуратора выдавать?
Что доброго может написать в модуле объекта человек, который не интересуется контекстом этого объекта? Какой-нить вариант на тему "Халлоуврот" - разве что, - да и тот не взлетит
295 romix
 
27.09.17
16:03
+(291) В контексте формы и объекта. Но этого кода должно быть немного - основную массу кода лучше выносить подальше из контекста - во всякие модули менеджера, там эти префиксы не нужны (разве что, для новых переменных, потом рефакторить их по Ctrl+Alt+R "под стандарт").

Префиксы по области видимости (п, л, м, гл, ...)
296 romix
 
27.09.17
16:14
(294) Зачем создавать проблемы, которые потом потребуется решать за счет концентрации усилий разработчика.
297 X Leshiy
 
27.09.17
16:19
Запросы в циклах пишу как хочу!

Без правил, как хочу, так и пишу
298 xsnika
 
27.09.17
16:21
Да будет анархия!

Без правил, как хочу, так и пишу
299 X Leshiy
 
27.09.17
16:22
(297) Так, не знаю как ты, а я действительно пишу как хочу!

Гена = Новый ГенераторСлучайныхЧисел();
300 Филиал-msk
 
27.09.17
16:24
Триста
301 Лефмихалыч
 
27.09.17
16:29
(300) вот рифма так и прёть...
302 X Leshiy
 
27.09.17
16:30
(301) Триста - префикс тракториста! :)
303 romix
 
27.09.17
16:32
(292) А что не так с переменной Адрес - какому пункту правил 1С она не соответствует?
https://its.1c.ru/db/v8std#content:2149184103:hdoc

Добавление новых переменных в код должно идти с префиксом:

сАдрес, стрАдрес, пАдрес, лАдрес

Потом рефакторить (Ctrl+Alt+R). В контексте формы и объекта требуется оставлять так - по крайней мере, на текущей реализации движка 1С - иначе будет много проблем с пересечениями.

Таково мое мнение - думаю, что в этом отношении поменяются либо правила 1С (интересно, кто их писал - разработчики ли), либо изменят движок, чтобы разграничить контексты имен.
304 Филиал-msk
 
27.09.17
16:46
(301)
Да тут все давно уже ясно и прозрачно... Корни-то у "проблемы" растут из того, что 99.9(9)% "разработчиков"
не разрабатывают свое а допиливают существующее за старшими товарищами. Как со времен студенчества во франчайзи пошло, так и продолжатся, отчаянная боязнь "как бы что не того".

А при нормальной разработке внезпно оказыватся, что все делится на функциональные блоки и процессы, которые сосредотачиваются на одном-двух человеках, которые и про реквизиты объектов в курсе и предопределенные  идентификаторы 1С знает, и общую технологию библиотек понимает, да и вообще понимает что его конфигурация автоматизирует в целом.

И не мешает ему это ни-че-го.

Но таких мало.

И раздается по округе... А мы! Мы тоже можем! Венгерская нотация! Авторские комментарии! Иванов Иван Иванович, 1 апреля, 44 размер ноги! Фирма 1С поменяет свои правила! Изменят движок! Гитхаб! Подвернутые носки!

Тьфу.
305 romix
 
27.09.17
16:48
Пишу без правил (но единообразно) переменные цикла-выборки и структуры-параметры.

Длинные имена смотрятся не эстетично и заполняют ширину экрана (когда их много).

Имена типа ВыборкаДетальныеЗаписи - подойдут любителям печатать (и читать) много букв.

Без правил, как хочу, так и пишу
306 Филиал-msk
 
27.09.17
16:50
(305) Тяжело выбрать из (291) (295) и (305) что-нибудь одно, да?
307 Господин ПЖ
 
27.09.17
16:51
пишу (1 + 2)

ибо нужно отделять локальные переменные и увы нет жесткой типизации

стандарты 1с в этом аспекте крайне странные - их отказ от венгерской нотации уже несколько раз выходил граблями по спине. банально в коде обработки есть Пользователи = блабла. А в новой типовой есть общий модуль Пользователи - улыбаемся и машем
308 ildary
 
27.09.17
16:54
(307) а еще было Пользователь->глПользователь->ТекущийПользователь->Пользователи.АвторизованныйПользователь()
309 Лефмихалыч
 
27.09.17
17:00
только заметил голосовалку.
обосновываю свой выбор в (2)


(307) ну, такое иногда бывает, да. Но префиксы от этого - это как презерватив из бересты. Может и надежно, но ощущения не те

Без префиксов, по стандартам 1С (КамелКасе)
310 dezss
 
27.09.17
17:00
(288) да-да...а он что, на русском пишет?
311 Филиал-msk
 
27.09.17
17:02
Если пристально посмотреть на типовые, то окажется, что 1с внутри себя использует суффиксы. ОбщегоНазначенияБПО, вот это все.

Но это надо смотреть и думать. А мы не такие! Венгерская нотация! А вот Я пишу!
312 drcrasher
 
27.09.17
17:05
в данный момент деваться некуда, у меня отраслевая конфа, приходится соблюдать стандарты. но чем дольше я их соблюдаю, тем они кажутся логичнее. и это не только про переменные и прочие наименования, но и про структурирование.

Без префиксов, по стандартам 1С (КамелКасе)
313 dezss
 
27.09.17
17:06
Забыл проголосовать.

Без префиксов, по стандартам 1С (КамелКасе)
314 Лефмихалыч
 
27.09.17
17:08
(282) ты странненький.
1. Где в моем посте ты нашел что-то про фирму 1С?
2. Которые код копируют, у тех тоже писюны вместо пальцев. Когда копируешь код, имеешь потенциальные проблемы безотносительно к именованию чего-либо. Так просто нельзя делать.
Имена переменных циклов для каждого - всегда осмысленные. Для циклов со счетчиком я иногда допускаю СчЦ и Сч. Редко. Ибо не люблю циклы со счетчиком.
3. Не имею я таких проблем. Возможно я что-то делаю не так, но вот - не имею.
315 Fish
 
27.09.17
17:14
(314) Блин. Тебя почитаешь, стрёмно за руку с коллегами здороваться :))
316 Лефмихалыч
 
27.09.17
17:15
(315) ну, или не читай, или не здоровайся. Выбор за тобой :)
317 romix
 
27.09.17
17:20
(309) Каким именно ощущениям мешают префиксы?
Рациональной причиной может быть перевод на другой язык по словарику, но словарик можно и дополнить типовыми префиксами.

(314) 2. Этого требования не существует. Кто должен это требование угадывать, и на каком основании? Все без исключения копируют код, если же движок 1С отрабатывает это неадекватно - то это неадекватный движок.

Осмысленные переменные цикла = говнокод. В самих же стандартах сказано, что они могут быть однобуквенными (пункт 4).
https://its.1c.ru/db/v8std#content:2149184103:hdoc
318 X Leshiy
 
27.09.17
17:22
(317) прЕфиксыВыглядаятНеКрасиво!
319 Филиал-msk
 
27.09.17
17:23
(317) И снова тоненькая такая подмена...Ты слова "могут" и "должны" различаешь, турист?
320 Филиал-msk
 
27.09.17
17:24
(318) Кстати от цветовой схемы зависимость интересная может быть
321 X Leshiy
 
27.09.17
17:25
Кстати, ссылочные типы именовать: КонтрагентСсылка, КонтрагентОбъект кошерно?
322 Филиал-msk
 
27.09.17
17:26
(321) Типы-то у 1С как раз с разделителем - СправочникСсылка.Контрагенты. Или ты про переменные типа "тип"
323 Филиал-msk
 
27.09.17
17:26
?
324 Лефмихалыч
 
27.09.17
17:27
(317) общего языка мы здесь не найдем. По префиксам я уже всё сказал в (210). Они засоряют код и дают иллюзию самодокументируемости. Реально человеку, который будет читать твой говнокод с префиксами после тебя, плевать, что там за типы, ему будет важен будет смысл хранящихся там значений.
325 X Leshiy
 
27.09.17
17:27
(322) Например

Для Каждого КонтрагентСсылка Из КонтрагентыВыборка Цикл
  
   КонтрагентОбъект = КонтрагентСсылка.ПолучитьОбъект();

КонецЦикла;
326 Лефмихалыч
 
27.09.17
17:28
(321) в коде, где ты создаешь объекты, это допустимо - так легче понять, что в базу пишет, а что только читает.
Мое ИМХО.
327 Филиал-msk
 
27.09.17
17:30
(325) В общем случае 1С рекомендует избавляться от "незначащих" слов, то есть "Ссылка" тут "по умолчанию" лишнее. Контекст использования обычно решает.
328 Филиал-msk
 
27.09.17
17:30
(326) Вот да, хороший пример контекста
329 Лефмихалыч
 
27.09.17
17:30
(325) КонтрагентыВыборка в данном случае - наигралово. Это не выборка. Так делать не кошерно ни фига.
330 X Leshiy
 
27.09.17
17:31
(326) Ну я потому так и пишу :)

И если изменяешь тоже, объекты.

Мое ИМХО.

(329) Да я как пример написал :)
331 Лефмихалыч
 
27.09.17
17:31
(327) да вот в данном случае-то как раз имеет смысл слово Ссылка. Если код в цикле больше 10 строк, то легко потом спутать, который из контрагентов для записи, а который для чтения, нужно постоянно прыгать по коду глазами.
332 X Leshiy
 
27.09.17
17:33
(327) Ага, а потом попробуешь КонтрагентКакойТо.Записать(), а он ссылочный :)
333 Филиал-msk
 
27.09.17
17:33
(331) Неа. Имеет смысл "Объект". Там по дальнешему напихиванию данных станет понятно, что идет подготовка элемента справочника и записи. А то, откуда ты этот объект достал - уже не важно
334 Господин ПЖ
 
27.09.17
17:34
(317) >Осмысленные переменные цикла = г.внокод.

они тогда и жить должны как в нормальных языках - в пределах цикла
335 X Leshiy
 
27.09.17
17:35
(333) Да блин! :)

КонтрагентОбъект = Выборка.КонтрагентСсылка.ПолучитьОбъект();

Полегчало? :))))
336 Филиал-msk
 
27.09.17
17:36
КонтрагентОбъект = Выборка.Контрагент.ПолучитьОбъект();

Теперь да (:
337 Лефмихалыч
 
27.09.17
17:36
(333) да, согласен
338 X Leshiy
 
27.09.17
17:37
(337) см. (335)
339 Филиал-msk
 
27.09.17
17:39
(334)

int i = 10;
while (i > 0) {
    if (check() == 0) {
      i = -1;
      break;
    }
    i--;
}

if (i==0) {
   ...
}

Да ну, ненормальный язык какой-то
340 romix
 
27.09.17
17:47
(318) Ага.

341 ejikbeznojek
 
27.09.17
17:54
Папа=ТекНоменклатура.родитель;
Дедушка=Папа.родитель;
Прадедушка=Дедушка.родитель;
342 X Leshiy
 
27.09.17
17:56
(341) Сука=НаписавшийТакойКод;
343 ejikbeznojek
 
27.09.17
18:00
(342) Там ещё внучки, жучки и репки есть)))
344 Господин ПЖ
 
27.09.17
18:01
(339) для танкистов - ты счетчик создал за пределами цикла. что сказать то хотел?
345 Филиал-msk
 
27.09.17
18:15
(344) Это все еще счетчик цикла или для тебя уже "переменная, определенная..." ?
346 romix
 
27.09.17
18:27
(345) Сама тема здесь:
Исчерпанная переменная цикла
347 Филиал-msk
 
27.09.17
18:29
348 Господин ПЖ
 
27.09.17
18:39
(347) вот-вот. посмотри... откроешь много нового
349 dezss
 
28.09.17
10:07
и все?
всего на 4 странички вайна?
Да и тема постфиксов почти не раскрыта.
350 Господин ПЖ
 
28.09.17
10:08
постфиксы это совсем глупо
351 Лефмихалыч
 
28.09.17
10:10
(350) хорошая попытка
352 Мэс33
 
28.09.17
10:10
Пишу как хочу. Обычно проекты на 1С долго не живут, все равно "все перепишут" )))

Без правил, как хочу, так и пишу
353 Лефмихалыч
 
28.09.17
10:11
(352) не живут, если писать вот так (7)
354 Мэс33
 
28.09.17
10:13
(353) так и пишем.Везде, оставляя тонны какашек за собой.
355 dezss
 
28.09.17
10:14
(354) Франч?)))
(350) перед "это" тире надо бы поставить.
А почему глупо?
356 ildary
 
28.09.17
10:15
(354) Писать надо так, как будто код будет читать маньяк, знающий твой домашний адрес.
357 Мэс33
 
28.09.17
10:15
(355) вольнонаемный ))). 1С - как хобби. Основная работа на другом стеке технологий.
358 Мэс33
 
28.09.17
10:16
(356) адрес не оставляю )).
359 ildary
 
28.09.17
10:17
(358) мы все равно до тебя доберемся (натачивая топор)
360 Мэс33
 
28.09.17
10:18
(359) все равно не буду переписывать ))).

Работает же?
361 Филиал-msk
 
28.09.17
10:18
(358) Это уже не требуется, Болатбек Жумабаевич (:
362 Мэс33
 
28.09.17
10:19
(361) это я никогда не прятал ).
Без проблем.
363 Мэс33
 
28.09.17
10:28
На своей памяти нигде не встречал, чтобы франч (сталкивался как минимум с 4мя) соблюдал какое-нибудь соглашение о коде и писал одинаково.
Ко мне в компанию могли прийти несколько разных прогеров из одного и того же франча и писать совершенно по-разному.
364 dezss
 
28.09.17
10:29
(363) потому и спросил, не франч ли ты)))
365 Мэс33
 
28.09.17
10:31
(364) не, я чаще бывал на стороне заказчиков.
Во франче на 7.7 работал лет где-то 13 назад.
На 1С я сам редко пишу. Только если очень просят что-то доработать.
366 Филиал-msk
 
28.09.17
10:31
(363) Уточню (356):
... код твоих разработчиков будет читать маньяк, знающий адрес твоей фирмы (:
367 Мэс33
 
28.09.17
10:33
(366) у нас таких маньяков просто...просто нет.
Крутые 1Сники сидят тихонько в теплых местах и пилят годами нетленку.
Во-вторых, очень часто даже если видишь написанную какашку, то вряд ли пойдешь искать автора ))), а просто для заказчика увеличишь цену на "ну надо разобраться, что тут налабали".
368 romix
 
28.09.17
13:27
(210) >венгерская нотация - отстой времен палеолита. Ни чего не дает, только время отнимает и раздувает код. В особенности - для языков с не строгой типизацией.

1) Дает отстройку от имен 1С и реквизитов (платформа, общие модули), реквизитов объекта и формы (их имена пишутся по стандарту). В том числе, и еще не добавленных.

2) Ускоряет ввод длинных имен через автозавершение (скажем, Контрагенты и тзКонтрагенты - в последнем случае набираете тзк и имеете либо совпадение, либо короткий список выбора).

Другая альтернатива - перечислять в Перем - но тогда было бы логично требовать обязательности этого перечисления. Либо как у Go - инициализирующее присваивание.

>Сильно веселящими получаются булевские переменные.
бЭтоБрак Читается, как "Б*%№дь! Это брак!"

Можно префикс а - аЭтоБрак (кто такой Буль, если логику, включая троичную, придумал Аристотель), либо по области видимости. Либо не забыть про Перем.

>Эти префиксы дают иллюзию самодокументируемости, нагружая при этом программистов бестолковой вознёй.

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

В принципе, программист может использовать такие имена на ранних этапах написания кода (чтобы уменьшить клавиатурный ввод и возвраты курсора вверх к описанию Перем, а потом переименовывать "рефакторингом" под стандарт и расставить всё новое в Перем).
369 romix
 
28.09.17
13:36
Для стандартных имен возникнет еще и проблема плохо читаемого кода - читатель не видит, какому контексту принадлежит то или иное имя - реквизит ли это, общий модуль или локальная переменная. Описание Перем или объявление переменной дают такое понимание - но к ним надо возвращаться, прокручивая курсор вверх, либо помнить весь объем имен (включая платформу, БСП, реквизиты и объявления вверху функции). Поэтому префиксы существенно разгружают разработчика и никого не надо к их применению принуждать. Почему принуждают к обратному и кто эти люди (разработчики ли они сами или, скажем, администраторы-эстеты, которые сами не кодят) - мне не до конца понятно.
370 infosoft-v
 
28.09.17
14:22
(368) Коллега, полностью согласен с вашими выводами. Исходя из аналогичных предпосылок разработали "внутренний стандарт" префиксации и придерживаемся его в разработке.

Использование префиксов совместно с использованием принципов защитного программирования сильно уменьшили количество ошибок в коде. Искать ошибки стало гораздо проще.

Префиксы по типу данных (сз, тз, м/мас, ...)
371 Лефмихалыч
 
28.09.17
15:53
(368)
1. я тебе отвечал уже на это.
2. Это бред. ОДИНАКОВЫЕ префиксы не могут ни чего ускорять.
О каком вообще уменьшении ввода ты ведешь разговор, когда предлагаешь вводить с клавиатуры ДОПОЛНИТЕЛЬНЫЕ буквы к имени переменной?
372 romix
 
28.09.17
16:25
(371) 1. И кто из кодеров (а не руководителей над ними) разделяет этот ответ?

2. Это на практике проверяется - есть частотность слов, букв. Набираете Ко - получаете половину словаря (Контрагент, Колонка, Корова, КонецДня, КонецГода, КонецПериода, Количество...).

Набираете тз - получаете только тз. Сколько их может быть в функции - одна или две. У вас же в личной карточке есть это сокращение.

Род занятий: из ХЗ делаю ТЗ

Расшифруете полным текстом? Вот то-то и оно, сразу потеряется весь шарм.
373 romix
 
28.09.17
16:32
+(368) "Постоянными предметами изучения были для Буля метафизика Аристотеля..."
https://ru.wikipedia.org/wiki/Буль,_Джордж
Неправильно назвали тип (имхо), и сокращать его надо буквой а.
374 Господин ПЖ
 
28.09.17
16:34
>только время отнимает и раздувает код

хосподи... все вокруг и так уверенны что 1с-никам платят за "строчку кода". ну и сущности в русском языке длиннее чем в английском - это и козе понятно
375 Dzenn
 
гуру
28.09.17
16:37
Перем Ы; // Штоб никто не догадался
376 romix
 
28.09.17
16:54
(375) Вот взаимоисключающий параграф на эту тему:
https://its.1c.ru/db/v8std#content:2149184103:hdoc
4. Имена переменных не должны состоять из одного символа. Использование односимвольных имен переменных допускается только для счетчиков циклов.
AdBlock убивает бесплатный контент. 1Сергей