15 и более самых лучших методов написания суперчитаемого кода


Содержание материала:

Оформление кода PHP: стандарты и правила

Восемь общих правил

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

  1. Придумывайте понятные и читаемые названия. Избегайте русских слов в латинской транскрипции. Только английские слова, обозначающие суть.
  2. Делайте отступы на каждом уровне и отделяйте логические блоки пустой строкой.
  3. Сокращайте вложенность кода и убирайте дублирование.
  4. Контролируйте длину. Рекомендуем для функций не более 20 строк, для метода не более 50 строк, для класса не более 300 строк, для файла — не более 1000 строк. Также ограничивайте длину одной строки до видимого значения на экране. Мягкое ограничение составляет 120 символов.
  5. Комментируйте и документируйте код. Это позволит зафиксировать всю необходимую информацию.
  6. Используйте рефакторинг. Следуйте принципу «рефакторинг — раньше и рефакторинг — чаще». Советуем также прочитать книгу «Рефакторинг. Улучшение проекта существующего кода» Мартина Фаулера.
  7. Работайте в системе контроля версий, например, Git. Это бесплатно и удобно. Обучиться работать в ней можно за 11 занятий на видеокурсе «Git. Быстрый старт».
  8. Изучайте Open Source код. Вы сможете увидеть, как пишут ведущие разработчики и воспользоваться лучшими практиками в программировании.

Правила кода PHP

На конец 2020 г. действуют стандарты PHP программирования: PSR-2 и PSR-1. Они устанавливают правила синтаксиса, именования, оформления. Весь код должен быть написан единообразно. Это касается пробелов, отступов, скобок, строк.

Чтобы не запоминать все требования стандартов, можно работать в современной среде разработки — PhpStorm, NetBeans и подобных. Они позволяют автоматически форматировать текст в соответствии с правилами.

Отступы

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

Запомните: один отступ = четыре пробела.

Выделяем отступами тело конструкции, тело метода, блоки импорта, аргументы и подобное.

Правильно

Неправильно

Пробелы

  • между for ( foreach/ while / catch) и (
  • после ;
  • между ) и <
  • перед =>
  • после =>
  • между try и <
  • между > и catch
  1. После имени метода.
  2. В списке аргументов перед запятыми.
  3. Между ( и именем функции или метода.

Пустая строка

  1. После каждого логического блока.
  2. После определения пространства имен.
  3. После блока импорта. Каждая строка блока должна начинаться с use.

Правильно

Неправильно

Круглые скобки

  1. Не выносим на отдельные строки.
  2. Не ставим пробелы внутри: после ( и перед ).
  3. Ставим пробелы до скобок и после.
  4. Внутри перечисление отделяем пробелами.

Фигурные скобки

  1. Открывающая фигурная скобка выносится на новую строку перед телом метода, для классов.
  2. Открывающая фигурная скобка не выносится на отдельную строку в конструкциях и замыканиях.
  3. Закрывающая скобка > в конструкциях, имени метода, определении метода, классах пишется с новой строки и отделяется одним отступом.

Аргументы

Оформляются двумя способами: в одну строку через запятую или в столбик. Аргументы на одной строке пишутся через запятую внутри круглых скобок. Пробел ставится только после запятой.

Правильно

Неправильно

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

Правильно

Неправильно

Конструкция switch case

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

Если в конструкции не используется break, поставьте // no break.

Правильно

Неправильно

Конструкция try catch

Тело try и тело catch отделяются одним отступом. Пробелы нужно поставить:

  • между try и <
  • между > и catch
  • между catch и (
  • между ) и <

Catch и скобку > ставим на одну строку.

Правильно

Неправильно

Конструкция if, elseif, else

Операторы и открывающую фигурную скобку пишем на одной строке. Закрывающую фигурную скобку оператора пишем на той же строке, что и оператор. Заключительную фигурную скобку пишем на отдельной строке. Оператор else if пишем как единое слово — elseif. Тело оператора отделяем отступом.

Правильно

Неправильно

Комментарии в коде

Чистый код должен быть правильно закомментирован. К сожалению, встречаются две крайности: подробное комментирование каждой строки и полное отсутствие комментариев. И то, и другое мешает в работе. Избыточное комментирование снижает восприятие кода, отвлекает от понимания его сути. Писать очевидные вещи — тратить свое и чужое время. Иногда из-за слишком подробных комментариев объем кода увеличивается в несколько раз. Закончив с кодом, посмотрите критически. Очевидные и банальные комментарии удалите.

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

Больше информации о комментариях вы найдете в статье «Почему комментарии в коде — зло». А если вы считаете, что код — не место для шуток, предлагаю подборку самых забавных комментариев программистов.

Чек-лист «Инспекция кода»

Предлагаем чек-лист для самостоятельной проверки чистоты кода. Если вы будете инспектировать чужой код, помните, что программист — творческая профессия. А творческие люди обычно тяжело воспринимают критику. Будьте лояльней.

  • Легко ли воспринимать код визуально?
  • Присутствуют ли комментарии? насколько они необходимы?
  • Соответствует ли код стандартам PSR-1 и PSR-2? Краткая выжимка стандартов приведена в разделе “Правила кода PHP”.
  • Используете ли вы систему документирования phpDoc или подобную?
  • Нужно ли делать перерыв в чтении, чтобы разобраться в написанном?
  • Проведен ли рефакторинг?
  • Есть ли дублирование в блоках, функциях и пр.?
  • Понятны ли названия переменных, имена методов и пр.?
  • Какова длина строк, методов, функций, классов, файла?
  • Вы искали ошибки и баги?
  • Как можно еще улучшить код?
  • Можно ли сделать его короче?
  • Можно ли сделать его эффективней?

Желательно провести тестирование. Руководствуйтесь тремя принципами:

  1. Тесты должны быть полными.
  2. Тесты должны соответствовать установленным требованиям.
  3. Тесты должны проводиться на нужном уровне тестирования.

Дополнительную информацию по тестированию вы найдете в материале «Тестирование кода для чайников».

Заключение

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

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

Следование единым правилам упрощает работу программистов. Оформление кода PHP по одному стандарту помогает в командной работе и повышает уровень разработки. Понятие «качественный код» появилось не случайно, так же, как и анекдоты о неспособности спустя время прочитать даже собственный код. Понятный структурированный код сокращает время чтения, позволяет сразу приступить к поиску проблемы.

Восемь общих правил

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

  1. Придумывайте понятные и читаемые названия. Избегайте русских слов в латинской транскрипции. Только английские слова, обозначающие суть.
  2. Делайте отступы на каждом уровне и отделяйте логические блоки пустой строкой.
  3. Сокращайте вложенность кода и убирайте дублирование.
  4. Контролируйте длину. Рекомендуем для функций не более 20 строк, для метода не более 50 строк, для класса не более 300 строк, для файла — не более 1000 строк. Также ограничивайте длину одной строки до видимого значения на экране. Мягкое ограничение составляет 120 символов.
  5. Комментируйте и документируйте код. Это позволит зафиксировать всю необходимую информацию.
  6. Используйте рефакторинг. Следуйте принципу «рефакторинг — раньше и рефакторинг — чаще». Советуем также прочитать книгу «Рефакторинг. Улучшение проекта существующего кода» Мартина Фаулера.
  7. Работайте в системе контроля версий, например, Git. Это бесплатно и удобно. Обучиться работать в ней можно за 11 занятий на видеокурсе «Git. Быстрый старт».
  8. Изучайте Open Source код. Вы сможете увидеть, как пишут ведущие разработчики и воспользоваться лучшими практиками в программировании.

Правила кода PHP

На конец 2020 г. действуют стандарты PHP программирования: PSR-2 и PSR-1. Они устанавливают правила синтаксиса, именования, оформления. Весь код должен быть написан единообразно. Это касается пробелов, отступов, скобок, строк.

Чтобы не запоминать все требования стандартов, можно работать в современной среде разработки — PhpStorm, NetBeans и подобных. Они позволяют автоматически форматировать текст в соответствии с правилами.

Отступы

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

Запомните: один отступ = четыре пробела.

Выделяем отступами тело конструкции, тело метода, блоки импорта, аргументы и подобное.

Правильно

Неправильно

Пробелы

  • между for ( foreach/ while / catch) и (
  • после ;
  • между ) и <
  • перед =>
  • после =>
  • между try и <
  • между > и catch
  1. После имени метода.
  2. В списке аргументов перед запятыми.
  3. Между ( и именем функции или метода.

Пустая строка

  1. После каждого логического блока.
  2. После определения пространства имен.
  3. После блока импорта. Каждая строка блока должна начинаться с use.

Правильно

Неправильно


Круглые скобки

  1. Не выносим на отдельные строки.
  2. Не ставим пробелы внутри: после ( и перед ).
  3. Ставим пробелы до скобок и после.
  4. Внутри перечисление отделяем пробелами.

Фигурные скобки

  1. Открывающая фигурная скобка выносится на новую строку перед телом метода, для классов.
  2. Открывающая фигурная скобка не выносится на отдельную строку в конструкциях и замыканиях.
  3. Закрывающая скобка > в конструкциях, имени метода, определении метода, классах пишется с новой строки и отделяется одним отступом.

Аргументы

Оформляются двумя способами: в одну строку через запятую или в столбик. Аргументы на одной строке пишутся через запятую внутри круглых скобок. Пробел ставится только после запятой.

Правильно

Неправильно

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

Правильно

Неправильно

Конструкция switch case

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

Если в конструкции не используется break, поставьте // no break.

Правильно

Неправильно

Конструкция try catch

Тело try и тело catch отделяются одним отступом. Пробелы нужно поставить:

  • между try и <
  • между > и catch
  • между catch и (
  • между ) и <

Catch и скобку > ставим на одну строку.

Правильно

Неправильно

Конструкция if, elseif, else

Операторы и открывающую фигурную скобку пишем на одной строке. Закрывающую фигурную скобку оператора пишем на той же строке, что и оператор. Заключительную фигурную скобку пишем на отдельной строке. Оператор else if пишем как единое слово — elseif. Тело оператора отделяем отступом.

Правильно

Неправильно

Комментарии в коде

Чистый код должен быть правильно закомментирован. К сожалению, встречаются две крайности: подробное комментирование каждой строки и полное отсутствие комментариев. И то, и другое мешает в работе. Избыточное комментирование снижает восприятие кода, отвлекает от понимания его сути. Писать очевидные вещи — тратить свое и чужое время. Иногда из-за слишком подробных комментариев объем кода увеличивается в несколько раз. Закончив с кодом, посмотрите критически. Очевидные и банальные комментарии удалите.

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

Больше информации о комментариях вы найдете в статье «Почему комментарии в коде — зло». А если вы считаете, что код — не место для шуток, предлагаю подборку самых забавных комментариев программистов.

Чек-лист «Инспекция кода»

Предлагаем чек-лист для самостоятельной проверки чистоты кода. Если вы будете инспектировать чужой код, помните, что программист — творческая профессия. А творческие люди обычно тяжело воспринимают критику. Будьте лояльней.

  • Легко ли воспринимать код визуально?
  • Присутствуют ли комментарии? насколько они необходимы?
  • Соответствует ли код стандартам PSR-1 и PSR-2? Краткая выжимка стандартов приведена в разделе “Правила кода PHP”.
  • Используете ли вы систему документирования phpDoc или подобную?
  • Нужно ли делать перерыв в чтении, чтобы разобраться в написанном?
  • Проведен ли рефакторинг?
  • Есть ли дублирование в блоках, функциях и пр.?
  • Понятны ли названия переменных, имена методов и пр.?
  • Какова длина строк, методов, функций, классов, файла?
  • Вы искали ошибки и баги?
  • Как можно еще улучшить код?
  • Можно ли сделать его короче?
  • Можно ли сделать его эффективней?

Желательно провести тестирование. Руководствуйтесь тремя принципами:

  1. Тесты должны быть полными.
  2. Тесты должны соответствовать установленным требованиям.
  3. Тесты должны проводиться на нужном уровне тестирования.

Дополнительную информацию по тестированию вы найдете в материале «Тестирование кода для чайников».

Заключение

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

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

Оптимальное кодирование

Читайте также:

  1. IX. Логические основы ЭВМ. Кодирование данных в ЭВМ
  2. Алфавитное кодирование
  3. Генетический код и его свойства. Кодирование генетической информации.
  4. Двоичное кодирование
  5. Двоичное кодирование звука
  6. Двоичное кодирование информации
  7. Двоичное кодирование текстовой информации.
  8. Декодирование и восстановление сигнала
  9. Декодирование команд, переименование ресурсов и диспетчеризация
  10. Информационные процессы (кодирование данных, структуры данных, хранение данных, сжатие данных).
  11. Канальное кодирование
  12. Код. Кодирование информации.

Кодирование

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

Коды, представляющие первичные алфавиты с неравномерным распределением символов, имеющие среднюю минимальную длину кодового слова во вторичном алфавите, называются оптимальными неравномерными кодами (ОНК).

Эффективность ОНК оценивают при помощи двух коэффициентов:

1. коэффициента статического сжатия

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

2. коэффициента относительной эффективности

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

Из свойств оптимальных кодов вытекают принципы их построения:

— выбор каждого кодового слова необходимо производить так, чтобы содержащееся в нем количество информации было максимальным,

— буквам первичного алфавита, имеющим большую вероятность, присваиваются более короткие кодовые слова во вторичном алфавите.

Принципы оптимального кодирования определяют методики построения оптимальных кодов.

I. Построение ОНК по методике Шеннона-Фано для ансамбля из M сообщений сводится к следующей процедуре:

1) множество из M сообщений располагают в порядке убывания вероятностей;

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

3) первой группе присваивают символ 0, второй группе символ 1;

