Как стать автором
Обновить

Советы о том, как писать на С в 2016 году

Время на прочтение 20 мин
Количество просмотров 88K
Блог компании Inoventica Services Программирование *C *
Туториал
Перевод

Если бы язык С был оружием

От автора: Наброски для этой статьи появились еще в начале 2015 года, правда, до публикации материалов дело так и не дошло. Наконец, решив, что в ящике моего письменного стола от вышеупомянутого «черновика» не будет никакой пользы, представляю его вашему вниманию в исходном виде. Единственное, что изменилось в тексте – год, с 2015 на 2016.

И я всегда рад услышать комментарии по поводу необходимых исправлений, уточнений или даже ваши жалобы.

Итак, статья ...


Первое правило программирования на С – не используйте его, если можно обойтись другими инструментами.

Когда найти альтернативный метод не удается, самое время вспомнить о современных заповедях программиста.
Читать дальше →
Всего голосов 92: ↑84 и ↓8 +76
Комментарии 80

Примечания к статье «Как писать на С в 2016 году»

Время на прочтение 13 мин
Количество просмотров 28K
Программирование *C *
Туториал
Перевод

На самом деле так выглядел бы Ассемблер, если бы он был оружием, но с C тоже надо быть предельно аккуратным

От переводчика:
Данная публикация является переводом статьи-ответа на текст «How to C in 2016». Перевод последнего был опубликован мной в пятницу и вызвал, местами, неоднозначную реакцию сообщества. Наводку на данный «ответ», для поддержания обсуждения вопроса уже в рамках Хабра, дал пользователь CodeRush, за что ему отдельное спасибо.


Ранее в сети была опубликована статья «Программирование на С в 2016 году» с множеством полезных советов, среди которых, увы, были и не очень удачные идеи. Именно поэтому я решил прокомментировать соответствующие моменты. Пока я готовил новый материал, кто-то заметил, что за работу на C должны браться только ответственные программисты, в то время как безответственным хватит и других языков, в рамках которых имеется больше возможностей для совершенствования имеющихся навыков. Давайте разбираться в секретах специалистов своего дела.
Читать дальше →
Всего голосов 28: ↑26 и ↓2 +24
Комментарии 29

AndroidAudit. Ваше Android-приложение как место преступления

Время на прочтение 11 мин
Количество просмотров 11K
Разработка мобильных приложений *Разработка под Android *Тестирование мобильных приложений *
Перевод


От переводчика: оценка процесса и результата разработки — достаточно субъективная вещь, если не используется какая-либо мера весов. Можно долго спорить: табы или пробелы, git или mercurial, maven или gradle, но такие споры все равно скатываются к вкусовщине и каким-то частным случаям. Другое дело — соблюдение однородности проекта, вот это уже вполне себе измеримая величина.
Плохая методология лучше её отсутствия.
Помимо общих вещей, найдутся и специфические, присуще только мобильной разработке, только под Android. Pedro Vicente Gómez Sánchez из Karumi в своей работе разобрал по косточкам основные технические области и задал меткие вопросы для правильной, объективной оценки разработки для платформы Android. Если появится задача: оценить чужой проект, то рекомендую воспользоваться его методологией. Я воспользовался этой методологией, как чек листом. На выходе получился вполне понятный не профессионалу документ, где напротив каждой категории — конкретная величина соответствия правильности от 0 до 1.

Читать дальше →
Всего голосов 8: ↑8 и ↓0 +8
Комментарии 2

Стрелочный ад, или новый круг старой проблемы

Время на прочтение 3 мин
Количество просмотров 18K
JavaScript *
Из песочницы

Истоки


Когда-то давно JavaScript разработчики очень любили использовать анонимные функции (собственно и сейчас многие их любят использовать), и всё бы ничего, и код становится короче, и не надо придумывать очередное название для функции, но рано или поздно это превращается в “водопад функций” прочитать который вы сможете разве только в хорошем IDE и то немного поломав голову.


Читать дальше →
Всего голосов 40: ↑29 и ↓11 +18
Комментарии 50

Стильный код на Python, или учимся использовать Flake8

Время на прочтение 7 мин
Количество просмотров 135K
Блог компании DataArt Python *
Туториал

Автор: Анатолий Соловей, developer

Язык программирования Python очень востребован на современном рынке, он развивается изо дня в день, и вокруг него сложилось активное сообщество. Во избежание конфликтов между разработчиками-питонистами, создатели языка написали соглашение PEP 8, описывающее правила оформления кода, однако даже там отмечено, что:
Many projects have their own coding style guidelines. In the event of any conflicts, such project-specific guides take precedence for that project.

В результате добавления новых правил количество требований к оформлению кода увеличилось настолько, что удержать их в голове стало очень трудно. При этом обращение к гайдам может занимать много времени и отвлекать от процесса разработки.

За долгое время работы у программистов вырабатывается собственный стиль написания кода, предпочтения в стайлгайдах и прочие мелочи, которые оставляют авторскую печать на программах девелопера. Убедить разработчиков отказаться от привычных им кодстайлов очень сложно, но, даже если это удастся, велик шанс, что в их коде будут проскакивать старые фишки, добавленные в силу привычки.

Когда каждый апдейт проходит строгий код ревью, включающий в себя проверку стилей, подобные ошибки могут очень сильно замедлять процесс разработки. А если ошибки в итоге не заметят даже в процессе ревью, в системе контроля версий проекта очень скоро появится куча нечитаемого и непонятного кода.

На помощь в этом случае приходят линтеры — инструменты, контролирующие оформление кода в проекте. Именно они помогают поддерживать его чистоту и, в нашем случае, предотвращать создание коммитов, которые могут содержать ошибки. Я для контроля качества использую Flake8 и сейчас постараюсь объяснить, почему выбрал именно его, и расскажу, как его настроить, чтобы получить максимальный результат. Заинтересовались? Добро пожаловать под кат.
Читать дальше →
Всего голосов 28: ↑26 и ↓2 +24
Комментарии 16

Yapf — причесываем код Python автокорректором

Время на прочтение 2 мин
Количество просмотров 25K
Python *Проектирование и рефакторинг *
Туториал
В эпоху все большей популярности различных js и css linter'ов, не удивительно появление удобного линтера с автокоррекцией для Python.

Приветствуйте, Yapf — готовое решение, для превращения каши из строк во вполне читаемый код. И поверьте, он вам пригодится.

image
Читать дальше →
Всего голосов 23: ↑20 и ↓3 +17
Комментарии 17

FrontFest.Mix — 7 тем о кодстайле, WebGL, A/B, RON, шаблонизации, экосистеме JavaScript и жизни программиста

Время на прочтение 2 мин
Количество просмотров 4.4K
Блог компании 2ГИС Блог компании CodeFest CSS *JavaScript *HTML *


Можно не знать о модных технологиях, не думать о доступности сайтов, забивать на развитие экосистемы, но, кажется, через год-другой с таким подходом можно стать таксистом-программистом. Нам эта история не близка, поэтому на конференции FrontFest, кроме понятных всем потоков VYORSTKA и JS, мы заложили в программу поток MIX. Как ясно из названия, он для докладов, которые не вписываются в первые два потока — это выступления о кодстайле, производительности фронтенда, форматах данных, экосистеме JavaScript и развитии фронтендера как разработчика.
Почему это важно?
Всего голосов 33: ↑30 и ↓3 +27
Комментарии 0

Как мы контролируем качество кода в Браузере для Android. Лекция Яндекса

Время на прочтение 11 мин
Количество просмотров 14K
Блог компании Яндекс Open source *Совершенный код *Разработка под Android *Тестирование мобильных приложений *
Автор этой лекции — Константин Заикин kzaikin, руководитель группы разработки Яндекс.Браузера для Android в Санкт-Петербурге. Он рассказал об инструментах Android-разработчика и всей команды, а также о том, как справляться с legacy-кодом, публиковать большой проект вовремя и улучшать качество кода.


— Друзья, привет. Я очень рад, что вас так много сегодня пришло. Я приехал из Питера, в Яндексе работаю около шести лет. Успел засветиться в Картах, Такси, Метрике и Поиске. Уже два года я работаю над Яндекс.Браузером для Android.

Всего голосов 48: ↑43 и ↓5 +38
Комментарии 23

Не пишите лишнего

Время на прочтение 3 мин
Количество просмотров 59K
Программирование *Java *Совершенный код *ООП *

Все думают, что программист большую часть своего рабочего времени пишет код. Кроме самих программистов. Они знают, что большую часть времени они этот код читают. Читают, силясь понять, как же он работает, зачем он здесь написан и что с ним теперь делать.


Дольше всего приходится вычитывать не хитрые алгоритмы, и не решения с алгебраическими типами данных и монадами, а огромные куски простого кода: методы на 500 строк, скрипты на 1000 строк, классы на 1500 строк. Все они доставляют индустрии проблем не меньше, чем печально известное NullPointerException.

Читать дальше →
Всего голосов 95: ↑89 и ↓6 +83
Комментарии 182

