|   |   | 
| 
 | Одно имя переменной и функции и рекомендации 1С по именованию переменных и функций | ☑ | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| 0
    
        Sam1C 10.01.20✎ 16:56 | 
 
        1С рекомендует в именовании функций не использовать «Получить,Установить…» вместо ПолучитьТаблицуДокументов(), правильно именовать функцию ТаблицаДокументов(). С одной стороны все ОК. Но в таких ситуация может возникать совпадение имен переменной и функции:
 Процедура РассчитатьЧтоТо() …. ТаблицаДокументов = ТаблицаДокументов(); Для Каждого СтрокаДокументов ИЗ ТаблицаДокументов Цикл … КонецПроцедуры В этих ситуациях можно, случайно обратится, вместо переменной к функции или вообще попасть в бесконечную рекурсию: Функция ТаблицаДокументов() ТаблицаДокументов = Новый ТаблицаЗначений; …. Возврат ТаблицаДокументов(); //опечатка) КонецФункции Как относитесь к одинаковым именам переменных и функций? | ||||||||||
| 1
    
        Волшебник модератор 10.01.20✎ 16:56 | 
        сначала научитесь писать -ться и -тся     | ||||||||||
| 2
    
        ДенисЧ 10.01.20✎ 16:59 | 
        (0) "Как относитесь к одинаковым именам переменных и функций?"
 Стреляю на запах. | ||||||||||
| 3
    
        1Сергей 10.01.20✎ 17:00 | 
        У 1С таких проблем нет, потому что Функции всегда пишутся со скобками     | ||||||||||
| 4
    
        Sam1C 10.01.20✎ 17:03 | 
        (1) ...случайно обратиться....., прошу прощения     | ||||||||||
| 5
    
        quest 10.01.20✎ 17:04 | 
        первое - а что мешает их именовать по разному? 
 И второе - стандарты 1 - это просто набор пожеланий - код должен быть понятным, бабы красивыми, солнце - греть. Ибо без системы автоматизированной проверки - все это пшик и повод на форуме потрындеть. В общем "не держись стандарта аки слепой стенки" - твори, дерзай PS - кстати выход из твоей ситуации - имена переменных китайские иероглифы, имена функций - только на арабском языке. И уже точно никогда не ошибешся Свой ответ | ||||||||||
| 6
    
        Timon1405 10.01.20✎ 17:07 | 
        (5) "не держись стандарта аки слепой стенки" - твори, дерзай - совет не очень. проверка кода в 1с очень даже есть https://releases.1c.ru/project/ACC , откройте ERP, увидите там отсылки к правилам     | ||||||||||
| 7
    
        quest 10.01.20✎ 17:10 | 
        (6) а случайно не скажете - сколько будет ошибок если проверить тот же ЕРП через ACC? не говоря уж про сонар. Отюсда вывод - раз уж вендор болт на свои стандарты кладет, то смысл быть святее папы римского? вот и остается - твори, дерзай, всем по*уй     | ||||||||||
| 8
    
        pechkin 10.01.20✎ 17:12 | 
        (7) но хочется то красиво чтоб было     | ||||||||||
| 9
    
        Timon1405 10.01.20✎ 17:13 | 
        (7) так надо прогонять не саму ЕРП (там есть галка "оставить на совести вендора"), а свой дописанный код.     | ||||||||||
| 10
    
        Sam1C 10.01.20✎ 17:18 | 
        Тема тут больше не стандарта, а удобства, по читабельности кода мне лично первый вариант, но когда быстро кодишь, из контекстной подсказки, как всегда назло выберешь ни то, что надо и потом удаляй скобки или наоборот.     | ||||||||||
| 11
    
        pechkin 10.01.20✎ 17:20 | 
        интересно почему 1с не  отказалась от слова "получить" ?     | ||||||||||
| 12
    
        Конструктор1С 10.01.20✎ 17:23 | 
        (0) имя процедуры должно четко описывать, что она делает, имя функции должно четко описывать возвращаемое ею значение. Должно быть не пространное ТаблицаДокументов(), а чёткое и конкретное название, например, ТаблицаДокументовСИстекшимСрокомОплаты()     | ||||||||||
| 13
    
        unenu 10.01.20✎ 17:27 | 
        раньше было
 ОбщегоНазанчения.ПолучитьЗначениеРеквизита() сейчас стало ОбщегоНазанчения.ЗначениеРеквизитаОбъекта() (11) так что - культовые разработчики таки приняли стандарты | ||||||||||
| 14
    
        Sam1C 10.01.20✎ 17:32 | 
        (12) в теме про одинаковость имени переменной и функции, ТаблицаДокументов –чисто упрощенный пример имени.     | ||||||||||
| 15
    
        JeHer 10.01.20✎ 17:36 | 
        С этими стандартами можно пшикнуть при обновлении. Возьмут деятели из 1С и назовут твой самый любимый экспортный модуль твоим же названием "СделатьВсё" и пшик...     | ||||||||||