4) каждую из подгрупп делят на две группы так, чтобы их суммарные вероятности были по возможности равны;

5) первым подгруппам каждой из групп вновь присваивают 0, а вторым — 1, в результате чего получают вторые цифры кода. Затем каждую из четырех подгрупп вновь делят на равные (с точки зрения суммарной вероятности) части и т. д. До тех пор, пока в каждой из подгрупп останется по одной букве.

Функция Med находит медиану указанной части массива Р [b..e], т.е. определяет такой индекс m (bm

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

Решение. Так вероятности данного ансамбля сообщений равны p1 = = p2 = . = p8 = 2 -3 и порядок их расположения не играет роли, то расположим их так, как показано в таблице 2.1.1. Затем разбиваем данное множество на две равновероятные группы. Первой группе в качестве первого символа кодовых слов присваиваем 0, а второй — 1. Во второй колонке таблицы записываем четыре нуля и четыре единицы. После чего разбиваем каждую из групп еще на две равновероятные подгруппы. Затем каждой первой подгруппе присваиваем 0, а второй — 1 и записываем в третью колонку таблицы. Далее каждую из четырех подгрупп разбиваем на две равновероятные части и первой из них присваиваем 0, а второй — 1. Таким образом в четвертой колонке появится значение третьего символа кодовых слов.

Таблица 5.4 – Оптимальный код равновероятных букв

Буква Кодовое слово полученное после разбиения
первого второго третьего
А1 А2 А3 А4 А5 А6 А7 А8

Проверка оптимальности кода осуществляется путем сравнения энтропии кодируемого (первичного) алфавита со средней длиной кодового слова во вторичном алфавите.

Для рассматриваемого примера энтропия источника сообщений

а среднее число двоичных знаков на букву кода

где li — длина i-ой кодовой комбинации; pi — вероятность появления i-го символа комбинации длиной в li.

Таким образом, H = L, т. е. код является оптимальным для данного ансамбля сообщений.

Вывод: Для ансамблей равновероятных сообщений оптимальным является равномерный код. Если число исходных элементов ансамбля равно целой степени двух, то всегда H = L.

Пример. Первичный алфавит состоит из 8 символов со следующими вероятностями появления: a1 = 0,5; a2 = 0,25; a3 = 0,098; a4 = = 0,052; a5 = 0,04; a6 = 0,03; a7 = 0,019; a8 = 0,011. Построить ОНК по методу Шеннона — Фано и подсчитать коэффициенты.

Решение проиллюстрируем в таблице 5.5.

Таблица 5.5 – Оптимальный код неравновероятных букв

ai pi Кодовое слово после разбиения Знаков lipi
0,5 0,5
0,25 0,5
0,098 0,392
0,052 0,208
0,04 0,16
0,03 0,15
0,019 0,114
0,011 0,066

Недостатком методики Шеннона – Фано является неоднозначность построения ОНК. В методике Хаффмена этого недостатка нет.

ІІ. Хаффмен предложил следующий метод построения ОНК:

1) Символы первичного алфавита выписываются в порядке убывания вероятностей.

