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

  Переглядів 18,143

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

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

4 роки тому

Как перестать писать плохой код и начать жить? В этом видео говорю о частых ошибках начинающих в подходе к написанию программ и даю 10 полезных советов.
Группа ВК: lrazum
Страница автора в Instagram: / viktor_osin_
------------------------------------------------------------------------------------
Online-курс "Основы электроники": edu.labrazum.ru/
Купон на 10% скидку: RAZUM2020
------------------------------------------------------------------------------------

КОМЕНТАРІ: 59
@user-to9sp7tp7w
@user-to9sp7tp7w 3 роки тому
Очень полезная лекция. Внятно, без мычания, заикания. Всё последовательно и по делу. Спасибо
@islelectric3188
@islelectric3188 4 роки тому
Спасибо за советы, очень полезные!!!
@serg_tolstiy87
@serg_tolstiy87 4 роки тому
За 7-ой совет спасибо!
@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 роки тому
Спасибо за комментарий! Да, тема очень полезная, включу в одно из своих видео.
@Vlad-tn7ki
@Vlad-tn7ki 4 роки тому
Всё правильно, спасибо!
@user-us5mb6yl9g
@user-us5mb6yl9g 3 роки тому
Благодарю. А нельзя ли ссылки на упомянутые книги? И ещё очень хотелось бы, как начинающему, иметь какую то базу готовых (по крайней мере, часто употребляемых) названий функций и переменных, ведь не только у меня, думается, проблемы с английским правописанием и смыслопередачей... Как было бы здорово: выбрал название (у которого есть понятное русское объяснение и, возможно, пример употребления), скопировал, вставил в код... Думаю, было бы намного проще. Может где то такое уже реализовано?
@rikenbaker1
@rikenbaker1 2 місяці тому
Спасибо!
@daps9516
@daps9516 Рік тому
Виктор красава
@zero_zet
@zero_zet 4 роки тому
Всё по делу...
@andrey_pav
@andrey_pav 4 роки тому
Спасибо за видео. А на пикабу не обращай внимания, публика там заметно изменилась.
@LabRazum
@LabRazum 4 роки тому
Спасибо! Решил публиковать там чисто для подписчиков, рейтинг для минусов пока есть :)
@AlyxXander
@AlyxXander 4 роки тому
Теперь аудитория там - это кремлеботы
@Subaru-Club
@Subaru-Club 4 роки тому
Грамотно, по полочкам разложил, спасибо, но есть люди которые как я касаются того же кода раз в год и нужно было в ролике упомянуть о комментариях. Вот собирал я инкубатор, не программист я и ардуинку очень редко беру в руки, от кривого, с моими руками из жопы кода спасают лишь комментарии)))
@FrickUA
@FrickUA Рік тому
Первый совет по делу, но он часто приводит к тому, что в макросы или глобальную область видимости переносят слишком много нарушая таким образом инкапсуляцию(тогда легко, поломать что то в програме случайно, поменял лед пин для какой то функции а оказалось что его 2 других использовало) Да и в принципе названия переменных заканчиваются, да и понять потом где именно этот лед_пин используется будет сложно. В данном случаи намного лучше сделать функцию blinkLed() а в ней определить переменную ледПин, тогда для замены пина достаточно будет изменить одну перемнную, то где она объявленя сразу покажет что используется она только здесь, а название функции будет дополнять название переменной.
@olexangrstetsiuk3092
@olexangrstetsiuk3092 4 роки тому
Так что же такое - система контроля версий? А еще пользуясь вкладками в которых помещается универсальная часть кода, который можно использовать в иных проектах, хорошо бы глобальные переменные объявлять прямо во вкладке дописав static ( к примеру : static uint8_t) , и после достаточно скопировать полностью весь код из вкладки и вставить в новый проект, ничего дополнительного выискивать в объявлениях уже и не прийдётся.
@pan_electric
@pan_electric 4 роки тому
Это что за бред, кто или что поставил дислайк!?? Красава дорогой, лайк и комментарии. Подозреваю что мне надо поменять фамилию на "Мартин" ибо успех видимо в коде в этом.
@arduinoprojekts0077
@arduinoprojekts0077 4 роки тому
с меня лайк и подписька
@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
@user-sk5wz3hi8t
@user-sk5wz3hi8t 2 роки тому
Где найти примеры многоуровневых меню для 1602 шилда? Везде одно кнопкодавство под мигаца диодой.
@user-iv3nw6kt2w
@user-iv3nw6kt2w 3 роки тому
Спасибо за видео, правда не смог найти 5-го совета - за четвертым сразу следует 6-й.
@user-lj9bp7hj3d
@user-lj9bp7hj3d 3 роки тому
он был закомментирован и скрыт для компиляции в видио😂
@nazarolshevskii5482
@nazarolshevskii5482 4 роки тому
Еще есть книга с красочным названием "Программирования без дураков" Катрин Пассиг, Йоханнес Яндер. Но слишком на этом не стоит зацикливаться, как по мне. Одну прочел, структурировал свод правил для себя в блокнотик (есть готовый тута- shwanoff.ru/principles-of-development/ ) и перед сном каждый день прочитывать после или перед молитвой))). Кроме того хорошим тоном считается соблюдать длину рядков и формат и количество отступов( к примеру для Python это дело очень строго описано в PEP8, возможно и для C есть такое. Во всяком случае для того, чтобы вашим кодом можно было хотя бы поделится с другими - нужно отнестись к этому серьезно. Я не говорю уже о работе в команде с множеством программистов, которые за не читаемый код будут плевать вам в спину)
@VitaliyZlobin
@VitaliyZlobin Рік тому
Ещё, наравне с этими книгами, рекомендуется "Стив Макконнелл - Совершенный код"
@Vladislav55rus
@Vladislav55rus 4 роки тому
Что такое контроль версий и как этим пользоваться?
@eclipse9925
@eclipse9925 9 місяців тому
Скотт Мейерс говорит вместо #define лучше использовать const
@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 на канале есть то что вам нужно, вот нашол ukposts.info/have/v-deo/qnOelYOKi26izJs.html
@arduinoprojekts0077
@arduinoprojekts0077 4 роки тому
@@Agritreid Спасибо посмотрел начал догонять помогли успехов вам
@FrickUA
@FrickUA Рік тому
10 совет, "гит, гитхаб" гит это собственно система контроля версий, а гитхаб это ресурс/хостинг который предоставляет функционал гита только еще и как веб сервис. Странно видеть их "через запятую". Тогда уже либо git, svn либо github, gitlab:) Создаете файлик потом еще один, это не удобно..... Так и не понял в чем смысл vcs. Основные цели хронологически разбить свой код на разные задачи которые добавляются постепенно, сохраняя историю изменений, серьезные ide подсвечивают тот код который изменился именно сейчас что упрощает работу, собственно сохранить код где то в облаке, и делится им с остальными, и позволять болбшому кол-ву людей изменять код одновременно, создавая общий "продукт"
@daps9516
@daps9516 10 місяців тому
Первое видео
@user-gp4cd3nl1d
@user-gp4cd3nl1d 2 роки тому
Ардуинщики, вопрос? К примеру, мы объявили с 1 по 10 пины как выход. Создаем цикл для переключения пинов for (int Pin = 1; Pin
@silentage6310
@silentage6310 2 роки тому
правильнее, целых 3 байта сэкономишь, ничего не потеряв.
@user-gp4cd3nl1d
@user-gp4cd3nl1d 2 роки тому
@@silentage6310 Спасибо! Я не специалист. Просто посматривая коды обратил внимание... Многие блогеры твердят, что переменные нужно правильно использовать, для экономии памяти. Но, сами в большинстве подобных случаев, в коде используют int. Если по условию, мы не превышаем от 0 - 255, должно быть byte. Потому я и уточнил. Ещё раз спасибо!
@FrickUA
@FrickUA Рік тому
Совет 7, пример не очень. Для этого примера нужен цикл, хоть с функцией хоть без:) Ну и в своем же примере нарушили свой же совет про пин 13 и название переменных/макросов)) Ну и название функции, blinkLed подразумевает что мигать будет светодиод, а не любой переданый пин.
@user-ij2wt2to1t
@user-ij2wt2to1t 4 роки тому
Комментарии нужны.
@LabRazum
@LabRazum 4 роки тому
Безусловно, но всего должно быть в меру. Излишние комментарии только портят код и его дальнейшее обслуживание.
@clear-eyed-epiphany
@clear-eyed-epiphany 3 роки тому
@@LabRazum вы на практике с таким сталкивались? Я не острю мне правда интересно. Из своего опыта заметил, что чаще неудобство возникает из-за отсутствия комментариев нежели устаревании его. Единственное комментарии нужно писать так, чтобы в комментарии было то чего нет в коде. Нужно хорошо понимать простую но не очевидную вещь - то что очевидно тебе далеко не означает, что это очевидно всем. Особенно, если комментарии разрешено писать на русском, то брезговать ими не стоит.
@Memshhe24
@Memshhe24 2 роки тому
Создай программу для программистов на телефонах
@user-fq1ni9en1t
@user-fq1ni9en1t 4 роки тому
А ты можеш написать код ко всем домофонам
@logic4519
@logic4519 3 роки тому
Как нормальные люди создают переменные:"надо придумать имя"; как переменные создаю я:"закрыть глаза три раза покрутиться нашупать клаву три раза стукнуть eqe это кордината "y" у птицы на экране spfd5408 в игре флеппи бирд для ардуино надо не забыть иду спать завтра не могу понять ничего что понаписал";НЕ ШУТКА.
@user-yi3mb1ks6k
@user-yi3mb1ks6k 2 роки тому
Не понятно как зарегистрироваться в разуме
@MegaFallout13
@MegaFallout13 4 роки тому
На счет пункта 6 категорически не согласен. Остальное норм.
@LabRazum
@LabRazum 4 роки тому
Если писать коммент под каждой строчкой - зайдет другой человек, в попыхах исправляя баг заменит одну из строк, естественно, забив на изменение комментария, а вы потом полдня ищете почему это не работает, ведь в комментарии одно, а на практике - другое. Пояснять комментарием нужно только особо важные части кода или не стандартные приемы-велосипеды.
@MegaFallout13
@MegaFallout13 4 роки тому
@@LabRazum Каждую строчку и необязательно комментировать. Бывает обращаешься к коду который сам написал несколько назад и очень недоволен собой если не оставил достаточного количества комментов - отнимается драгоценное время на погружение, особенно если есть вставки на низкоуровневом языке.
@clear-eyed-epiphany
@clear-eyed-epiphany 3 роки тому
Не понял. 6 пункт это одна функция одна ответственность. Причем тут комментарии? Согласен с автором. Применяя принцип единственной ответственности, "чистые" функции и декларативный стиль как раз приводит к тому о чем упрощённо сказал автор.
@amurlamur3125
@amurlamur3125 3 роки тому
☸☸☸☸
@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.
@sonar_devices
@sonar_devices Рік тому
Перестаньте делать ужасные ролики. Фоновая музыка просто жесть. Так получилось, что смотрел ролики не на ноуте, а на большом телевизоре с хорошей внешней акустикой. Напрягает пипец фоновая музыка. Жена из соседней комнаты пришла и попросила переключить ролик.
@stranger271271
@stranger271271 6 місяців тому
Советы человека который пишет код не для компа а для человека. Испанский стыд
@IshuckShow
@IshuckShow 3 місяці тому
Тоже с этого кринжанул)
@allmight8407
@allmight8407 2 місяці тому
Сразу видно челиков с галер, которые не занимались поддержкой
Принцип хорошего кода DRY (dont repeat yourself)
16:20
Sergey Nemchinskiy
Переглядів 70 тис.
ОДИН ДОМА #shorts
00:34
Паша Осадчий
Переглядів 3,8 млн
Eurovision Song Contest 2024: First Semi-Final (Live Stream) | Malmö 2024 🇸🇪
2:23:45
когда одна дома // EVA mash
00:51
EVA mash
Переглядів 9 млн
Программист, ты должен писать плохой код
21:51
Как в 44 года стать программистом на Python. Объясняю с чего начать.
19:32
Клуб дедов-программистов
Переглядів 985 тис.
КАК ЧИТАТЬ И ПОНИМАТЬ С/C++ КОД?
8:21
Winderton
Переглядів 180 тис.
Уроки Arduino #1 - структура программы и типы данных
7:27
Заметки Ардуинщика
Переглядів 1,1 млн