| 16
    
        BeerHelpsMeWin 10.01.20✎ 17:37 | 
        (0)
 Тоже не могу отучиться использовать "Получить" в именах функций. В свое время слишком привык к конструкциям типа Something=getSomething(), и на мой взгляд это куда более читабельно. Лучше их именовать по-разному | ||||||||||
| 17
    
        VladZ 10.01.20✎ 17:40 | 
        (0) Плохо отношусь. Поэтому пишу "ПолучитьТаблицуДокументов()". Это более читаемо.     | ||||||||||
| 18
    
        unenu 10.01.20✎ 17:43 | 
        если вы пишите с претензией на "совместимо", то могут придраться и не совместить.
 в противном случае случае стандарт то, что делает код более логичным и понятным. | ||||||||||
| 19
    
        Vinianel 10.01.20✎ 18:05 | 
        (17) +1.     Лучше их именовать по-разному | ||||||||||
| 20
    
        Конструктор1С 10.01.20✎ 18:13 | 
        (14) дык, я об том и пишу, что при хорошо подобранных именах подобные проблемы отпадают сами собой. Сравни:
 ТаблицаРеализаций = ТаблицаРеализаций(); и ПросроченныеРеализации = ТаблицаРеализацийСОтклонениямиОтГрафикаПлатежей(); | ||||||||||
| 21
    
        pechkin 10.01.20✎ 18:14 | 
        (20) те ты предлагаешь для каждой сущности придумывать 2 имени: краткое и полное     | ||||||||||
| 22
    
        pechkin 10.01.20✎ 18:14 | 
        но можно краткое имя всегда делать Таблица     | ||||||||||
| 23
    
        Провинциальный 1сник 10.01.20✎ 18:23 | 
        Целиком и полностью одобряю эти принципы. Функция - не действие. Императивное именование плохой стиль. Для императивов есть процедуры.     Нормально, просто нужно разуть глаза | ||||||||||
| 24
    
        pechkin 10.01.20✎ 18:27 | 
        (23) а как же get и set в других языках?     | ||||||||||
| 25
    
        Провинциальный 1сник 10.01.20✎ 18:28 | 
        (24) Это не функции, а объявления методов     | ||||||||||
| 26
    
        rphosts 10.01.20✎ 18:48 | 
        (0) то, что предлагает 1С - чуть допиленная венгерская нотация и это хорошо!
 А вообще курните как называются вызовы в модулях БСП, делайте так-же - не запутаетесь! Свой ответ | ||||||||||
| 27
    
        Ненавижу 1С гуру 11.01.20✎ 00:38 | 
        (25) а методы уже не функции?     | ||||||||||
| 28
    
        Aleksey 11.01.20✎ 00:56 | 
        (15) типа как ЗначениеЗаполнено() из 8.0     | ||||||||||
| 29
    
        Hans 11.01.20✎ 01:03 | 
        Сегодня тоже на эту тему думал. Так и не решил как делать.     | ||||||||||
| 30
    
        ssh2006 11.01.20✎ 01:16 | 
        придерживаюсь     Лучше их именовать по-разному | ||||||||||
| 31
    
        Злопчинский 11.01.20✎ 01:23 | 
        в клюшках, например,
 переменная или реквизит могла именоваться Состояние при наличии Состояние() а вот Сообщить и Сообщить() - не канает. Странно... | ||||||||||
| 32
    
        Злопчинский 11.01.20✎ 01:24 | 
        собственно     Лучше их именовать по-разному | ||||||||||
| 33
    
        Конструктор1С 11.01.20✎ 04:56 | 
        (21) по канонам хорошего программирования, именам в коде (именам переменных и методо) нужно уделять тщательнейшее внимание. Есть ты, в процессе разработки, выборам имен уделяешь меньше времени, чем написанию кода, то у тебя априори плохой код     | ||||||||||
| 34
    
        Конструктор1С 11.01.20✎ 05:15 | 
        ПросроченныеРеализации = ТаблицаРеализацийСОтклонениямиОтГрафикаПлатежей();
 в данном случае функция позволяет сократить имя переменной. Грех этим не воспользоваться. Никаких трудностей в этом не вижу. Но если бы переменная не возвращалась функцией, а инициализировалась в коде, то переменную нужно было бы именовать тщательнее ТаблицаРеализацийСОтклонениямиОтГрафикаПлатежей = Новый ТаблицаЗначений; да, можно было бы написать комментарий возле переменной: ТаблицаДокументов = Новый ТаблицаЗначений; // Таблица реализаций с отклонениями от графика платежей но в программировании хорошим именем считается такое, которое не требует комментариев. Самодокументирующийся код и все дела | ||||||||||
| 35
    
        Cyberhawk 11.01.20✎ 09:02 | 
        Иногда это смотрится нормально     Нормально, просто нужно разуть глаза | ||||||||||