2) Последние n символов, где 2 £ n £ m и N — n / m — 1 — целое число, объединяют в некоторый новый символ с вероятностью, равной сумме вероятностей объединяемых символов.

3) Последние символы с учетом образованного символа вновь объединяют и получают новый, вспомогательный, символ.

4) Опять выписывают символы в порядке убывания вероятноьстей с учетом вспомогательного символа и т. д. До тех пор, пока вероятности m оставшихся символов после N — n/m — 1-го выписывания не дадут в сумме 1.

На практике обычно не производят многократного выписывания вероятностей символов, а обходятся элементарными геометрическими построениями, суть которых для кодов с числом качественных признаков m = 2 сводится к тому, что символы кодируемого алфавита попарно объединяются в новые символы, начиная с символов, имеющих наименьшую вероятность, а затем, с учетом вероятностей вновь образованных символов, опять производят попарное объединение символов с наименьшими вероятностями и таким образом строят двоичное кодовое дерево, в вершине которого стоит символ с вероятностью 1.

Построить методом Хаффмена оптимальный код для алфавита со следующим распределением вероятностей появления букв в тексте: A = 0,5; B = 0,15; C = 0,12; D = 0,1;

Сначала находят буквы с наименьшими вероятностями 0,02 (H) и 0,03 (G), затем проводят от них линию к точке, в которой вероятность появления буквы G равна 0,05. Затем берут две наименьшие вероятности 0,04 (F) и 0,04 (E) и получают новую точку с вероятностью 0,08.

Теперь наименьшими вероятностями обладают точки, соответствующие вспомогательным символам с вероятностями 0,05 и 0,08. Соединяем их линией с новой точкой, соответствующей вспомогательному символу с вероятностью 0,13.

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


Обозначим каждую верхнюю линию (см. рисунок 2.1.1) цифрой 1, а нижнюю — цифрой 0. Получим ОНК, который для каждого слова представляет собой последовательность нулей и единиц, которые встречаются по пути к данному слову от конечной точки (1,00).

Полученные коды представлены в таблице 5.6.

Таблица 5.6 – Двоичный код Хаффмена для восьми сообщений

Буква Вероятность ОНК Число знаков в кодовом слове pili
A B C D E F G H 0,50 0,15 0,12 0,10 0,04 0,04 0,03 0,02 0 0 1 0 1 1 0 1 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0,50 0,45 0,36 0,30 0,20 0,20 0,15 0,10
Топ-пост этого месяца:  Анимированный фон с JavaScript-библиотекой ParticlesJS

Построить код Хаффмена для передачи сообщений при помощи трех частот f1, f2, f3, если символы первичного алфавита встречаются в сообщениях со следующими вероятностями: А = 0,24; Б = 0,18; В = 0,38;

Таблица 5.7 – Троичный код Хаффмена для семи сообщений

Буква Вероятность Дерево Код
В А Б Г Д Е Ж 0,38 0,24 0,18 0,1 0,06 0,02 0,02 f1 f2 f3f1 f3f2 f3f3f1 f3f3f2 f3f3f3

Полученный код легко декодируется, так как ни один код не начинается с f1 и f2, кроме одного одноразрядного кода.

К недостаткам алгоритма относятся:

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

второй – непостредственно для кодирования.

2. Необходимость хранения вместе с сжатым файлом декодирующего дерева для возможности восстановления файла.

Дата добавления: 2014-01-06 ; Просмотров: 6953 ; Нарушение авторских прав? ;

Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет

Как писать красивый и читаемый код?

Эти пункты только для понимания проблемы, потому что многие забыл, а многие и не замечал, думаю. А также на эти пункты с одной стороны очень легко ответить, а с другой хотелось бы правил или детального разбора. Так вот, есть ли правила гласные/негласные, в которых бы описывалось это и многое другое в этом направлении? Или есть книги посвященные этой теме?

7 ответов 7

Вопрос стиля — на самом деле очень серьёзный вопрос.

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

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

Хороший код живёт долго, а значит, он будет прочитан, подправлен, понят и объяснён много раз. Понимание чужого кода гораздо сложнее, чем написание нового с нуля, поэтому инвестировать в понятность кода важно (если, конечно, вы желаете своему коду долгой счастливой жизни).

Сокращение кода не нужно. Код должен быть понятным, не больше и не меньше.

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

Именование переменных и функций. Не жалейте букв! Байты на винчестере подешевели. Вы не должны писать комментарии, чтобы пояснить смысл переменной, иначе читатель должен видеть одно (имя переменной), а в уме держать другое (её смысл). С другой стороны, не надоедайте читателю излишними подробностями. То, что у вас не просто acceptableByteCount , а countOfBytesWhichDidNotPassAtLeastTwoFilters , — скучно. Соблюдайте разумный баланс. Если вам нужна переменная цикла, назовите её i или j . Придерживайтесь общепринятых соглашений, если нужно, придумывайте свои (но разумные!), легко понятные другим.

Именуйте переменные правильно. Название должно отображать смысл. Если вы используете одну и ту же переменную в двух разных смыслах, вы делаете неправильно, разделите её на две переменные с однозначным смыслом. Например, не стоит совмещать длину переданной строки и счётчик оставшихся символов для обработки, хотя начальное значение счётчика и совпадает с длиной строки.

Старайтесь, чтобы текст читался естественно. Например, имя действия должно бы быть глаголом (не vector.Normalization() , а vector.Normalize() или vector.GetNormal() ). Имя булевого условия должно быть похоже на условие и скорее всего начинаться с is , has и тому подобного. (Например: hasChanges() , isPrime() и т. п.) Ради бога, используйте английские имена, а не русские транслитом! Поверьте, isZarplataComputed() смотрится ужасно. Исключение — языки с кириллическим синтаксисом (1с?) или общепринятый стиль команды.

Разделение действий. Да, имеет смысл отделять код в функцию только для того, чтобы правильно назвать этот фрагмент кода. Функции существуют не для повторного использования! Функции нужны для логического разбиения кода на части. Если вы видите, что ваша функция ответственна за разные вещи, и вы не можете придумать ей короткого точного названия, значит, ваша функция делает чересчур много, и её надо разделить. Часто из супердлинной функции в 500 строк получается десяток классов. И это хорошо.

И да, читателю гораздо лучше понять функцию, которая делает одну простую задачу. Если функция делает слишком много, у неё кроме более сложного кода более сложные пред- и постусловия (а значит, её ещё сложнее понять).

Для хорошего разбиения на части проектируйте сверху вниз. Пример: приготовить еду — это что? Решаем, что это значит приготовить французский завтрак. Окей, а что такое приготовить французский завтрак? Это купить круассаны и сварить кофе. А что такое сварить кофе? Это смолоть зёрна в кофемолке, засыпать в турку, добавить воды, поместить на огонь, и т. д. Это естественным образом оформляется в процедуры PrepareMeals , PrepareFrenchBreakfast , BuyCroissants , MakeCoffee . Ничего выдумывать не пришлось.

Уместность комментариев. Старайтесь писать код так, чтобы комментарии не были нужны. Очень часто комментарии избыточны; очень часто они устаревают и перестают отображать действительность. Люди часто меняют логику кода, но забывают пробежаться и по комментариям.

Не забывайте, что выполняется код, а не комментарии. Поэтому ошибочный, вводящий в заблуждение комментарий (например: /* здесь не может получиться NULL */ ) гораздо хуже его отсутствия. Если у вас есть кусок кода, снабжённый комментарием, объясняющим, что он делает, превратите этот код в функцию, а комментарий — в её имя. Полностью избежать комментариев, вероятно, не удастся, но постарайтесь, чтобы комментарии описывали, почему вы делаете так, как делаете, а что именно вы делаете, должно быть понятно из кода.

Форматирование. Плохое форматирование очень сильно влияет на читаемость кода. Выработайте стиль и придерживайтесь его. Какой именно стиль вы выберете, в общем-то и не важно, главное, чтобы он был логичен и последователен. (Например, если вы ставите пробел после while , наверное стоит ставить пробел и после if .) Старайтесь, тем не менее, не отступать от общепринятых соглашений (например, имена методов в Java принято выбирать в lowerCamelCase), иначе вам трудно будет читать чужой код.

Если вы работаете в команде, не нарушайте общий стиль, даже если вам персонально он не нравится. Если в команде нету общепринятого стиля, предложите его! Расстановка скобок, отступы, пробелы, максимальная длина строк и всё такое важны, чтобы читатель не отвлекался. Непоследовательное форматирование сбивает с толку и отвлекает гораздо больше, чем это кажется — точно так же, как неправильная пунктуация мешает правильно понимать текст литературного произведения.

И последнее. Не заботьтесь о повышении эффективности кода путём понижения его читаемости. Выделение отдельного метода — не проблема, современные компиляторы научились inline-ить всё, что нужно. И объединять разные переменные в один регистр они скорее всего умеют гораздо лучше вас. Если же в каком-то месте ради низкоуровневой оптимизации действительно нужно ухудшить читаемость, снабдите этот фрагмент достаточными комментариями по поводу того, что же происходит в коде, и самое главное — почему такой трюк понадобился.

5 Игр, чтобы научиться писать код

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

Учиться кодировать могут не только программисты, но и любой, кто пожелает, ведь не существует ограничений по возрасту, как и то, когда можно начать или закончить изучать программирование. Приобретенные навыки могут помочь, если вы планируете изменить свою карьеру, или просто, если хотите получить новые знания. Навыки программирования могут изменить вашу жизнь раз и навсегда. Многие работодатели в наши дни предпочитают нанять кого-то с подобными навыками, потому что они находятся в лучшем положении для того, чтобы противостоять и бороться с проблемами повседневной жизни. Человек, у которого больше навыков, особенно тех, которые касаются технологий, не будет стоять на месте и отворачиваться от вызовов, потому как он имеет все необходимое, чтобы принять нужные меры и двигаться вперед. Вот некоторые игры, которые могут помочь вам узнать, как кодировать.

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

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

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

Это удивительное пространство, где программисты могут практиковать свои навыки разработки, чтобы увидеть, насколько хорошо они развиваются. Игра поддерживает JavaScript, Python, PHP, Java, Ruby и другие популярные языки программирования, используемые сегодня. Это бесплатная онлайн платформа кодирования, которая доступна для всех, кто имеет интерес к программированию. Вы можете создавать новую сессию вашей практики каждый раз, когда вы входите в игру. Это отличный способ, чтобы практиковать программирование, параллельно получая удовольствие от самой игры.

Это платформа, которая предоставляет учащимся возможность освоить некоторые компьютерные науки, наслаждаясь веселым препровождением времени, играя в настоящую игру. Это целое сообщество, участники которого вызвались добровольно создавать уровни, через которые игроки должны пройти. Игра предлагает поддержку Java, JavaScript, Coffee Script, Lua и Python. В игре, вы научитесь программировать с помощью живой мульти-пользовательской стратегии кодирования. Это отличный способ для новичков, чтобы начать. The code combat до сих пор известен, как самая увлекательная игра для тех, кто хочет научиться программированию. Хорошая новость заключается в том, что платформа является доступной для каждого, поэтому нет никаких ограничений относительно того, кто может обучаться кодированию.

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

Основы программирования: как начать писать код

Окончил курс по языку программирования, но писать код не научился. С подобным сталкиваются многие новички. Пользователи Reddit описывают проблему так:

  • Я прошёл онлайн‑курс по Python, но всё равно не знаю, как написать полноценную программу.
  • Я знаю теорию, но не могу применить её на практике.
  • Я знаю, что такое цикл while, но не знаю, как и в каких случаях использовать его.

Разбираемся, в чём может быть проблема и как её решить.

Проблема: искусственная среда программирования

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

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

Проблема: чрезмерные руководства

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

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

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

Синтаксис — это просто набор символов, которые используются для определённого языка программирования. Можно провести параллель с естественными языками: умение написать и произнести фразу на французском “S’il vous plaît” не имеет смысла, если вы не знаете её значения.

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

Решение 1: использовать реальные среды разработки

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

Узнайте, какой редактор чаще всего используют для выбранного вами языка, и установите его. Тщательно изучите его работу: как создать проект, запустить код, какие есть горячие клавиши и сокращения.

Напишите код, сохраните его и запустите — это будет вашим первым серьёзным шагом, ведь именно так работают настоящие разработчики.

Решение 2: писать код с нуля

Достаточно подсказок и инструкций! Начните с пустого файла, в который вы добавите каждую строку кода самостоятельно.

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

Не копипастите чужой код. Если вы используете работающих чужой код — вы ничему не научитесь. Изучайте чужой код, но не копируйте!

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

Решение 3: писать много кода, очень много кода

Программирование — не теоретическая дисциплина: чтения книг, просмотра учебных видео и выполнения тренировочных упражнений недостаточно, чтобы освоить её. Чтобы научить программировать, нужно написать тысячи строк кода.

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

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

Решение 4: просить о помощи

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

Сделать это можно на сайтах вопросов и ответов для разработчиков, самый известный — Stackoverflow, который существует в англоязычной и русскоязычной версиях. Не забывайте: хороший программист должен владеть английским языком, ведь это основной язык разработчиков всего мира, и ответ вы быстрее найдёте или получите именно на нём.

Чтобы получить корректный ответ на свой вопрос, стоит научиться правильно составлять запрос:

  1. Скопируйте сообщение об ошибке, которое выводится в редакторе и укажите его в вопросе.
  2. Нет сообщения об ошибке, объясните, какого результата вы ожидаете от работы программы, и что происходит при её запуске на самом деле.
  3. Вставьте фрагмент кода, укажите код полностью в посте, если он небольшой. Если большой — используйте Github Gist или Pastebin и укажите ссылку на код.
  4. Отформатируйте код. Не вставляйте его обычным текстом, используйте редактор кода.
  5. Напишите, что вы уже пытались сделать с кодом.
  6. Используйте корректную терминологию — в этом вам поможет изучение теории.

Программирование — непростое занятие, которое требует реальной заинтересованности и способности часами думать над решением задачи. Если вы воспользуетесь решениями из статьи и не передумаете становиться разработчиком — вы действительно готовы ступить на эту стезю.

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

Как писать чистый и красивый код

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

Роберту Мартину удалось идеально описать измерение качества кода кода:

Единственным ценным измерением качества кода является WTF/мин.

Объясню чуть подробнее. Когда я провожу code review, у меня бывает только три эмоции:

  1. WTF (с отвращением) — этот код не нужен.
  2. WTF (с восхищением) — этот человек умен.
  3. WTF (раздраженно) — эту ерунду невозможно разобрать.

Что же влияет на нас первым делом, когда мы видим любой код? Это чистота и красота его написания. Создание чистого и красивого кода — это знак отличного мастера.

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

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

Начните с имени

Кендрик Ламар отлично сказал:

Если я захочу рассказать реальную историю, то я начну со своего имени.

Названия находятся в программе повсеместно. Мы называем наши функции, классы, аргументы и много других вещей. Мы называем файлы с исходниками, директории и всё, что внутри них. Мы постоянно придумываем новые имена, пока они не начинают засорять наш чистый код.

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

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

Функции должны делать одну вещь

Луис Салливан однажды сказал:

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

Существует только два золотых правила создания чистых функций:

  • Они должны быть небольшими
  • Они должны делать одну вещь и делать ее хорошо


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

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

Комментарии не исправят плохой код

Винус Уильямс заметила:

Каждый оставляет свои комментарии. Так рождаются слухи.

Комментарии — это обоюдоострый нож. Хорошо размещенный комментарий может быть очень полезен. Но с другой стороны, ничего так не засорит код, как бесполезные комментарии. И ничего не может так распространять дезинформацию, как комментарии.

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

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

Форматирование кода — всегда приоритет

Форматирование кода — это коммуникация, а коммуникация — это приоритет для профессионального разработчика, — отмечает Роберт Мартин.

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

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

Топ-пост этого месяца:  Редко используемые CSS селекторы nth-child, first-line, empty и другие

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

Сначала напишите try-catch-finally

Жорж Кангилем правильно сказал:

Ошибаться — это по-человечески, постоянно ошибаться — это бесчеловечно.

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

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

Один из способов добиться этого — правильное размещение всех ошибок в блоках try-catch. Эти блоки определяют объем вашего кода. Когда вы выполняете часть кода в части try, вы утверждаете, что это выполнение может прерваться в любой момент времени и продолжиться в catch.

Поэтому, когда вы пишете код, хорошей практикой будет начать с утверждения try-catch-finally. Это поможет вам определить, чего ожидает пользователь, независимо от того, что произойдет неправильно с кодом в секции try.

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

Заключение

Каким словом можно обобщить все сказанное здесь?

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

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

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

Подвести итог можно словами Гарольда Абельсона:

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

Для начинающего копирайтера: 15 книг о секретах написания гениальных текстов

Написание текстового контента – одна из наиболее востребованных отраслей фриланса. Эта сфера готова принять талантливых начинающих авторов, вне зависимости от наличия у них филологического образования.

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

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

Благодаря нашей подборке вы:

  • шаг за шагом пройдете все этапы написания статей;
  • узнаете действенные схемы манипуляции сознанием пользователя;
  • разберетесь, что из себя представляет SEO-текст;
  • научитесь убеждать и продавать словами.

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

1. «Контент, маркетинг и рок-н-ролл»

Денис Каплунов

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

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

2. «Клад для копирайтера. Технология создания захватывающих текстов»

Элина Слободянюк

«Настольная книга для копирайтера», литературный дебют Элины Слободянюк, чуть ли не с типографского станка перекочевала в рейтинги самых лучших учебников по написанию текстов. «Клад. » является своеобразным продолжением, периодически дублирующим истины, озвученные автором в приквеле.

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

3. «Продающие тексты. Как превратить читателя в покупателя»

Сергей Бернадский

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

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

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

4. «Копирайтинг. Как не съесть собаку»

Дмитрий Кот

Толмуд «Как не съесть собаку» определенно входит в лучшие книги по копирайтингу. Дмитрий Кот впервые вывел в широкие массы определение «эффективность продающего контента». Согласно его экспертному мнению, показателем профессионализма автора становится наличие плана создания результативного текстового материала.

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

5. «Деловая e-mail переписка. Пять правил успеха»

Тамара Воротынцева

Лично для меня побуждающим фактором прочесть книгу «Деловая e-mail переписка» было ознакомление со списком регалий автора. Кто, как не практикующий бизнес-тренер, среди клиентов которого числятся крупнейшие компании стран СНГ (Яндекс, Japan Tobacco International и другие), сможет рассказать о принципах общения с партнерами.

Многим копирайтерам пригодятся шаблоны для e-mail рассылок, перечень стандартных фраз и ключевых моментов для создания писем. На мой взгляд, теории маловато, но недостаток правил с лихвой покрывает обилие примеров.

6. «Пишем убедительно. Сам себе копирайтер»

Саша Карепина

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

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

7. «Искусство убеждать словами: как пишутся гениальные тексты»

Линдсей Кемп

Пускай вас не вводит в заблуждение слово «пишутся». В основном в книге Линдсей Кемп пойдет речь о методах изучения целевой аудитории. Зная, кому предназначен текст, гораздо проще подобрать подходящие слова.

Для меня составление психологического портрета потребителя представляло колоссальную сложность. Попытки найти адекватное пошаговое руководство разбивались о стену из сотен узкоспециализированных экономических статей. Благодаря Кемп мне стало проще ориентироваться в запросах клиентов и я меньше переделываю статьи из-за «несоответствия интересам целевой аудитории».

8. «77 секретов копирайтинга. Тексты, которые продают»

Андрей Парабеллум

Очень маленькая книжка, без детального разжевывания информации. Взяв на вооружение «77 секретов копирайтинга» вы будете действовать по схеме – подсмотрел, внедрил, продал. Конечно же, любителям пространственных рассуждений не понравится словесная скупость автора, но те, кто хочет узнать фишки профессионалов придет в восторг от манеры изложения.

В ходе работы над заказами я прибегаю к советам Андрея Парабеллума снова и снова. Вам тоже недосуг держать в голове лишние данные? Тогда вы согласитесь, что приятно и удобно иметь под рукой своеобразный идейный чек-лист.

9. «Мастерская рекламного текста»

Аластер Кромптон

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

Притягательные заголовки перестанут внушать благоговейный трепет. Составление слоганов и нейминг из сложных задач превратятся в рутинную работу. Учтите, хорошие книги по маркетингу, написанные успешными продвиженцами, можно пересчитать по пальцам одной руки, поэтому «Мастерская рекламного текста» не должна пройти мимо вас.

10. «Первая книга SEO-копирайтера. Как написать текст для поисковых машин и пользователей»

О. И. Крохина, М. Н. Полосина, А. В. Рубель и др.

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

Сегодня ситуация переменилась. Обновленные алгоритмы ранжирования учитывают поведение живого пользователя на сайте. Необходимость сочетать правила SEO-оптимизации с характеристиками ценного контента усложнили жизнь web-писателям. Группа авторов создала одну из самых полезных книг по основам копирайтинга, в которой вы найдете ответы на самые животрепещущие вопросы касательно интернет-статей.

11. «Продающий контент. Как связать контент-маркетинг, SEO и социальные сети в единую систему»

Ли Одден

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

Ли Одден ратует за объединение разрозненных частей интернета в единый, мощный инструмент для продвижения продукта. Он написал практическое руководство по созданию грамотной маркетинговой стратегии. Прочитав книгу «Продающий контент» вы станете на голову выше конкурентов.

12. «Как писать так, чтобы вам доверяли»

Кеннет Роуман и Джоэл Рафаэльсон

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

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

13. «Копирайтинг: тексты, которые продаются»

Зарина Судорогина

Сразу хочу предупредить взыскательного читателя об огромном количестве опечаток в издании 2013 года. Виной всему недобросовестная работа сотрудников издательского дома «Феникс». Если абстрагироваться от ошибок и неточностей, то информативная составляющая книги призывает аплодировать автору стоя.

Зарина Судорогина в доступной форме объяснят современные маркетинговые приемы. После прочтения вы не сможет удержаться от анализа телевизионных роликов и слоганов рекламных кампаний. Акцент сделан на создании «живых» текстов, ориентированных на захват и удержание целевой аудитории.

14. «Выбор имени, и все о нейминге»

Нейл Тейлор

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

Наименование рекламного контента не должно вызывать негативных ассоциаций у потребителя. В набор слов необходимо красиво внедрить бренд. Если маркетинговая кампания рассчитана на зарубежный рынок, то вам следует учитывать культурные особенности целевой аудитории. В противном случае вас ожидает провал аналогичный трагикомическому фиаско маркетеров Coca-cola в Саудовской Аравии.

15. «Гипнотические рекламные тексты»

Джо Витале

Сравнительно старая книга (впервые опубликована в 1995 году) не теряет актуальности и поныне. Если вы переживаете период упадка творческих сил, то Джо Витале заразит вас позитивом и натолкнет на новые идеи. Автору действительно удается писать гипнотические тексты. Главы его работы не отпускают с первых строк.

Следуя рекомендациям Джо Витале, вы начнете за считанные минуты составлять хлесткие слоганы и будете со скоростью звука строчить деловые письма. Клиенты ваших заказчиков, словно завороженные нажмут на иконку «Купить».


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

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

Инструкция для тех, кто хочет стать программистом с нуля

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

Начать свой путь к карьере программиста стоит с ответа на вопрос, нужно ли вам программирование вообще? Этот вопрос не относится к тем, кто учится или учился по специальности, близкой к программированию. Если вам в школе математика давалась лучше, чем гуманитарные науки, если вам нравится проводить много времени за компьютером, если вам хочется изучать что-то новое, тогда программирование вам подойдёт.

С чего начать

Есть несколько вариантов развития событий, в результате которых человек становится программистом. Первый — родители-программисты, которые всему научили своих детей. Таким детям даже не нужно идти в университет. Второй вариант — модная профессия программиста. После школы нужно было выбрать, куда пойти учиться, и выбрали модное направление IT, вроде бы понравилось. И последний вариант — хобби, которое переросло в работу.

Если с вами ничего из вышеперечисленного не произошло, значит, у вас есть выбор из четырёх вариантов:

  • Самообразование. Этот вариант можно использовать как самостоятельно, так и в паре с другими методами. В интернете полно сайтов, книг и приложений, которые помогают изучать различные языки программирования и технологии. Но это самый тяжёлый путь для начинающих.
  • Университет. Если вы оканчиваете школу и хотите быть программистом, тогда идите в университет. Если не за знаниями, тогда за корочкой. Она может послужить бонусом при устройстве на работу. Хотя и какие-то знания вы тоже получите. Но не забывайте заниматься и самообучением. К выбору вуза стоит подойти очень ответственно. Внимательно изучите программы обучения и выбирайте лучшие технические вузы.
  • Ментор. Будет очень неплохо, если вы найдёте человека, который согласится помочь вам и направит вас в правильную сторону. Он подскажет подходящие книги и ресурсы, проверит ваш код, даст полезные советы. Кстати, мы уже писали о полезном ресурсе, где вы сможете найти ментора. Наставника можно искать среди знакомых программистов, на IT-тусовках и конференциях, на онлайн-форумах и так далее.
  • Специализированные практические курсы. Попробуйте поискать в своём городе курсы, где вас обучат какому-нибудь языку программирования или технологии. Я был приятно удивлён количеством таких курсов в Киеве, в том числе бесплатных и с последующим трудоустройством.

Какой язык, технологию и направление выбрать

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

  • Наличие на рынке вакансий. Конечная цель этого пути — найти работу программистом. А это будет трудно сделать, если на рынке вакансий никто не будет искать разработчиков на вашем языке программирования. Проверьте сайты с вакансиями, посмотрите, кого больше ищут, выпишите десяток языков. И переходите к следующему критерию.
  • Низкий уровень вхождения. Если вам придётся потратить длительное время на изучение языка, это может отбить у вас охоту к программированию вообще. Почитайте о тех языках, которые вы выбрали выше. Просмотрите литературу, которую нужно будет прочитать, чтобы изучить эти языки. И выберите те, о которых пишут, что они лёгкие, или которые вам показались лёгкими. Такими языками могут оказаться PHP, Ruby, Python.
  • Кайф от процесса. Если вам не нравится писать код на выбранном языке, вы не будете получать удовольствия от этого процесса, от работы и от жизни. А оно вам надо? Делайте правильный выбор.

Также вам придётся определиться с направлением программирования. Мобильное, десктопное, игры, веб, низкоуровневое программирование и так далее. Самые популярные и относительно лёгкие отрасли — разработка под веб, мобильные и десктопные клиенты. Под каждое направление может подходить один язык и совсем не подходить другой. То есть при выборе языка программирования также стоит отталкиваться и от этого фактора.

В любом случае изучите веб-технологии. Это язык разметки HTML, стили CSS и JavaScript, который позволит сделать вашу страницу динамической. На следующем этапе изучите серверный язык (Python, PHP, Ruby и другие) и подходящие для него веб-фреймворки. Изучите базы данных: практически в каждой вакансии программиста это упоминается.

Как получить начальный опыт

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

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

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

Если вы знаете английский язык, регистрируйтесь лучше на англоязычных биржах. Рынок там больше. Если не знаете английского, учите его. А пока что вам доступны русскоязычные биржи фриланса. Ищите небольшие проекты, которые соответствуют вашему уровню знаний или чуть выше него. Подайте заявку на пару десятков таких заданий. И приготовьтесь получить море отказов. Но если одна-две заявки выстрелят, у вас будет шанс получить реальный опыт.

Ещё одним неплохим вариантом для получения реального опыта является open source. Таким проектам всегда нужны новые люди, пусть даже и новички. Вы можете поискать в проекте баги или посмотреть в баг-трекере и предложить методы их решения. Найти такие проекты легко на GitHub или других сервисах для хостинга кода. Не стесняйтесь задавать там вопросы.

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

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

Почему стоит выбрать Python

Давайте немного подробнее поговорим о выборе первого языка программирования. Первый язык должен быть простым и популярным на рынке. Таким языком является Python. Я очень советую выбрать именно его в качестве первого языка программирования.

Код программы на Python читабелен. Вам даже не нужно быть программистом, чтобы в общих чертах понять, что происходит в программе. Из-за несложного синтаксиса Python вам понадобится меньше времени для написания программы, чем, например, на Java. Огромная база библиотек, которая сэкономит вам кучу сил, нервов и времени. Python является высокоуровневым языком. А значит, вам не нужно особо думать о ячейках памяти и о том, что там разместить. Python — язык широкого назначения. И он такой простой, что даже дети могут его выучить.

Справедливости ради стоит упомянуть и о других языках программирования. Java может стать неплохим выбором для новичка. Этот язык популярнее, чем Python, но и немного сложнее. Зато инструменты для разработки гораздо лучше проработаны. Стоит только сравнить Eclipse и IDLE. После Java вам будет проще перейти к работе с низкоуровневыми языками программирования.

PHP — ещё один очень популярный язык. И, мне кажется, он даже проще, чем Python. Очень легко найти себе ментора или решение какой-нибудь проблемы на форуме. Всё потому, что в мире существует огромное количество PHP-программистов разного уровня. В PHP нет нормального импорта, есть множество вариантов решения одной и той же задачи. А это усложняет обучение. И PHP заточен исключительно под веб.

Языки C и C# очень сложны для новичка. Ruby — хороший выбор в качестве второго языка, но не первого. JavaScript — очень простой язык, но ничему хорошему он вас не научит. А задача первого языка программирования всё-таки научить вас чему-то правильному, задать какую-то логику.

Важен ли английский язык

Важен! Не знаете? Учите. Знаете? Совершенствуйте. Учитесь читать, писать, слушать и говорить на английском. Делайте упор на техническую литературу. Слушайте англоязычные подкасты. Читайте англоязычные учебники по программированию.

Что нужно знать, кроме языка программирования

Конечно же, кроме языка программирования и английского, нужно знать что-то ещё. А вот что — зависит от направления, которое вы выберете. Веб-программист обязан знать HTML, CSS, JavaScript. Десктоп-программист учит API операционной системы и различные фреймворки. Разработчик мобильных приложений учит фреймворки Android, iOS или Windows Phone.

Всем нужно выучить алгоритмы. Попробуйте пройти курс на Coursera или найти подходящую для себя книгу по алгоритмам. Кроме этого, нужно знать одну из баз данных, паттерны программирования, структуры данных. Стоит также познакомиться с репозиториями кода. Хотя бы с одним. Обязательно знание систем версионного контроля. Выбирайте Git, он самый популярный. Вам нужно знать инструменты, с которыми вы работаете, операционную систему и среду разработки. И главный навык программиста — уметь гуглить. Без этого вы не проживёте.

Последние шаги

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

Топ-пост этого месяца:  Пошаговая инструкция блоггера в формате интеллект карты

Эти книги должен прочитать каждый, кто считает себя программистом!

Содержание статьи

Польза не во многих, но в хороших книгах.

Сенека

Все мы прекрасно понимаем: чтобы стать профессиональным программистом, необходимо читать специализированную техническую литературу. Но на сегодняшний день доступно огромное количество различных изданий по программированию. Целой жизни не хватит, чтобы одолеть и половину из них. Какие же книги нужно читать в первую очередь? Без каких книг нельзя обойтись? В этой статье мы расскажем о тех трудах великих авторов, с которыми должен быть знаком каждый профессиональный разработчик.

С. Макконнелл «Совершенный код»

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

Сложно найти гуру программирования, который не читал «Совершенный код» Стива Макконнелла. Действительно, одна книга, хоть и немаленькая (чуть менее 900 страниц), покрывает практически все аспекты разработки ПО: от рецептов написания высококачественного кода, механизмов тестирования и отладки до стратегий оптимизации кода и психологических факторов, влияющих на разработку. Представь себе: библиография книги занимает 20 страниц и содержит более 500 источников! Книга «Совершенный код» — одно из самых полезных и, как следствие, популярных изданий по разработке ПО. Она неоднократно доказала это, возглавляя рейтинги книг по программированию (goo.gl/3q0kx). Благодаря простой манере изложения, особому стилю и чувству юмора Стива книга читается очень легко.

Говоря о проектировании и конструировании программных систем, Макконнелл выделает Главный Технический Императив Разработки ПО — управление сложностью. Простота и ясность исходного кода и архитектуры системы определяют ее качество. Большая часть книги посвящена написанию высококачественного кода. Макконнелл, как никто другой осознавая значимость мелочей, детально описывает все правила, которыми необходимо руководствоваться при написании хорошего кода. Необходимый уровень абстракции, разработка качественных интерфейсов классов и пакетов, написание высококачественных методов, выбор удачных имен переменных, упрощение управляющих структур, комментирование кода — ничто не ускользает от внимания автора. Например, общим принципам использования переменных отведен целый раздел книги более чем на 100 страниц. Только вопросу выбора имен переменных посвящена целая глава на 30 страниц. При этом все правила и советы даются исключительно с практической точки зрения.

В части, в которой говорится о качестве ПО в целом, Макконнелл формулирует Главный Закон Качества ПО: повышение качества системы снижает расходы на ее разработку. Причина ясна — большую часть времени программисты занимаются чтением и отладкой написанного кода, тогда как на собственно написание уходит около 10% рабочего времени. Поэтому поддержание качества кода системы на высоком уровне экономит много времени и тем самым повышает КПД программиста.

Автор не обходит вниманием и различные методики разработки. Подробно описывается парное программирование, ревизии кода, формальные и неформальные инспекции, разработка на основе тестирования. «Рефакторинг» — единственная глава книги, которую можно назвать «слабоватой». При рассмотрении методов рефакторинга приводится лишь длинный список его видов из книги М. Фаулера «Рефакторинг». При этом нет ни одного конкретного примера кода. Раздел носит скорее ознакомительный характер.

Говоря о повышении производительности ПО, автор приводит убедительные доводы против преждевременной оптимизации, когда программист в процессе разработки интуитивно распознает «узкие» места в программе и незамедлительно принимает меры по оптимизации в ущерб качеству кода. Приводимая статистика показывает, что в 9 из 10 своих предположений программист ошибается.

Подвести итоги можно словами Джона Роббинса: «Это просто самая лучшая книга по конструированию ПО из всех, что когда-либо попадались мне в руки. Каждый разработчик должен иметь ее и перечитывать от корки до корки каждый год. Я ежегодно перечитываю ее на протяжении вот уже девяти лет и все еще узнаю много нового!»

М. Фаулер «Рефакторинг»

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

М. Фаулер

Практически любое издание о рефакторинге ссылается на книгу Мартина Фаулера «Рефакторинг». Действительно, в этой книге Фаулер сделал невозможное — в предельно понятной форме донес до читателей почти полностью исчерпывающее описание понятия «рефакторинг», его назначение, особенности и методы реализации.

При немалом объеме (400 страниц) книга читается буквально за пару вечеров, от нее просто невозможно оторваться. Главная причина головокружительного успеха книги — ее практическая направленность. Все мы знаем, что самая сложная задача при подаче материала — привести хороший показательный пример. В этом Фаулеру нет равных. Книга начинается с примера улучшения программы, который сразу с головой затягивает читателя в мир рефакторинга. Всего 40 страниц примера дают нам вполне конкретное представление о рефакторинге, его целях, принципах и основных методах реализации. Мартин определяет рефакторинг как «изменение во внутренней структуре ПО, имеющее целью облегчить понимание его работы и упростить модификацию, не затрагивая наблюдаемого поведения». Но когда необходимо проводить данное изменение? Какой код должен подвергаться переработке? Автор дает исчерпывающие ответы на эти вопросы. Он вводит правило «трех ударов»: «После трех ударов начинайте рефакторинг». То есть когда вы делаете что-то аналогичное в третий раз, это сигнал для начала рефакторинга. Раздел «Код с душком» дает нам четкое представление о том, какой же код требует улучшения. К признакам такого кода относятся: длинный метод, большой класс, длинный список параметров метода, дублирование кода, операторы типа switch, временные поля, отказ от наследства, неуместная близость классов и многое другое.

Фаулер, как сторонник TDD (Test-driven development), посвящает главу книги созданию автоматических тестов и описанию среды JUnit. Если обнаружена ошибка, сначала необходимо написать автоматический тест, выявляющий ее, и лишь затем проводить исправление. Это позволит в будущем не наступать на одни и те же грабли. Аналогично перед проведением рефакторинга следует написать тест для улучшаемого кода, чтобы обеспечить неизменность его поведения.

Бо́льшую часть книги занимает каталог методов рефакторинга. Он содержит разделы, посвященные составлению методов, перемещению функций между объектами, организации данных, упрощению условных выражений и вызовов методов, решению задач обобщения и крупным архитектурным рефакторингам. Многие из методов рефакторинга автоматизированы в популярных IDE. Например, Visual Studio предоставляет возможности по автоматическому выделению метода (ExtractMethod), удалению параметра (RemoveParameter), выделению интерфейса (ExtractInterface) и пр. В качестве крупных рефакторингов уровня системы Фаулер приводит следующие: разделение иерархии наследования, выполняющей более одной задачи, преобразование процедурного подхода к проектированию в объектно-ориентированный подход, отделение предметной области от уровня представления, а также выделение иерархии, подразумевающее разбиение большого класса на целую иерархию значительно меньших по размеру и более специализированных подклассов.

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

Э. Гамма, Р. Хелм, Р. Джонсон, Д. Влиссидес «Паттерны проектирования»

Проектирование объектно-ориентированных программ — нелегкое дело, а если их нужно использовать повторно, то все становится еще сложнее.

Э. Гамма

Спросите у опытного разработчика, какую книгу по объектно-ориентированному программированию вам обязательно стоит прочитать. В абсолютном большинстве случаев он посоветует именно эту. В отношении данной книги слово «бестселлер» звучит недостаточно выразительно, ведь с момента ее выпуска было продано уже более полумиллиона экземпляров на английском и тринадцати других языках!

Очень часто начинающий разработчик самостоятельно берется за решение уже более тысячи раз решенной до него задачи проектирования и изобретает очередную разновидность пятиколесного велосипеда, истинно гордясь своим «новшеством». Владение языком паттернов позволяет решить множество задач проектирования наиболее оптимальным способом, затрачивая при этом минимум усилий. Всего двадцать описанных в книге паттернов предоставляют инструментарий для решения огромного спектра задач проектирования ПО. Материал книги довольно сложен и требует от читателя определенных знаний в области объектно-ориентированного проектировании. Для освоения паттернов недостаточно просто прочитать книгу, необходимо основательно над ней «попотеть». Впрочем, твои усилия не пройдут даром. Книга содержит 350 страниц и состоит из двух частей. В первой части дается общее понятие паттернов проектирования, описывается их практическое применение на примере создания визуального редактора документов Lexi. Вторая часть книги содержит каталог паттернов с подробным описанием назначения, структуры, особенностей реализации и примерами применения каждого паттерна.

Коллектив авторов известен как Gang of Four («Банда четырех»), поэтому представленные в книге паттерны называют GoF. Авторы разбивают все множество представленных паттернов на три группы: порождающие паттерны, структурные паттерны и паттерны поведения. Порождающие паттерны решают задачу инстанцирования (создание экземпляров) классов. К самым популярным паттернам в данной группе можно отнести AbstractFactory (абстрактная фабрика), FactoryMethod (фабричный метод) и Singleton (одиночка).

Структурные паттерны предназначены для решения вопросов компоновки системы на основе классов и объектов. К ним относятся такие важнейшие паттерны, как Adapter (адаптер), Bridge (мост), Composite (компоновщик), Proxy (заместитель) и Façade (фасад). Паттерны поведения связаны с алгоритмами и вопросами распределения обязанностей между классами. Здесь необходимо упомянуть Strategy (стратегия), TemplateMethod (шаблонный метод), Observer (наблюдатель), Command (команда) и Iterator (итератор).

Единственное, что может смутить читателя, — некоторые примеры в книге написаны на малоизвестном на сегодняшний день языке программирования Smalltalk, а для изображения диаграмм классов вместо привычного UML используется OMT (Object Modeling Technique).

Гуру ООАиП Мартин Фаулер пишет: «Паттерны GoF — это лучшая из когда-либо изданных книг по объектно-ориентированному проектированию. Эта книга чрезвычайно влиятельна в индустрии программного обеспечения — только посмотрите на библиотеки Java и .NET, которые буквально кишат паттернами GoF». Не существует специалиста в области объектно-ориентированного проектирования, незнакомого с паттернами GoF, а если такой и есть, то в этом случае его, скорее всего, нельзя назвать специалистом.

Р. Мартин «Чистый код»

Умение писать код — тяжелая работа. Она не ограничивается знанием паттернов и принципов. Над кодом необходимо попотеть.

Р. Мартин

«Чистый код» — одна из наиболее удачных книг, посвященных написанию высококачественного кода. Размер книги — 360 страниц, не считая приложений. При этом она настолько увлекательна и доступна, что за два-три вечера запросто прочитаешь ее от корки до корки. В дружеской манере «дядюшка» Боб рассказывает нам, какими же принципами нужно руководствоваться, чтобы писать хороший код. Книга изобилует примерами из реальных приложений, с которыми автор сталкивался в своей практике. Среди них такие известные продукты, как JUnit, FitNesse, JDepend, Ant и TomCat.

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

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

Необходимо поддерживать его чистоту с течением времени, чтобы предотвратить «загнивание». Поэтому он вводит «правило бойскаута»: «Оставь место стоянки чище, чем оно было до твоего прихода». То есть с каким бы участком кода мы ни работали, нужно пытаться в итоге сделать его качественнее, чем он был. В таком случае, код не будет загнивать и останется чистым.