Контрибьютим в Go с помощью статического анализатора go-critic

Время на прочтение 7 мин
Количество просмотров 3.5K
Open source *Программирование *Совершенный код *Go *Управление разработкой *


Вы, возможно, помните недавний анонс нового статического анализатора для Go под названием go-critic.


Я проверил с его помощью проект golang/go и отправил несколько патчей, которые исправляют некоторые найденные там проблемы.


В этой статье мы разберём исправленный код, а также будем мотивироваться отправлять ещё больше подобных изменений в Go.


Для самых нетерпеливых: обновляемый список трофеев.

Читать дальше →
Всего голосов 28: ↑26 и ↓2 +24
Комментарии 2

Пробелы победили. Перевод документации Kotlin Coding Conventions от JetBrains

Время на прочтение 18 мин
Количество просмотров 12K
Kotlin *
Перевод

Привет, Хабр! Предлагаю вашему вниманию авторский перевод страницы документации Kotlin Coding Conventions от JetBrains.


Оригинал документации

Читать дальше →
Всего голосов 21: ↑19 и ↓2 +17
Комментарии 5

Поднимаем читаемость кода в iOS разработке

Время на прочтение 3 мин
Количество просмотров 12K
Совершенный код *Разработка под iOS *Разработка мобильных приложений *Xcode *Swift *
Из песочницы
Представьте себе книгу, в которой нет деления на главы, а все идет без логической и смысловой разбивки, книгу, где нет абзацев, нет точек и запятых, книгу, где в первой строке рассказывается про одно, во второй про другое, в третьей опять про первое.

Представили?

Смогли бы вы понять, о чем книга?

Насколько быстро вы смогли бы найти интересующий вас отрывок?

Ваш код, как и содержание книги, нуждается в структурировании, чтобы код был легко читаемым и передавал заложенный в нем смысл.

В данной статье я покажу примеры по организации кода, в которых классы будут иметь одинаковую последовательность основных блоков и их разбивку.

Для удобства я буду использовать слово класс (class), но подразумевать любой вид типа (class, struct, enum).

Благодаря применению этих советов ваш код станет читабельным, что в дальнейшем обеспечит удобство и скорость работы с ним.
Всего голосов 22: ↑19 и ↓3 +16
Комментарии 29

Стандарты проектирования баз данных

Время на прочтение 8 мин
Количество просмотров 32K
Блог компании VK Анализ и проектирование систем *SQL *Проектирование и рефакторинг *IT-стандарты *
Перевод

Переходя от проекта к проекту, мы сталкиваемся, к сожалению, с отсутствием единообразных стандартов проектирования баз данных, несмотря на то, что SQL существует уже несколько десятилетий. Подозреваю, причина отчасти в том, что большинство разработчиков не понимают архитектуру БД. За годы моей работы по найму разработчиков, я лишь несколько раз встречал тех, кто мог корректно нормализовать базу данных. Честно говоря, это бывает сложной задачей, но многие разработчики, которых я собеседовал, даже прекрасно владеющие SQL, не имели навыков проектирования БД.

Эта статья не про нормализацию БД. Если хотите этому научиться, то здесь я вкратце рассказал основы.

Если у вас есть рабочая БД, то нужно ответить себе на вопрос: «какие стандарты можно применить для облегчения использования этой базы данных?». Если эти стандарты применялись широко, то вам будет легко пользоваться БД, потому что не придётся изучать и запоминать новые наборы стандартов каждый раз, начиная работу с новой БД.
Читать дальше →
Всего голосов 61: ↑50 и ↓11 +39
Комментарии 53

Чистим код в Angular. Готовим ESLint, codelyzer, stylelint, husky, lint-staged и Prettier

Время на прочтение 8 мин
Количество просмотров 21K
Блог компании TINKOFF Разработка веб-сайтов *Angular *

Если вам не приходилось работать в команде, то, возможно, вы еще не используете эти вещи, а кто-то даже не знает про них. Работая один, вы сами себе хозяин.


Как только начали работать в команде  —  ситуация резко меняется. Если нет договоренностей, то каждый начинает писать код в таком стиле, в каком умеет. И даже если вы все же собрались и обсудили на словах codestyle на проекте и даже записали где-то, это, скорее всего, не поможет решить проблему, и вот почему.


Читать дальше →
Всего голосов 21: ↑20 и ↓1 +19
Комментарии 1

Системный подход к переменным в Ansible

Время на прочтение 7 мин
Количество просмотров 7K
Блог компании Мир Plat.Form (НСПК) Системное администрирование *DevOps *
Туториал

ansible devops codestyle


Hey! Меня зовут Денис Калюжный я работаю инженером в отделе автоматизации процессов разработки. Каждый день новые сборки приложений раскатываются на сотнях серверов кампании. И в этой статье я делюсь опытом использования Ansible для этих целей.


Этот гайд предлагает способ организации переменных в деплое. Рассчитан данный гайд на тех кто уже использует роли в своих плейбуках и читал BestPractices, но сталкивается с подобными проблемами:


  • Найдя переменную в коде, невозможно сходу понять за что она отвечает;
  • Есть несколько ролей, и переменные нужно связать одним значением, но никак не получается;
  • Возникают трудности в объяснении другим, как устроена логика переменных в ваших плейбуках

С этими проблемами мы столкнулись на проектах в нашей компании, в следствие чего мы пришли к правилам оформления переменных в наших плейбуках, которые в какой-то мере решили эти проблемы.


image

Читать дальше →
Всего голосов 8: ↑8 и ↓0 +8
Комментарии 10

Руководство по стилю Kotlin для Android разработчиков (Часть I)

Время на прочтение 6 мин
Количество просмотров 7.1K
Совершенный код *Разработка под Android *Kotlin *

Данная статья охватывает не только эстетические вопросы форматирования, но и другие типы соглашений и стандартов, которые необходимо знать Android разработчику.

Основной фокус, в первую очередь, на жестких правилах, которым следуют Google разработчики повсеместно!

Сначала я думал, что статья будет небольшой, но из-за слишком колоссального количества примеров кода она достаточно выросла.

Поэтому я решил разделить её на две части.

Обе части содержат описание стандартов кода на языке программирования Kotlin.

Читать далее
Всего голосов 8: ↑5 и ↓3 +2
Комментарии 10

Руководство по стилю Kotlin для Android разработчиков (Часть II)

Время на прочтение 4 мин
Количество просмотров 5.6K
Совершенный код *Разработка под Android *Kotlin *

В принципе, я согласен с комментариями, что данная тема излишняя, так как существуют автоматические инструменты форматирования кода

И к тому же у каждого своё мнение о красоте и эстетичности, поэтому coding style носит субъективный характер.

Но я все таки решил закончить данную серию статей по Kotlin стилю, как и обещал.

Возможно кому-нибудь пригодится.

Ну что ж прошу под кат!

Читать далее
Всего голосов 3: ↑3 и ↓0 +3
Комментарии 2

Заметки о codestyle

Время на прочтение 3 мин
Количество просмотров 2.9K
Программирование *

Довольно часто сталкиваюсь с одним вопросом касательно кода: "Почему написано именно так, а не так?". И я объясняю чем это обусловлено, после чего слушаю мнение оппонента, вследствие чего принимаю решение либо продолжать следовать своим установкам, либо менять на более лучший вариант.

Именно потому что этот вопрос постоянно на устах, решил составить эдакую заметку с некоторыми примерами и объяснениями.

Читать далее
Всего голосов 15: ↑4 и ↓11 -7
Комментарии 50

Прочти меня: код, который не выбесит соседа

Время на прочтение 10 мин
Количество просмотров 26K
Блог компании Яндекс Программирование *Совершенный код *C++ *Лайфхаки для гиков


Сегодня поговорим о том, как писать код, чтобы он не злил окружающих и не раздражал вас спустя годы работы, когда вы снова попытаетесь его прочесть.

Я расскажу о подходах, которые мы используем в Яндекс.Такси для написания читаемого кода на C++, Python, JavaScript и других языках.
Читать дальше →
Всего голосов 67: ↑58 и ↓9 +49
Комментарии 75

Single quotes black

Время на прочтение 2 мин
Количество просмотров 6.3K
Python *
Из песочницы

Когда проект на python долгое время живет без правил по формату строк, то в один прекрасный момент оказывается, что 90% кода используют одинарные кавычки, а 10% - двойные.

Добавление flake8-quotes с соответствующими правилами перестало пускать новый код с двойными кавычками дальше пул-реквеста, но начало требовать ручной правки формата в уже существующем коде, чего хотелось бы избежать.

Первой мыслью было задействовать black, но предлагаемый им формат предполагает исключительно использование двойных кавычек. В 2018 в github black был запрос Single quotes option формата строк, обсуждение было жарким, но закончилось оно лишь введением опции --skip-string-normalization, позволявшей не трогать формат строк в проверяемом коде.

Вот что для этого потребовалось
Всего голосов 13: ↑10 и ↓3 +7
Комментарии 39
1