| 36
    
        Cyberhawk 11.01.20✎ 09:03 | 
        Иногда это смотрится ненормально и даже может заметно снижать читаемость кода     Лучше их именовать по-разному | ||||||||||
| 37
    
        080808Ник 11.01.20✎ 11:16 | 
        (0) сам таким мучаюсь вопросом) что характерно, в стандартах не указан этот вопрос и примера нет     | ||||||||||
| 38
    
        Cyberhawk 11.01.20✎ 12:54 | 
        (37) "в стандартах не указан этот вопрос и примера нет" // Так вопрос составной - про имя переменной и имя функции. По отдельности все указано, нет никакой нужды объединять эти два вопроса в какой-то третий.     | ||||||||||
| 39
    
        palsergeich 11.01.20✎ 13:04 | 
        (38) не все так очевидно.
 Я например не понимаю поборников стандартов. Если у тебя в переменной межит массив счетов исключений, то почему это не МассивСчетовИсключений, а СчетаИсключения(что на самом деле при чтении здорово снижает скорость восприятия) И причем люди весьма упоротые, хрен чо докажешь. Я в одном месте нарвался на это при ревью, потом просто заменил имя переменной и спросил всех - так читать лучше? Сказали нет, потом ещё пол часа побудило и таки мой вариант оставили, но не каждый так в залупу полезет. Стандарты это правила, а не приказы, вот что нужно понимать и доносить, если ты понимаешь зачем они то всегда легко можно доказать и необходимость отступления | ||||||||||
| 40
    
        Cyberhawk 11.01.20✎ 13:23 | 
        (39) Сегодня это массив, завтра - список значений, послезавтра - уже таблица значений.
 За необходимость или необязательность стандартов беседовать давно уже неинтересно) | ||||||||||
| 41
    
        palsergeich 11.01.20✎ 13:39 | 
        (40) не будет ни списка ни ТЗ, даже если воткну весь план счетов коллекцию смысла менять нет от этого ничего не изменится.
 При всем при этом в том же БСП вполне себе такой гейминг используется. | ||||||||||
| 42
    
        palsergeich 11.01.20✎ 13:41 | 
        (41) если изменение типа коллекции теоретически возможно, то под это делается ещё несколько оберток и там то с неймингом все ок.     | ||||||||||
| 43
    
        fisher 11.01.20✎ 13:42 | 
        (0) > 1С рекомендует в именовании функций не использовать «Получить,Установить…»
 Про "Установить" ты переборщил. Для процедур как раз неопределенная форма глагола. А для функции правило как раз в том смысле, что если это стандартная функция получения возвращаемого результата и больше ничего, тогда просто всегда для них пришлось бы писать "Получить...". Опуская "Получить" - просто получаем более лаконичное имя функции. Для всех остальных случаев работают те же правила, что и для процедур. ЗЫ. Но я тоже не могу отвыкнуть от "Получить" и не вижу особого смысла отучиваться. | ||||||||||
| 44
    
        080808Ник 11.01.20✎ 13:44 | 
        (38) так вот неочевидно раз вопросы в (0) возникают     | ||||||||||
| 45
    
        fisher 11.01.20✎ 13:45 | 
        ИМХО, проще любые методы именовать как действия, даже если это стандартное действие "Получить". Так что в этом месте я со стандартами 1С не согласен.     Свой ответ | ||||||||||
| 46
    
        080808Ник 11.01.20✎ 13:46 | 
        (45) получить это уже не метод, а функция)     | ||||||||||
| 47
    
        fisher 11.01.20✎ 13:50 | 
        (46) Метод - это и функция и процедура. Термин "метод" просто используют обычно для членов класса. Скажу проще - любые процедуры/функции лучше именовать как действия, ИМХО. Это оставляет меньше неопределенности и делает код более читабельным. Лично для меня, во всяком случае.     | ||||||||||
| 48
    
        fisher 11.01.20✎ 13:54 | 
        Ну и при этом автоматически решается сабжевая проблема. Потому что переменная никогда не называется как действие.     Лучше их именовать по-разному | ||||||||||
| 49
    
        fisher 11.01.20✎ 14:00 | 
        Могу ошибаться, но в импортных стайл-гайдах так как в 1С советуют вроде и нету нигде... Вероятно, им писать "Get" гораздо менее лениво чем "Получить" и поэтому ни у кого дискомфорта и не возникает :)     | ||||||||||
| 50
    
        Tonik992 11.01.20✎ 14:11 | 
        (49) Да. И в best practices методы должны начинаться с глагола.     | ||||||||||
| 51
    
        Cyberhawk 11.01.20✎ 14:42 | 
        (41) Ну тебе конечно виднее что там будет, а что не будет. Я лишь пояснил откуда ноги растут у этой рекомендации - для облегчения поддержки кода.     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |