Вход | Регистрация

  1  2  3  4   
1С:Предприятие :: 1С:Предприятие 8 общая

Правила именования переменных

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

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

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

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

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

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

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

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

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

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

Вот скажи, как на твой взгляд это сопровождать и отлаживать?
   _Дайвер_
 
215 - 27.09.17 - 09:40
Я понимаю когда сокращают общие объекты данных, ТабличнаяЧасть = ТЧ; ТаблицаЗначений = ТЗ, но когда свои придумывают, которые кроме тебя никто не знает это невоспитанность и эгоизм. Писать код надо для людей, а не для машины. Как кто-то там выражался)
   _Дайвер_
 
216 - 27.09.17 - 09:45
(214) Рефакторинг) Переменные не имеют смысловой нагрузки вообще, ТС кода явно угарает так
   Cyberhawk
 
217 - 27.09.17 - 09:59
(216) Ошибаешься: К = количество, змея = видимо по анлогии с игрой, когда она растет на единичку
   Cyberhawk
 
218 - 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 - не помню. Толковая очень книжка, кстати. Не без идеалистических замашек, но толковая
   Филиал-msk
 
222 - 27.09.17 - 10:04
(219) @ildarovich, к тоби пришли (:
   Fedor-1971
 
223 - 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) не, этого можно оставить. А код - сжечь
   Cyberhawk
 
226 - 27.09.17 - 10:09
(224) Это ты что-то юлишь :) Я лишь отвечал на твою фразу "Переменные не имеют смысловой нагрузки вообще", вроде показав, что какая-то нагрузка все-таки в них присутствует
   Лефмихалыч
 
227 - 27.09.17 - 10:10
(223) тратить время - криминально. Его потому, что неоткуда взять дополнительного, чтобы восполнить потери. У человека нет ни чего ценнее времени.
   _Дайвер_
 
228 - 27.09.17 - 10:12
(226) Она есть))) Но ее еще понять нужно)
   Cyberhawk
 
229 - 27.09.17 - 10:13
(228) Не спорю, что для легкого/быстрого понимания кода другими автор кода не приложил усилий
   _Дайвер_
 
230 - 27.09.17 - 10:20
(220) Да, мне её брат давал читать, я только не дочитал еще ее)
   Fedor-1971
 
231 - 27.09.17 - 10:22
(227) Это да, но что быстрее проанализировать имеющееся (для С изучить библиотеки и без разницы как там внутри написан код) или написать своё (тут уж точно пустая трата времени)?

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

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

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

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

// неверно предположили о типе и добавили такой код

Адрес = "г. Вогоград, ул. Мира";

// этот код был написан ранее и он теперь нерабочий

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


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

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

КонецЕсли;

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

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

//
// Параметры:

//  тзСтатусыДокументов     - ТаблицаЗначений - OUT. таблица статусов с полями:
//        * сИдЭДО - Строка - ИД ЭДО

//        * чСтатусДокумента - Число - статус документа
//        * чСтатусТранспортный - Число - статус транспортный

// 
// Возвращаемое значение:

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

// Хорошо:

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

//     URLСервиса         - Строка
//     ИмяПользователя    - Строка

//     ПарольПользователя - Строка
...

// Хорошо:

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Гена = Новый ГенераторСлучайныхЧисел();
   Филиал-msk
 
300 - 27.09.17 - 16:24
Триста
  1  2  3  4   

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует