💩10 обязательных правил для начинающего программиста или как писать код, за который не стыдно?

  Рет қаралды 19,745

LabRazum | Виктор Осин

LabRazum | Виктор Осин

Күн бұрын

Пікірлер: 61
@ВладимирБороздин-ы8л
@ВладимирБороздин-ы8л 4 жыл бұрын
Очень полезная лекция. Внятно, без мычания, заикания. Всё последовательно и по делу. Спасибо
@islelectric3188
@islelectric3188 4 жыл бұрын
Спасибо за советы, очень полезные!!!
@colt2503
@colt2503 4 жыл бұрын
Виктор, предлагаю в следующем видео рассказать об оптимизации кода путем объявления типа переменных в зависимости от их реального размера. Другими словами если нужно определить логическую переменную STATE (состояние), то ее тип нужно указать как логический bool или целочисленный byte (оба этих типа ка не странно занимают в оперативной памяти МК по 1 байту) а не целочисленный int (2 байта) и тем более не как число с плавающей точкой типа float (4 байта). Так-же не лишним будет размещение строковых констант во флеш-памяти МК с целью значительной экономии оперативной памяти. Например при выводе текста в последовательный порт МК или на дисплей с помощью метода print("text") рекомендуется строковую константу "text" помещать во Flash память МК с помощью макроса F например вот так: Serial.print(F("text")). Так-же не лишним будет при выводе одиночного символа заключать его не в двойные кавычки как строковую константу, а в одинарные как символьную. Например: lcd.print('t'); А вообще лично мне очень нравится как пишет код Алекс Гайвер. Он очень грамотно использует директивы препроцессора для оперативного подключения/исключения частей одного и того-же кода перед его компиляцией в зависимости от имеющихся у пользователя условий. Например использование разных типов дисплеев (LCD1602 или LCD2004), часов реального (DS1302, DS1307, DS3231) и т.д. Вот тут у него это понятно расписано: alexgyver.ru/lessons/preprocessor/
@LabRazum
@LabRazum 4 жыл бұрын
Спасибо за комментарий! Да, тема очень полезная, включу в одно из своих видео.
@serg_tolstiy87
@serg_tolstiy87 4 жыл бұрын
За 7-ой совет спасибо!
@pan_electric
@pan_electric 4 жыл бұрын
Это что за бред, кто или что поставил дислайк!?? Красава дорогой, лайк и комментарии. Подозреваю что мне надо поменять фамилию на "Мартин" ибо успех видимо в коде в этом.
@Vlad-tn7ki
@Vlad-tn7ki 4 жыл бұрын
Всё правильно, спасибо!
@andrey_pav
@andrey_pav 4 жыл бұрын
Спасибо за видео. А на пикабу не обращай внимания, публика там заметно изменилась.
@LabRazum
@LabRazum 4 жыл бұрын
Спасибо! Решил публиковать там чисто для подписчиков, рейтинг для минусов пока есть :)
@AlyxXander
@AlyxXander 4 жыл бұрын
Теперь аудитория там - это кремлеботы
@daps9516
@daps9516 2 жыл бұрын
Виктор красава
@FrickUA
@FrickUA 2 жыл бұрын
Первый совет по делу, но он часто приводит к тому, что в макросы или глобальную область видимости переносят слишком много нарушая таким образом инкапсуляцию(тогда легко, поломать что то в програме случайно, поменял лед пин для какой то функции а оказалось что его 2 других использовало) Да и в принципе названия переменных заканчиваются, да и понять потом где именно этот лед_пин используется будет сложно. В данном случаи намного лучше сделать функцию blinkLed() а в ней определить переменную ледПин, тогда для замены пина достаточно будет изменить одну перемнную, то где она объявленя сразу покажет что используется она только здесь, а название функции будет дополнять название переменной.
@АнатолийСиницын-ц7й
@АнатолийСиницын-ц7й 3 жыл бұрын
Где найти примеры многоуровневых меню для 1602 шилда? Везде одно кнопкодавство под мигаца диодой.
@АндрейХлыновский
@АндрейХлыновский Ай бұрын
Сайт ЛабРазум как-то не сильно корректно работает. А на Степике ваши курсы купить нельзя?
@ВасисуалийПриветствует
@ВасисуалийПриветствует 4 жыл бұрын
Благодарю. А нельзя ли ссылки на упомянутые книги? И ещё очень хотелось бы, как начинающему, иметь какую то базу готовых (по крайней мере, часто употребляемых) названий функций и переменных, ведь не только у меня, думается, проблемы с английским правописанием и смыслопередачей... Как было бы здорово: выбрал название (у которого есть понятное русское объяснение и, возможно, пример употребления), скопировал, вставил в код... Думаю, было бы намного проще. Может где то такое уже реализовано?
@olexangrstetsiuk3092
@olexangrstetsiuk3092 4 жыл бұрын
Так что же такое - система контроля версий? А еще пользуясь вкладками в которых помещается универсальная часть кода, который можно использовать в иных проектах, хорошо бы глобальные переменные объявлять прямо во вкладке дописав static ( к примеру : static uint8_t) , и после достаточно скопировать полностью весь код из вкладки и вставить в новый проект, ничего дополнительного выискивать в объявлениях уже и не прийдётся.
@vrakitine
@vrakitine 7 ай бұрын
В Софтверной Инженерии, кроме парадигм и методологий программирования, я бы выделил еще и Миры ... В контексте софтверной инженерии, я со студентами обсуждаю интересный вопрос - а что первично Дырка или Тело бублика (алгоритм или код) Дырка порождает бублик или Тело бублика создаёт Дырку или Дырка уже до Тела бублика существовала? После чего мы переходим в обсуждению двух Миров софтверной инженерии: Алгоритмо-центричного и Кодо-центричного, по аналогии с нашим представлением, что вокруг чего вращается Солнце вокруг Земли или наоборот, Земля вращается вокруг Солнца. Очень интересно получается послушать их рассуждения на эту тему ) В v-agent oriented programming (VAOP) и в Автоматном Программировании и в model-driven engineering Алгоритмо-центричный мир и мы поддерживаем его своими методологиями, а для очень многих Солнце продолжает вращаться вокруг Земли и нет других вариантов) Вот, например, почитайте, что пишут представители кодо-центричного софтверного мира: "код и есть алгоритм. код реализует алгоритм. потому код документирует алгоритм автоматически." Вот такие ярые Кодо-центристы Джордано Бруно и сожгли )), за то, что тот сказал, что Земля не Центр Мироздания, а Алгоритм )) Лучше начать знакомство с VAOP с этой статьи на Medium: "Bagels and Muffins of Programming or How Easy It Is to Convert a Bagel into a Black Hole" или на Хабре: "Бублики и Коржики Программирования".
@arduinoprojekts0077
@arduinoprojekts0077 4 жыл бұрын
Здравствуйте вы по видео видно как хорошо разбираетесь, Прощу вас написать скечь или код я не знаю как называется правильно, чтобы через андроид управлять детским электромобилем, есть собранная схема то есть 4 полевика 2шт 3205 и 2шт 4905 с ними я сделал реверс но плавносьти нету потому что на затвор идет сразу большое напряжение а должно постепенно идти 3v начатся и до 12v не могу плавность сделать единственное что надо чтобы машинка набирала скорость плавно секунд 2-3 и астановилось тоже плавно секунд 1-1.5. ...И управление руля присутствовала плавность не нужна конечно рулю. Не игнорируйте меня пожалуйста. Вы наверное можете сказать учись сам прочитай книги, мне нужно поломанную машинку сделать для детей лето ведъ началось, и когда я научусь читать и писать программы дети уже подрастут, это первая причина, вторая я по себе знаю уже старался я не смогу его изучить в голову не лезет ни как ни пойму это вторая проблема, а для вас как я вижу по видео 5-7 минутная наверно работа и вы дадите малышам счастье тем чем наградил вас Бог а мне ардуино понадобился одинь раз в жизни и помоему больше не понадобится, из за этого наверное не стоит изучать достаточно попросить кто может это сделать. Я прощу напишите и скинце мне на почту shuha34567jw@gmail.com У меня есть ардуино uno купил и модуль блютуз HC05. Спасибо за ранее надеюсь поймете и поможете спасибо.
@Agritreid
@Agritreid 4 жыл бұрын
Это вам нужно скетч обычного ШИМ регулятора , у алекса Gаyver на канале есть то что вам нужно, вот нашол kzbin.info/www/bejne/qHTQkoCJiZ2kock
@arduinoprojekts0077
@arduinoprojekts0077 4 жыл бұрын
@@Agritreid Спасибо посмотрел начал догонять помогли успехов вам
@Vladislav55rus
@Vladislav55rus 4 жыл бұрын
Что такое контроль версий и как этим пользоваться?
@VitaliyZlobin
@VitaliyZlobin 2 жыл бұрын
Ещё, наравне с этими книгами, рекомендуется "Стив Макконнелл - Совершенный код"
@nazarolshevskii5482
@nazarolshevskii5482 4 жыл бұрын
Еще есть книга с красочным названием "Программирования без дураков" Катрин Пассиг, Йоханнес Яндер. Но слишком на этом не стоит зацикливаться, как по мне. Одну прочел, структурировал свод правил для себя в блокнотик (есть готовый тута- shwanoff.ru/principles-of-development/ ) и перед сном каждый день прочитывать после или перед молитвой))). Кроме того хорошим тоном считается соблюдать длину рядков и формат и количество отступов( к примеру для Python это дело очень строго описано в PEP8, возможно и для C есть такое. Во всяком случае для того, чтобы вашим кодом можно было хотя бы поделится с другими - нужно отнестись к этому серьезно. Я не говорю уже о работе в команде с множеством программистов, которые за не читаемый код будут плевать вам в спину)
@Subaru-Club
@Subaru-Club 4 жыл бұрын
Грамотно, по полочкам разложил, спасибо, но есть люди которые как я касаются того же кода раз в год и нужно было в ролике упомянуть о комментариях. Вот собирал я инкубатор, не программист я и ардуинку очень редко беру в руки, от кривого, с моими руками из жопы кода спасают лишь комментарии)))
@rikenbaker1
@rikenbaker1 10 ай бұрын
Спасибо!
@місю
@місю 4 жыл бұрын
Спасибо за видео, правда не смог найти 5-го совета - за четвертым сразу следует 6-й.
@АндрейЛенин-п2у
@АндрейЛенин-п2у 3 жыл бұрын
он был закомментирован и скрыт для компиляции в видио😂
@zero_zet
@zero_zet 4 жыл бұрын
Всё по делу...
@FrickUA
@FrickUA 2 жыл бұрын
10 совет, "гит, гитхаб" гит это собственно система контроля версий, а гитхаб это ресурс/хостинг который предоставляет функционал гита только еще и как веб сервис. Странно видеть их "через запятую". Тогда уже либо git, svn либо github, gitlab:) Создаете файлик потом еще один, это не удобно..... Так и не понял в чем смысл vcs. Основные цели хронологически разбить свой код на разные задачи которые добавляются постепенно, сохраняя историю изменений, серьезные ide подсвечивают тот код который изменился именно сейчас что упрощает работу, собственно сохранить код где то в облаке, и делится им с остальными, и позволять болбшому кол-ву людей изменять код одновременно, создавая общий "продукт"
@Витальянец-и5т
@Витальянец-и5т 3 жыл бұрын
Ардуинщики, вопрос? К примеру, мы объявили с 1 по 10 пины как выход. Создаем цикл для переключения пинов for (int Pin = 1; Pin
@silentage6310
@silentage6310 2 жыл бұрын
правильнее, целых 3 байта сэкономишь, ничего не потеряв.
@Витальянец-и5т
@Витальянец-и5т 2 жыл бұрын
@@silentage6310 Спасибо! Я не специалист. Просто посматривая коды обратил внимание... Многие блогеры твердят, что переменные нужно правильно использовать, для экономии памяти. Но, сами в большинстве подобных случаев, в коде используют int. Если по условию, мы не превышаем от 0 - 255, должно быть byte. Потому я и уточнил. Ещё раз спасибо!
@eclipse9925
@eclipse9925 Жыл бұрын
Скотт Мейерс говорит вместо #define лучше использовать const
@daps9516
@daps9516 Жыл бұрын
Первое видео
@arduinoprojekts0077
@arduinoprojekts0077 4 жыл бұрын
с меня лайк и подписька
@АндрейЛукьянов-с3р
@АндрейЛукьянов-с3р 4 жыл бұрын
А ты можеш написать код ко всем домофонам
@АндрейВласов-п2п
@АндрейВласов-п2п 4 жыл бұрын
Комментарии нужны.
@LabRazum
@LabRazum 4 жыл бұрын
Безусловно, но всего должно быть в меру. Излишние комментарии только портят код и его дальнейшее обслуживание.
@clear-eyed-epiphany
@clear-eyed-epiphany 4 жыл бұрын
@@LabRazum вы на практике с таким сталкивались? Я не острю мне правда интересно. Из своего опыта заметил, что чаще неудобство возникает из-за отсутствия комментариев нежели устаревании его. Единственное комментарии нужно писать так, чтобы в комментарии было то чего нет в коде. Нужно хорошо понимать простую но не очевидную вещь - то что очевидно тебе далеко не означает, что это очевидно всем. Особенно, если комментарии разрешено писать на русском, то брезговать ими не стоит.
@Memshhe24
@Memshhe24 3 жыл бұрын
Создай программу для программистов на телефонах
@ololololo-l5z
@ololololo-l5z 4 жыл бұрын
Как нормальные люди создают переменные:"надо придумать имя"; как переменные создаю я:"закрыть глаза три раза покрутиться нашупать клаву три раза стукнуть eqe это кордината "y" у птицы на экране spfd5408 в игре флеппи бирд для ардуино надо не забыть иду спать завтра не могу понять ничего что понаписал";НЕ ШУТКА.
@LabRazum
@LabRazum 4 жыл бұрын
Как, по-вашему, еще можно улучшить свой код? Делитесь в комментариях и не забывайте подписываться на канал! Основные моменты в этом видео: 0:10 1. Пиши код для человека 1:00 2. Делай код гибким 3:33 3. Именуй правильно 4:46 4. Придерживайся стандартов 6:02 6. Одна функция = одна задача 6:42 7. Не повторяйся! Пиши функции 7:42 8. Написал? Перечитай! 8:17 9. Постоянно самообучайся 9:11 10. Используй системы контроля версий 5-й раздел касался комментирования программ - об этом поговорим немного позже :)
@ttlttl7749
@ttlttl7749 4 жыл бұрын
Хотелось бы узнать как правильно разделять код по файлам? Например разделить проект на 5 файлов .ini или .cpp
@FrickUA
@FrickUA 2 жыл бұрын
Совет 7, пример не очень. Для этого примера нужен цикл, хоть с функцией хоть без:) Ну и в своем же примере нарушили свой же совет про пин 13 и название переменных/макросов)) Ну и название функции, blinkLed подразумевает что мигать будет светодиод, а не любой переданый пин.
@Евгений-ф7д4п
@Евгений-ф7д4п 2 жыл бұрын
Не понятно как зарегистрироваться в разуме
@amurlamur3125
@amurlamur3125 4 жыл бұрын
☸☸☸☸
@MegaFallout13
@MegaFallout13 4 жыл бұрын
На счет пункта 6 категорически не согласен. Остальное норм.
@LabRazum
@LabRazum 4 жыл бұрын
Если писать коммент под каждой строчкой - зайдет другой человек, в попыхах исправляя баг заменит одну из строк, естественно, забив на изменение комментария, а вы потом полдня ищете почему это не работает, ведь в комментарии одно, а на практике - другое. Пояснять комментарием нужно только особо важные части кода или не стандартные приемы-велосипеды.
@MegaFallout13
@MegaFallout13 4 жыл бұрын
@@LabRazum Каждую строчку и необязательно комментировать. Бывает обращаешься к коду который сам написал несколько назад и очень недоволен собой если не оставил достаточного количества комментов - отнимается драгоценное время на погружение, особенно если есть вставки на низкоуровневом языке.
@clear-eyed-epiphany
@clear-eyed-epiphany 4 жыл бұрын
Не понял. 6 пункт это одна функция одна ответственность. Причем тут комментарии? Согласен с автором. Применяя принцип единственной ответственности, "чистые" функции и декларативный стиль как раз приводит к тому о чем упрощённо сказал автор.
@sonar_devices
@sonar_devices 2 жыл бұрын
Перестаньте делать ужасные ролики. Фоновая музыка просто жесть. Так получилось, что смотрел ролики не на ноуте, а на большом телевизоре с хорошей внешней акустикой. Напрягает пипец фоновая музыка. Жена из соседней комнаты пришла и попросила переключить ролик.
@wandemeir4394
@wandemeir4394 4 жыл бұрын
Код стайл, это не стандарт языка + в ардуино есть автоформатирование, пишите как хотите, потом делайте автоформотирование и все станет круто.
@wandemeir4394
@wandemeir4394 4 жыл бұрын
@@zhuk462 Как насчет аргументов? или у сеньеров ардуино это не принято? А вообще гуглим "c++ code style" сморим кто это написал и зачем. А по второму вопросу открываем arduino IDE, нажимаем правую кнопку мыши и выбираем "АвтоФормотирование", далее произойдет магия.
@wandemeir4394
@wandemeir4394 4 жыл бұрын
@@zhuk462 Да, не хочу вас расстраивать, но то что вы не используете ардино ide не делает вас тру кодером. Давайте попытаюсь совсем просто обьяснить, откройте свою трукодерскую ide и посмотрите на настройки автоформатирования. Какие там будет варианты? Я понимаю, найти эту настройку сложно, так что сделаю за вас (CUBEIDE все параметры дефолтные) Там будут варианты K&R, BSD, GNU... И это не название стандартов, это соглашения используемые для форматирования кода в этих областях/проектах. Вы наверное не очень понимаете концепцию аргументов, поэтому тут тоже вам помогу, аргументом против будет название стандарта С/C++ где описан код стайл. Ардуино IDE неплохо подходит для решения некоторой группы задач, Например прототипирование. Есть задачи которые просто быстрее реализовать таким способом. Вообщем не только для начинающих. А вообще речь шла не о том, для начинающих или нет, а о том что не плохо было бы понимать что и зачем ты делаешь не зависимо от IDE.
@wandemeir4394
@wandemeir4394 4 жыл бұрын
@@zhuk462 Тогда очень странно, что вам не известно что такое code style. Arduino хороша тогда, когда вам например притаскивают корпус конструктора, а в нем куча моторов энкодеров и прочих сенсоров, и вам нужно быстро дать фидбек по поводу работоспособности сборки. Берете макетку, ардуино и тестите все модули по очереди. Быстро и просто. Или Когда к вам пришол новый сенсор, нужно посмотреть что да как. Подрубаем к ардуино и смотрим в плоттер. Удобно и быстро.
@wandemeir4394
@wandemeir4394 4 жыл бұрын
​@@zhuk462 Ну наконец - то у профи заполыхало. Я уж начал думать, что зря это пишу. Я понял что вы все знаете, просто мне как аргумент не говорите, чтобы я подумал что вы просто ардуинщик, но на самом деле вы сеньер. Постмирония. Понял. Можно поинтересоватся, как вы выстрадали, то что нужно писать в профиссиональных средах? Какие среды профессиональные? те в которых код стайл выбирать не нужно? И какие конкретно фичи этих сред так сильно позволяют вам ускорить вашу разработку?
@wandemeir4394
@wandemeir4394 4 жыл бұрын
@@zhuk462 Удачи вам со своением кейла, или что вы там считаете тру ide. Истина лиш в том что ide это удел ардуинщиков. Нормальные люди делают свои системы сборки. Там make, cmake, gcc. Думаю вам не известно что это такое, ведь этих слов не встретишь пока ищищ заветную кнопку билд, в тру ide.
@stranger271271
@stranger271271 Жыл бұрын
Советы человека который пишет код не для компа а для человека. Испанский стыд
@IshuckShow
@IshuckShow 11 ай бұрын
Тоже с этого кринжанул)
@allmight8407
@allmight8407 10 ай бұрын
Сразу видно челиков с галер, которые не занимались поддержкой
-5+3은 뭔가요? 📚 #shorts
0:19
5 분 Tricks
Рет қаралды 13 МЛН
Непосредственно Каха: сумка
0:53
К-Media
Рет қаралды 12 МЛН
Vampire SUCKS Human Energy 🧛🏻‍♂️🪫 (ft. @StevenHe )
0:34
Alan Chikin Chow
Рет қаралды 138 МЛН
Программист, ты должен писать плохой код
21:51
ЧТО МЕШАЕТ ПИСАТЬ КОД НОВИЧКАМ
20:41
Как писать чистый код
25:56
Vlad Mishustin
Рет қаралды 26 М.
-5+3은 뭔가요? 📚 #shorts
0:19
5 분 Tricks
Рет қаралды 13 МЛН