8.х Хороший стиль

Тема в разделе "Общие вопросы "1С:Предприятие 8"", создана пользователем CSCO12103692, 20 ноя 2012.

  1. TopicStarter Overlay
    CSCO12103692
    Offline

    CSCO12103692 Опытный в 1С

    Регистрация:
    19 июн 2012
    Сообщения:
    190
    Симпатии:
    0
    Баллы:
    26
    Заглянувшим доброго времени суток.

    Ребята, воник вопрос: есть ли какой-то свод правил написания "хорошего" 1С кода? И если да, то где бы посмотреть детали?

    Ситуация: я тут что-то писал-писал и наконец написал, и потом поехал в командировку. Возвращаюсь (не было где-то неделю), и обнаруживаю, что на определенные места своей же писанины смотрю как баран на новые ворота :) Утрирую конечно, но все-же..
    Причем подозреваю, что если со стороны придет человек поддерживать эту систему после меня, то ему будет совсем туго, ибо объем этой бадяги давно перерос обработки, которые можно склепать за пару вечеров :((
    Пример:
    Код:
     ...
    If (strHeader = Header) And (numTailMark <> 0) Then
    numEndID	= Find(strTail,Char(10));
    strRklID	= Left(strTail,numEndID-1);
    
    If Find(strRkl,strCodeMark) = 0 Then
    newRow  = rklVT.Add();
    newRow.dbID = strRklID;
    newRow.flag = flagNOcode;
    Goto ~quit;
    EndIf;
    
    numRklTailStart = Find(strRkl,strTailMark);
    numRklBodyStart = Find(strRkl,strBodyMark);
    strRklBody  = Mid(strRkl,numRklBodyStart,numRklTailStart-numRklBodyStart);
    
    While Find(strRklBody,strCodeMark) > 0 Do
    numCode   = Find(strRklBody,strCodeMark)-4;
    Code   = Number(Mid(strRklBody,numCode,4));
    strPriceRow  = Mid(strRklBody,numCode+37,9);
    strRklBody  = Mid(strRklBody,numCode+37);
    Summ   = Number(StrReplace(strRklBody,"*",""));
    
    isCodeExist  = rklVT.Find(Code,"Code");
    If isCodeExist  = Undefined Then
    newRow   = rklVT.Add();
    newRow.Code  = Code;
    newRow.Summ  = Summ;
    Else
    index = rklVT.IndexOf(rklVT.Find(Code,"Code"));
    rklVT[index].Summ = rklVT[index].Summ+Summ;
    EndIf;  
    EndDo;
    newRow   = rklVT.Add();
    ...
    
    Итак, как улучшать? Писать комменты - раз! Что еще?
    Или, повторюсь, может это подробно разжевано?
  2. Requin
    Offline

    Requin Опытный в 1С

    Регистрация:
    10 май 2010
    Сообщения:
    1.911
    Симпатии:
    2
    Баллы:
    29
    Долго вас следующий 1С-ник будет вспоминать "добрым" словом :)
    Оно то конечно есть вариант конструкций языка на английском, но больше принято писать по-русски.

    А по существу - на ИТС есть статьи по системе стандартов и методик при разработке конфигураций, в том числе и соглашение при написании кода. Там покопайтесь.
  3. vartanet
    Offline

    vartanet Опытный в 1С Команда форума

    Регистрация:
    16 ноя 2010
    Сообщения:
    2.698
    Симпатии:
    15
    Баллы:
    29
    названия переменных должны быть говорящими. чтобы не пришлось судорожно вспоминать, что это за переменная и зачем она нужна. поэтому писать лучше на русском.
  4. 1cUserAndrew
    Offline

    1cUserAndrew Профессионал в 1С Команда форума

    Регистрация:
    27 май 2010
    Сообщения:
    4.949
    Симпатии:
    149
    Баллы:
    104
    Да, комментарии безусловно нужны для лучшего понимания, но увлекаться сильно опять же не стоит.
    Код с комментариями к каждой строчке - не очень хорошо воспринимается :).

    P.S. Подпись vartanetа как раз в тему :D
  5. TopicStarter Overlay
    CSCO12103692
    Offline

    CSCO12103692 Опытный в 1С

    Регистрация:
    19 июн 2012
    Сообщения:
    190
    Симпатии:
    0
    Баллы:
    26
    Не знал, что на итсах об этом пишут. Точнее вообще их в руки не брал.
    Спасибо, попробую пошурудить наших бухгелтеров. Может оно у нас есть...
  6. TopicStarter Overlay
    CSCO12103692
    Offline

    CSCO12103692 Опытный в 1С

    Регистрация:
    19 июн 2012
    Сообщения:
    190
    Симпатии:
    0
    Баллы:
    26
    +
    Кстати заметил интересную деталь.. в начале своей мега-1с, в ковычках, карьеры писал как-то все поросту и было понятно с первого взгляда что, куда и зачем.

    С недавнего времени стиль сам собой стал меняться (например стал чаще использовать Если), и сразу возросло время отладки :((( Хотя скорость написания существенно выросла, и перестал отладчиком заглядывать после каждой строки. Сразу одну-две требуемых функций не глядя.
  7. uza
    Offline

    uza 1С, VBA (EXCEL), VB (.NET + WEB)

    Регистрация:
    10 июл 2007
    Сообщения:
    1.845
    Симпатии:
    1
    Баллы:
    29
    1) Если через год глядя в свой код вам хочеться в нем что то исправить - это ХОРОШО. Значит вы УЧИТЕСЬ, значит вы РАСТЕТЕ.
    2) Писать в 1С на ангельском - дурной тон. Сильно дурной. Дурной до уровня визы "расстрелять"!
    3) Для правильного написания кода вовсе необязательно читать ИТС. Хороший тон написания, он один для большинства языков программирования, был расскрыт в своих книгах еще классиками, и преподавался в соответсвующих курсах при профильном обучении как минимум еще в середине 90ых! (во многих вузах, и еще раньше - в середине-конце 80ых)
  8. VIPOS
    Offline

    VIPOS Опытный в 1С

    Регистрация:
    12 сен 2012
    Сообщения:
    565
    Симпатии:
    1
    Баллы:
    29
    Вообще конечно лучше всего писать на русской версии языка (хотя я сам как разработчик на делфи больше привык к английской интерпретации языка),
    но все же русский код более читабельный, так же рекомендовал бы Вам давать осмысленные имена переменных (проще воспринимается логика кода когда читаешь
    Код:
    достать из холодильника сосиску 
    чем )
    Код:
    если а=И тогда
    с= ХренЗнаетЧто
    И конечно же Оставляйте коментарии к коду..... Вам и самому потом будет проще разобраться со своим кодом, да и вашим последователям тоже=))
  9. nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.990
    Симпатии:
    399
    Баллы:
    104
    Недавно как раз проводил обучение других программеров на работе. Пришлось написать небольшую подсказку. Как раз по вашей части.
  10. TopicStarter Overlay
    CSCO12103692
    Offline

    CSCO12103692 Опытный в 1С

    Регистрация:
    19 июн 2012
    Сообщения:
    190
    Симпатии:
    0
    Баллы:
    26
    Все-таки 1Сники народ странный... это я не о присутствующих, а в целом :)

    Сколько в начале не лазил по инету, все как один твердили, что пофиг на каком языке писать ("пиши на каком удобней"). Я когда-то слегка касался бейсика (в школе конечно), и потому писать стал тоже на английском, рассчитывая, что почти любой ИТшник худо-бедно владеет инглишем.. ан нет. Теперь выясняется что "все не так ребята".

    Лишний раз убеждаюсь: когда начинаешь новое дело, надо не лазить по форумам, а найти одного спеца и подолбить его в асю. Форумы уже потом, когда основа ясна. Печалька...

    зы
    Вань, спасибо, я тут листаю твой документ. Должно помочь.
  11. nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.990
    Симпатии:
    399
    Баллы:
    104
    Как раз это то и составляет сложность, причем не только в 1С, а в любой другой отрасли. Найти того, кто будет тебе подсказывать и указывать на ошибки. Не каждому это нужно. Но все же добрые люди есть, вот как мы. То, что я дал, это я собрал сам. По кускам. Но все это есть на ИТС. Там вообще все есть. Если вопросы будут, лучше сначала там посмотрите.
  12. TopicStarter Overlay
    CSCO12103692
    Offline

    CSCO12103692 Опытный в 1С

    Регистрация:
    19 июн 2012
    Сообщения:
    190
    Симпатии:
    0
    Баллы:
    26
    В общем начал потихоньку менять названия процедур/переменных на русские без сокращений, да пописывать коменты. Ситуация тяжелая, но не безнадежная.

    Всем спасибо! Решено!
  13. TopicStarter Overlay
    CSCO12103692
    Offline

    CSCO12103692 Опытный в 1С

    Регистрация:
    19 июн 2012
    Сообщения:
    190
    Симпатии:
    0
    Баллы:
    26
    +
    кстати о переменных от себя добавлю. Трудно оценить пока степень полезности, но мне понравилось в начале имени переменной делать пометку о её типе.
    Например:
    strXXX или sXXX где XXX какое-то название означает что тип этой переменной ХХХ строка. a(arr) массив, n(num) число и тд.
  14. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    добавлю и от себя, на Delphi и С# мне очень помогала такая технология (указывать тип), в 1с понемного отошла от этого (свои переменные именую с "м", а вот элементы формы по привычке с указанием вначале типа элемента)

    Полезность данного метода - быстрое ориентирование между переменными.
  15. WaRDeR
    Offline

    WaRDeR Модераторы Команда форума Модератор

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    И я от себя добавлю: хорошим тоном программирования считается не выбиваться из "общего стиля". Так было заведено в 1С писать код на русском.

    Советую изучить код какой-нибудь типовой конфигурации. Хоть и встречаются моменты, с которыми не согласен, но в целом нужно писать так же.
  16. nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.990
    Симпатии:
    399
    Баллы:
    104
    Прям как мысли прочитал. :D :D :D
  17. TopicStarter Overlay
    CSCO12103692
    Offline

    CSCO12103692 Опытный в 1С

    Регистрация:
    19 июн 2012
    Сообщения:
    190
    Симпатии:
    0
    Баллы:
    26
    Ребят, еще вопрос насчет дальнейшей перспективы.
    На сколько я понимаю начиная с 8ки пошли управляемые приложения, а до нее были обычные. И вроде так пишут, что 1С планирует совершенно все переводить на этот новый стандарт.

    Я например до настоящего момента работал только с обычными, но исходя из текущих реалий может имеет смысл начать грести в сторону управляемых? То есть не ждать когда гром грянет, а сейчас садиться и начинать разбираться/переписывать свои плюшки....
    "Моя" правильно видит этот мир?
  18. 1cUserAndrew
    Offline

    1cUserAndrew Профессионал в 1С Команда форума

    Регистрация:
    27 май 2010
    Сообщения:
    4.949
    Симпатии:
    149
    Баллы:
    104
    Ну, в ближайшее время обычные формы, конечно, не исчезнут с лица Земли. Думаю, существовать и активно использоваться они будут еще долго.
    Тем не менее, типовые конфигурации фирма "1С" постепенно переводит на управляемые формы. Так что когда-то столкнуться все равно придется.
    Да и вообще, я думаю, раз планируете работать в сфере программ 1С, управляемые формы знать, конечно, очень желательно :) А вскоре, наверное, будет очень обязательно :)


    "Моя" видит этот мир так же, как "Ваша" :))
  19. Requin
    Offline

    Requin Опытный в 1С

    Регистрация:
    10 май 2010
    Сообщения:
    1.911
    Симпатии:
    2
    Баллы:
    29
    IMHO, правильно.
    Соглашусь с 1cUserAndrew.
    В ближайшее время обычные формы конечно же остануться. Тут бы с 7.7 все перешли, не говоря уже про управляемое приложение :)
    Но с переходом к УФ я думаю в обозримом будущем столкнуться все. Насколько оно обозримо -1С его знает :). Но начинать разбираться/переписывать лучше пораньше.
  20. Svb
    Offline

    Svb Опытный в 1С Команда форума

    Регистрация:
    12 янв 2011
    Сообщения:
    980
    Симпатии:
    19
    Баллы:
    29
    А есть стандарт на оформление сопроводительной документации к разрабатываемому ПО?
    Например, разрабатывается целый раздел учета, который "прикручивается" к типовой конфигурации. По хорошему надо оформить бизнес-процесс, написать ТЗ, написать пояснительную записку, какой-нибудь акт отладки... Провожу аналогии с документированием инженерных систем, там есть стандарты. А на ПО есть?
    И еще вопрос, когда разрабатываете новый документ в справку этого документа пишете что-нибудь?

Поделиться этой страницей