При создании функций во главу угла ставятся компактность, правило одной операции и одного уровня абстракции — очевидные на первый взгляд принципы, которые так часто нарушаются программистами. Будучи ярым адептом TDD, Мартин указывает на важность «чистоты» не только кода конечного продукта, но и кода модульных тестов. Он иронически замечает: «Какими отличительными признаками характеризуется чистый тест? Тремя: удобочитаемостью, удобочитаемостью и удобочитаемостью».

Пожалуй, единственный недостаток книги — это ее Java-ориентированность. Все представленные примеры написаны исключительно на языке Java. При этом большое количество советов и «запахов кода» характерны в основном для Java-кода.

В начале книги Роберт приводит ответы мэтров программирования на вопрос, что же такое «чистый код». Грэди Буч отвечает: «Чистый код прост и прямолинеен. Чистый код читается, как хорошо написанная проза. Чистый код никогда не затемняет намерения проектировщика; он полон четких абстракций и простых линий передачи управления». Программисты, которые стремятся писать «чистый код», просто обязаны прочитать эту книгу.

Д. Кнут «Искусство программирования»

Лучший способ в чем-то разобраться до конца — это попробовать научить этому компьютер.

Д. Кнут

Программист, у которого нет книги «Искусство программирования», как священнослужитель, у которого нет Библии. Монографию Дональда Кнута часто называют «Библией программиста». Она содержит подробное описание и анализ важнейших фундаментальных алгоритмов, используемых в информатике, а также множество практических задач для усвоения и закрепления представленного материала. Журнал American Scientist включил работу Кнута в список двенадцати лучших физико-математических монографий XX века наряду с работой Эйнштейна по теории относительности. Успех книги определило качество изложения и глубина анализа общих вопросов программирования.

Кнут начал работу над «Искусством программирования» еще в 1962 году. По замыслу автора монография должна состоять из семи томов. Пока было издано три первых тома, а также первая половина четвертого. Все изданные на сегодняшний день материалы составляют почти 3000 страниц. Читать книгу совсем не просто (как, впрочем, и Библию), главным образом потому, что все примеры рассматриваются на низкоуровневом языке программирования — ассемблере для гипотетического выдуманного автором компьютера MIX. Поэтому у программиста вряд ли получится использовать книгу в качестве набора готовых рецептов для решения конкретных задач. Эта книга дает программисту не рыбу, а скорее хорошую удочку, с помощью которой он сможет не без определенных усилий самостоятельно наловить рыбы.

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

Второй том включает в себя третью и четвертую главы. Третья глава посвящена работе со случайными числами и последовательностями. В четвертой главе описываются вопросы арифметики, а именно различные виды систем счисления, арифметика чисел с плавающей точкой и рациональных чисел, полиномиальная арифметика и другое. Третий том посвящен алгоритмам сортировки и поиска (соответственно, главы 5 и 6). Из четвертого тома опубликованы материалы седьмой главы, описывающей вопросы комбинаторного поиска.

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

В своем отзыве о работе Кнута Билл Гейтс сказал: «Если вы считаете себя действительно хорошим программистом… прочитайте „Искусство программирования“ (Кнута)… Если вы сможете прочесть весь этот труд, то вам определенно следует отправить мне резюме». Цитата лишний раз подчеркивает, что, несмотря на сложность материала, настоящий профессионал обязательно должен осилить труд Дональда Эрвина Кнута «Искусство программирования».

Э. Хант, Д. Томас «Программист-прагматик»

Программисты-прагматики не уклоняются от ответственности. Вместо этого они испытывают радость, принимая вызовы и распространяя свой опыт.

Эндрю Хант

Книга «Программист-прагматик» полностью оправдывает свое название. Викисловарь говорит, что прагматик — это тот, «кто ставит практическую полезность, выгоду выше всего». Программисты-прагматики ориентируются в первую очередь на практическую успешность реализуемых проектов. Авторы на основании своего богатейшего опыта программирования создали структурированный набор практических советов для программистов. Небольшой размер книги (270 страниц) говорит о высокой концентрации важной для программиста информации.

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

Одним из самых замечательных принципов программирования, которым мы обязаны авторам, является принцип DRY (Don’t Repeat Yourself), что в переводе на русский означает: «Не повторяй самого себя». Это значит, что каждый фрагмент знания должен иметь единственное и однозначное представление в системе. Следование данному принципу позволяет повысить надежность, доступность и простоту сопровождения программного продукта.

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

Единственное, что может подпортить впечатление о книге, так это недостаточно качественный перевод на русский язык и наличие множества опечаток. Книгу лучше всего читать в оригинале на английском языке. Нельзя не согласиться с отзывом Кента Бека: «Главное в этой книге то, что она поддерживает процесс создания программ в хорошей форме. [Книга] способствует вашему постоянному росту и явно написана людьми, знающими толк в программировании». Если вы стремитесь к постоянному росту как программист, эта книга обязательна к прочтению.

Заключение

Значение хороших книг по программированию сложно переоценить. Каждая из описанных книг позволяет совершить огромный скачок в развитии. «Искусство программирования» закладывает прочный фундамент, обучая нас фундаментальным алгоритмам и приемам программирования. «Совершенный код» позволяет выйти на новый качественный уровень конструирования ПО. «Чистый код» и «Рефакторинг» учат нас внимательнее относиться к качеству кода и поддерживать его в идеальном состоянии. «Программист-прагматик» подсказывает, как же реально добиться практического успеха при разработке ПО. «Паттерны проектирования» вооружают тяжелой артиллерией паттернов для решения множества задач проектирования.

Как создавать качественый код в 3-4-5 раз быстрей?

-снипеты(стандартные+свои заготовки наиболее часто используемых и шаблонных конструкций)
-слепой набор(с большой скоростью)
-писать само документирующий код(чтоб не писать много комментариев)
-сперва накидать общую логику на бумаге
-четкий план какие функции надо реализовать и в какой по очередности

Какие еще есть варианты?
UDP:
Вопрос касательно одного разработчика (вне зависимости от языка программирования ну возьмем топ10).

Ответы нужен опыт не принимаются!(это как бы и так понятно что чем больше опыт тем быстрей я буду создавать код).

  • Вопрос задан более трёх лет назад
  • 1437 просмотров

Учить ООП и стандарты.
UPD: нужна архитектура, основанная на функциональных блоках, независящих от конкретного проекта. (что-то типа «детского» конструктора, где из 7-8 блоков можно сделать красивый домик)

Тогда Вы сможете их вставлять в нужном порядке и тем самым, экономить время на создании обработчиков, за счет использования УЖЕ РЕАЛИЗОВАННЫХ ВАМИ функциональных блоков.

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

Многое зависит от сложности программы. Для простой программы действительно быстрый набор и короткие названия переменных что-то дадут. Но простые программы никому не нужны.

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

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

Итого: алгоритмы и структуры, паттерны проектирования, слабо связанный тестируемый читаемый код, тесты, внедрение зависимостей, git + git-flow, знание надежных библиотек и фреймворков и умение их применять.

P.S. Не помню точно, может как раз у Макконнелла сказано, что программист на работу непосредственно с кодом тратит 20% времени. Остальные 80% заняты обдумыванием.
Так что логичнее тренировать голову, а не руки.

как и в любом другом искусстве мастерство (в том числе и скорость) складывается из множества деталей.
посредственным программистам они могут казаться не значительными, даже появляются фразы типа слепой метод печати НИНУЖОН, овер9000% обдумываем архитектуру, рисуем схемки на бумаге, и тд. Это всё оправдания.

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

такой подход называют ещё решением «сверху вниз», когда ты сразу описываешь как программа должна в общем работать постепенно углубляясь в реализацию деталей.
программисту в 2015 году, стыдно должно быть рисовать какие-то диаграммки от руки, имея генераторы UML диаграмм (в intellij IDE например встроенный генератор схем есть).
учитесь описывать структуру и схемы работы сразу в коде, а не наоборот.

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

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

и это всё НЕ ерунда, это те детали из которых складывается ваша скорость, и качество программирования. Tо там потерял 5 минут, то здесь провозился со схемкой на бумаге, то писал простой метод в течении 2 минут вместо 15 секунд.
И в итоге, некоторые пишут программу в течении 2х недель, а кто-то туже самую программу за 2 часа.

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

и да все эти вещи приходят исключительно с многолетним опытом.

Добавить комментарий