Помогите научиться оптимально програмировать.

Тема в разделе "1C и всё что с ней связано", создана пользователем KiR, 30 мар 2009.

Наш партнер Genesis Hackspace
  1. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    Заранее извиняюсь за дебильный вопрос, но надеюсь на понимание и исчерпывающие ответы. Я вот не очень понимаю (читать мой статус) зачем использовать много функций и процедур. Т.е. делаем обработку, в которой есть кнопка Сформировать, Таб часть и какие-то реквизиты. В принцыпе ведь все (включая и печать) можно описать в процедуре Сформировать. Понятно, что если понадобиться использование предопределенных процедур - их тоже в модуле выписать нужно. Но а если нет.
     
  2. vitfil

    vitfil IT-интегратор

    Регистрация:
    2 апр 2004
    Сообщения:
    2.062
    Симпатии:
    0
    1. А если надо будет выполнять однотипное действие в разных местах процедуры?
    2. А если надо будет отлаживать? Хотя тут требуется баланс между кусками кода, вынесенными в отдельные процедуры и читабельностью.
    3. Ну и самое главное, я бы сказал, что разбиение одной процедуры на отдельные куски, есть наследие приверженцев ООП. Например:
    1. Формируем текст запроса со всякими условиями
    2. Выполняем запрос и получаем результаты
    3. выводим группировки.
    Если написать это все одной процедурой в каком-нить замысловатом отчете, получим строк кода раза в 4 больше.
     
  3. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Рад, что у активного человека возникают естественные вопросы, ибо лучше поздно, чем никогда.
    Сколько я на своем веку насмотрелся на "программистов" 1С, которые понятия не имеют о структурированном коде, а
    учиться категорически не желают !
    Конечно, в любой среде программирования желательны общие знания.
    Так что всем рекомендую не потерявшую до сих пор актуальность монографию Дональда Кнута "Искусство программирования"
     
  4. mialord

    mialord Гость

    Когда я учился в Университете у меня, был один очень интересный преподаватель, которого я, наверное, буду помнить всю жизнь. Он забивал в нас не просто умение составлять програмный код, решающий поставленную задачу, но, что самое главное, объяснил, что мне, и любому программисту дорабатывающему мой код должна быть видна логическая цепочка действий програмного кода. От момента получения заказа на написание ПО, до момента реализации програмного кода есть этапы не менее важные чем усвоение решаемой задачи. И главным этапом является, создание логической цепочки обработчиков, решающих узкий спектр задач, что позволяет структуризировать задачу, на более мелкие и самостоятельные задачи, что при усложнении задачи, (заказчику потребовалось изменить алгоритм) в дальнейшем, является одним из самых важных вопросов.
    Написать програмный код может каждый программист, а на современных ЯВУ даже некоторые неопытные пользователи, могут решать конкретные мелкие задачи программирования самостоятельно. Ибо в программе главное не код, а логика.
    Конечно, многие задачи можно решить и в одной обработке, но далеко не во всех (Вычисление определителя матрицы n - ого порядка, вспотеешь решать в одной процедуре). Но если логически разбить задачу на подзадачи (этапы) решающие конкретный спектр вопросов и в общей процедуре завязать их в рекурсию. 1 Есть логика 2 Есть красота и изящность кода 3 Любой програмер может со справочником высшей математики разобраться в вашей задачи 4 А если еще у каждой задачи комент написать, так вообще изящно.
    С другой стороны в 1С очень часто встречаются процедуры и Функции, которые в процессе разнесения кода потеряли логический смысл. Очень часто рассматривая код 1С у меня появляется вопрос, что одни модули писали действительно профи, но другие напичканы студентами - программистами, вот и получается в результате что нам многие модули не нравятся по своему исполнению, а к другим и не придерешся.
    - человек написавший это уверен в своём опыте написания структуированного кода, но я теперь в нем совсем не уверен :rolleyes: , язык длинный, а вот действий я ваших не вижу, а по теме отбор8.1 вы написали дважды, и два раза написали глупость. Ха - ха экстра - профи :)

    ВЫВОД: Я считаю, что для организации логической цепочки ПО необходимо, прамо таки жизненно, описывать обработчики конкретных этапов задачи, что облегчает понимание програмного кода, читабельность и, конечно, вызов этих маленьких помошников для решения всё тех же и тех же вопросов.
    Пример: Открываешь TLB, и видишь, аккуратно упакованные процедуры и функции для решения конкретной, логически завершенной задачи. Открываешь эту процедуру (при наличии исходников) и видишь что задача решается решением нескольких более мелких задач, и, каждая подзадача должна быть логически завершена. Вот это код который я быстро усвою, быстро разберусь, и, буду в дальнейшем, с удовольствием его использовать.
     
  5. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    Вот тут и заключается самая большая трудность. Когда все же стоит выносить какое-то действие в отдельную поцедуру, а когда писать все в одной...
    Может быть этому и учат в вузах, но я-то по образованию не програмер, проходил только 2 курса 1Сок, но там как бы на подобных вопросах не заостряли внимание - были важны другие более жизненые случаи типа как сделать то-то и то-то чтобы получить результат, а не как это красиво выписать. А и еще лет 7 назад вбивали в меня курс С++ но тогда меня это не сильно интересовало/занимало, а посеу и вопросов не появлялось что да как да почему, а тем более как лучше...
    А так как сейчас работаю с 1Ской (чему-то научился) и думаю получать таки сертификаты - то и задумался над "правильностю" и "красотой" написания кода...
     
  6. vitfil

    vitfil IT-интегратор

    Регистрация:
    2 апр 2004
    Сообщения:
    2.062
    Симпатии:
    0
    Полностью поддерживаю! Замечательный труд! Не даром он переживает уже которое переиздание?
     
  7. mialord

    mialord Гость

    Думаю даже не правильность и красота кода важны, а его оптимальность. Опять таки всё зависит от того что мы понимаем под словом оптимальность: производительность, читабельность или полнота. Вот так вот и получается что Kir поднял вопрос который нас всех рано или поздно начинает интерисовать. И вопрос на самом деле очень не простой, в чем мы уже убедились из ранних ответах.
     
  8. vitfil

    vitfil IT-интегратор

    Регистрация:
    2 апр 2004
    Сообщения:
    2.062
    Симпатии:
    0
    Вопрос, на самом деле, простой. Ответы на него можно найти у того же Дональда и прочих Кнутов.
    А вот в чем лично я убедился, точнее даже укоренился в своем мнении, что курсы 1С не делают человека программистом. Хотите стать программистом? Читайте книги по программированию, а не занимайтесь изучением языков программирования.
     
  9. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    Ну как бы сама платформа 1С - эт тоже своего рода не совсем програмерская среда ИМХО. Т.е. некий узкоспециализированный продкут. Вот именно в этом ключе на курсах и учат. Да, програмист найдет массу вариантов расширить узкие возможности, но если нужно просто добавить несколько реквизитов в справочник или сварганить два три отчета - то тут как бы ни не обязательно быть квалифицированным програмером. Другое дело что скорость работы и "качество" написания будут естественно отличаться...
     
  10. mialord

    mialord Гость

    Кха, кха, глупо было даже предпологать что курсы 1С сделают из человека программиста.
    Хочу заметить, что книги решают далеко ни все проблемы. Да они помогают решать бональные вопросы, причем, чаще всего, вопросы привязанные к конкретному языку программированию. А вот философия программирования наробатывается годами или, например, логику заложенную в 1С можно понять только экспертным путем. Ну, если кто-то просто прочитал книжку и сел рулить, поздравляю, Вы гений :rolleyes:.
    И еще, не согласен, с последней фразой. Читать книги можете сколько угодно, но надо, на самом деле, делать параллельно эти процессы. Поднял свой уровень, начал прогить по малу, появился вопрос, открыл книгу, рассмотрел советы, приподнял свой уровень. И вопрос ни шиша не простой. если вы знаете ответы, как лучше, и почему именно так, поздравляю вы снова гений :), но над этим вопросом уже давно карячатся, так как нет какого - либо единого языка программирования организованного идеально по всем тематикам (Имеются в виду ЯВУ)
    ПРАКТИКА ВСЕГДА РАСХОДИТСЯ С ТЕОРИЕЙ

    Kir +1, присоединяюсь
     
  11. vitfil

    vitfil IT-интегратор

    Регистрация:
    2 апр 2004
    Сообщения:
    2.062
    Симпатии:
    0
    Приходилось встречаться с творениями таких программистов...
    Необходимо было фиксировать автора документа. Сделано было так: общий реквизит (строка) и в каждом документе:
    ВводНового()
    Автор = ИмяПользователя();
    Я был в шоке! У человека был сертификат 1С.
    Глупо было предполагать, что земля круглая, атом делим, скорость света - максимальный предел. Про корпускулярно-волновой дуализм я вообще молчу - бОльшей глупости и предположить трудно.
    Спасибо, я это знаю!
    и снова, спасибо!
    Годами нарАбатывается опыт, а философия черпается из первоисточников. Или вы считаете, что каждый программист вырабатывает свою философию? Еще раз повторяю: не читайте книги по программированию на С++ или на Java, читайте книги по программированию (большая точка!).
    Языки программирования - всего лишь инструменты, приспособленные для решения тех или иных задач. Само программирование лежит несколько в иной плоскости. Есть умельцы, которые срубят дом при помощи одного только топора, но в реальности приходится использовать множество инструментов (языков программирования) для решения тех или иных задач, которые возникают при строительстве дома.
    На сей оптимистичной ноте заканчиваю. Спасибо многоуважаемой аудитории, что внимательно меня выслушали. Надеюсь, сделаете правильные выводы.
     
  12. mialord

    mialord Гость

    Надо же Америку открыли :).
    Я вам посоветую, "читайте книжки" ;), ибо этот вопрос 2 года назад стал огромным вопросом, возникшим при моделировании взрыва сверхновой.
    Именно!!! И не только программист, каждый человек нарабатывает в процессе жизни свою философию, ибо философия не является точной наукой, но является первоисточником всех наук. Именно благодаря содержанию в нас различных ответов, наработанных в процессе жизни, мы столь уникальны и неповтаримы, и воспринимаем одну и ту же картину, каждый по - своему, и видим мир по - своему.
    Читайте внимательно, прежде чем что - либо писать
    Именно из - за того что нет идеального языка... приходится использовать разнообразные языки для решения тех, либо иных задач. Например: БД - Delphy, COM,OLE,Active + - С. Это на моём личном опыте, для решения этих задач приходилось использовать различные языки, ориентированные, по моему мнению, в указанных направлениях, лучше остальных.
    Правильные для кого??? С чем - то я согласен, но с чем - то я котигорически не согласен, и подводить общую черту, подгоняя всех под неё, только на размере своих познаний, ГЛУПО.
     
  13. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    Ну ИМХО тут стоит учитывать много фактров и не исплючать тот, что все люди разные. Возможно было мало времени, денег, опыта, желания... Кроме того не всегда можно обойтись только програмным продуктом, не регулируясь еще другими контрольными органами (диреторскими приказами, которые что-то запрещают и т.д. и т.п.).
     
  14. etc

    etc Гость

    Надо отметить - опыт, мяхка говоря, скуден, посему не догма. :)

    PS:Нравица мне 1с разборки, иногда учавствую. ;)
     
  15. mialord

    mialord Гость

    Вы пожалуйста когда пишите такие заметки описывайте на основании чего вы это сообщение пишите. А то получается свист в сторону и тишина.
    Для разработки БД удобен язык программирования Delphy, он заточен на базы. Если ошибаюсь, пишите почему, и, я приму ваш ответ к сведению, либо отвечу почему вы не правы. С COM объектами наиболее сподручнее общаться на языке С, в данном случае заточка языка способствует более гибкой и привязанной работе с COM объектами. Если хотите что - либо прокоментировать всегда пожалуйста. Напишите в личные сообщения я обязательно, и с удовольствием ознакомлюсь с вашими умозаключениями. Дальнейшее отклонения по этой теме жду с удовольствием в личной переписки.
    В разработках 1С я не учавствую, а вы, насколько я понял учавствуйте. Ну, если честно даже приятно, что есть люди занимающиеся непосредственно разработками 1С. Ну не вижу смыска вашего поста. Вы не ответили на вопрос по теме. Тоже будет очень интересно выслушать ваше мнение, и мнения всех интересующихся посетителей форума, т.к. вопрос, я считаю, очень интересным, и даже философским.
     
  16. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    Народ, я эту тему создавал не для споров, распрей, взаимообвинений и выявления истин. Просто в 1С достиг определенного уровня (когда ставиться задача и она каким-то образом реализуется - т.е. работает и ладно). Теперь же хочется разобраться глубже для того чтобы писать не просто код, который будет работать, а именно оптимальный "правильный" код. Так сказать для повышения образованности. Вот)
     
  17. etc

    etc Гость

    mialord На основании ваших заявлений, очевидно. Ну а если вы придрались к моим ошибкам - специательно сделанным, то тогда ваш опыт в Delphy, действительно о многом говорит. :)

    По существу вопроса, ну ок, если рассматривать программирование в целом, и не в связи с 1С, то таки я согласен по сути с vitfil.
    Писать надо учиться правильно и красиво сначала, потом будет айайай.

    В программировании этого нету, тут даже бывает, что 2+2<>4. О! ;)

    А ненадо разбираться, вот придете на работу к vitfil, или к такомуже, отгр*цензура*е сразу по самое неболуй, и все, на сим все разборки правильности канут в лету. это по дружески такой совет. ;)

    ммммм, цитата из приватного сообщения
    Извините, но с вами больше не о чем говорить.
     
  18. mialord

    mialord Гость

    Ну, я вам уже отписался по этому вопросу. Хочу добавить только один коммент, "правильный" или "оптимальный" код написать не сможет ни кто:). Все это враки. Для начала необходимо определиться что для вас значит слово "оптимальный", а как "правильно" писать не знает никто. Я стараюсь как - то откорректировать ошибки в написании кода, так как нахожу места, которые, как оказывается, может выполняться с более высокой скоростью, если к решению задачи подойти иначе, не так как я её видел ранее. Есть много книг и статей посвященных этим вопросам, но так как я начинал писать не под 1С, а на Delphi 4. Когда вышла Delphi 5 меня заинтересовали вопросы правильности написания программ в дельфях. Я тоже собирал теоретический материал, какие-то моменты мне приоткрыл автор Кенту "Программирование для профессионалов", но множество вот таких вот, как вы называете, неоптимальных зон, мне приходилось искать самому методом проб и ошибок, анализируя ранее написанные программы, и замечая, новым, более профессиональным взглядом, свои ошибки и недочеты.
    До сих пор, после большой самостоятельной работы, и после окончания факультета автоматизации (Разработка ПО для автоматизации деятельности предприяьтий), я не зкажу что научился писать "правильно", и я не скажу, что авторы книг научили меня писать правильно. Но я с большой уверенностью могу сказать, что я нахожу и исправляю, и стараюсь в дальнейшем не делать ошибки, совершенные мною ранее. Так что я возвращаюсь назад к старому посту и повторю еще раз. Нет теории которая Вас научит профессионализму, есть книги которые Вас могут напрвить в нужное русло. Но Ваш профессионализм - это ваши ошибки, и ваша критика написанного вами творения. Ваш профессионализм - это опыт, накопленнный врезультате решения конкретных поставленных перед вами задач, с самооценкой по выполненной вами работы.
    Например: Оцените конкретную свою работу на красоту её выполнения по 100 бальной шкале. Откройте её через месяц, и, возможно, Вы её оцените уже на 95% так как видите, что можно было сделать иначе, лучше, быстрее, полнее. Это и есть результат вашего роста. Это и есть результат вашей работы над собой. Ни какая книга не заменит этого (я не говорю что не надо в таком случае их читать, они направляют Вас в нужное русло развития (ни все книги, к сожалению, а меньшенство)), это ваше, личное, накопленное. Поэтому заявляю что профессионализм - это опыт, а не умная книжка. по этому и говорю надо работать над реальными задачами. По этому и говорю надо переоценивать свою работу, критиковать с какой - либо переодичностью, критиковать беспощадно и безжалостно, с новым взглядом, с новым опытом, приобретенным вами за последнее время, т.к. если Вы подняли этот вопрос - это значит, что Вы уже находили в своих програмных творчествах, то что уже хотите изменить, т.к. это не так, не то, это должно быть иначе. Это происходит потому что Вы растете, ваши познания расширяются, а Ваш опыт говорит Вам как лучше поступить в том или ином случае.
    Я всегда сравнивал программированием с исскуством. Пускай 1000 человек напишут одну и ту же картину, вложат в неё свои знания, опыт, а порой и душу. И вы не найдете 2 абсолютно одинаковых решения и это не потому что они читают разные книжки, факторов много, и об этом обо всем я не напишу на форуме, это книга и причем не одна, но ряд факторов Вы должны и сами осознавать. ВНИМАНИЕ: Это не относится к студентам институтов у которых две программы из двух абсолютно идентичны - это значит, что кто - то из них, а возможно и оба, не вложил в эту программу не только знания, но даже не проявил к ней минимум уважения :).
    Мда, пол книги получилось. Надеюсь я все же смог передать свои мысли, которые я отстаиваю в этой теме, если нет, прошу извенения за то что не смог, либо мне не дано, либо Вами не взято. Удачи в познании и в самоосознании. В этй теме пишу Вам жирное ПОКА т.к. для меня вопрос решен, я сам для себя нашел много ответов отвечая Вам, и это хорошо. :)
     
  19. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    Давайте вернмся в тему. Попрошу пожалуйста примеров. Вот стоит какая-то задача, ну скажем загрузить некие данные в бд. Понятно, что рисуется некая форма диалога и переходим к модулю. На каком этапе начинается использование процедур (кроме одной, которая привязанна к кнопке)? В смысле в какой последовательности следует "планировать" структуту модуля? надеюсь понятно объяснился?...
     
  20. vitfil

    vitfil IT-интегратор

    Регистрация:
    2 апр 2004
    Сообщения:
    2.062
    Симпатии:
    0
    Зато с ним весело!
     
Загрузка...

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