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

Сокращение уровня вложенности

Время на прочтение 4 мин
Количество просмотров 4.9K
Проектирование и рефакторинг *
Иногда от посторонних людей достаются большие процедуры, от которых появляется большая головная боль.
Например, когда мне досталась на переработку километровая процедура 1С. В целом, она выглядела
впечатляюще
Всего голосов 26: ↑17 и ↓9 +8
Комментарии 96

Оформление SQL запросов в PHP

Время на прочтение 2 мин
Количество просмотров 3.6K
Чулан
Доброго времени суток.
Решил рассказать о том, как я оформляю SQL запросы в PHP.
Итак каким критериям должен удовлетворять мой запрос:
1. Удобочитаемость
2. Возможность комментировать каждое действие в запросе
3. Возможность исключить одну из таблиц или действий при помощи комментария, не удаляя ничего из запроса

Вот пример запроса SELECT:
$sql = "SELECT m.id, m.text"
.", u.name, u.email"
." FROM messages m"
." LEFT JOIN users u ON u.id=m.user_id"
." WHERE m.status=0"
." AND u.id='".$user_id."'"
." ORDER BY m.date"
." LIMIT 10"
;


Итак каких правил оформления я придерживаюсь:
1. Каждый оператор находится на отдельной строке
2. Каждая страка заключается в «." "», что дает возможность комментирования как любого действия
$sql = "SELECT m.id, m.text" // Выбираю ID и текст сообщения
.", u.name, u.email" // Выбираю имя и email пользователя
." FROM messages m" // Таблица сообщений
." LEFT JOIN users u ON u.id=m.user_id"
." WHERE m.status=0" // Со статусом 0 (прочитанные)
." AND u.id='".$user_id."'" // Пользователя с указанным ID
." ORDER BY m.date" // Сортировка по дате добавления сообщения
." LIMIT 10" // Выбираем 10 записей
;

так и отключения одной из строк запроса
$sql = "SELECT m.id, m.text"
.", u.name, u.email"
." FROM messages m"
." LEFT JOIN users u ON u.id=m.user_id"
." WHERE m.status=0"
." AND u.id='".$user_id."'"
// ." ORDER BY m.date"
." LIMIT 10"
;

3. Любое обращение к таблице разделяется на отдельные строки с группировкой по таблицам, что дает возможность комментарием убрать одну из таблиц
$sql = "SELECT m.id, m.text"
// .", u.name, u.email"
." FROM messages m"
// ." LEFT JOIN users u ON u.id=m.user_id"
." WHERE m.status=0"
// ." AND u.id='".$user_id."'"
." ORDER BY m.date"
." LIMIT 10"
;

4. После «."», перед операторами ставится пробел
." FROM messages m"
а в
.", u.name, u.email"
запятая, что придает каждой строке назависимость от других.

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

P.S. Не получилось показать оформленный запрос с табуляциями, увы не нашел как это делается
Всего голосов 23: ↑9 и ↓14 -5
Комментарии 22

Об использовании паттернов

Время на прочтение 3 мин
Количество просмотров 4.2K
Чулан
К сожалению, иногда приходится наблюдать случаи, когда люди, прошедшие паттерны проектирования в институте в рамках курса программирования, или же прочитавшие книжку с паттернами сразу после учебника по программированию, начинают применять их в работе буквально с первого класса. Иногда это даёт результат, чаще всего с паттернами Singleton (хотя бы знают про double locking idiom). Но чаще всего возникает ситуация, когда человек применяет паттерн просто для того, что его применить. И это плохо.

Для начала, что такое паттерн? Можно перевести как «образец», «пример», «модель», но мне больше всего нравится слово «шаблон» или же «шаблон проектирования». Потому что любой паттерн это не образец, с которого надо копировать ваш код. Это образец оформления кода, которому надо следовать. Разница такая же, как между образцом документа, который висит на стене, и шаблоном документа в MS Word / OpenOffice Writer, который используется для единообразного оформления (отступы, шрифты, оформление абзацев).

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

О том, как не надо отдавать исходники

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


Вот такая красота на javascript нашлась при пристальном изучении исходных текстов xen cloud platform: pastebin.com/FyN3pSh5

Может, ассемблер всё-таки лучше?

Я понимаю, что кому-то не хочется показывать свой исходный текст, но это настоящее издевательство…
Всего голосов 9: ↑1 и ↓8 -7
Комментарии 8

Пора завязывать использовать символы табуляции в коде

Время на прочтение 5 мин
Количество просмотров 40K
Блог компании PVS-Studio

единорог и табуляции


Многие могут счесть спор, о том, что лучше пробелы или табуляции в коде за holy wars. Однако нет, я не хочу устраивать дискуссию на эту тему. Я однозначно утверждаю, что в обязательном порядке следует использовать пробелы. И разговор и «предпочтении того или иного» здесь не уместен. Как не уместно в наше время обсуждать, что удобнее, компьютер или печатная машинка. Поскольку печатные машинки закончили свое существование, ориентироваться в дальнейшем на их использование, по меньшей мере, нерационально. А если ещё учесть, сколь удобнее пользоваться компьютером для набора текста, то вопрос выбора просто отпадает.



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


Читать дальше →
Всего голосов 492: ↑258 и ↓234 +24
Комментарии 217

Пора завязывать использовать пробелы вместо табуляции в коде

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

Этот топик — ответ на топик "Пора завязывать использовать символы табуляции в коде".
Я хотел было ответить к комментариях, но в силу объема и желания независимости от исходного топика решил создать новый топик.

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

Читать дальше →
Всего голосов 513: ↑389.5 и ↓123.5 +266
Комментарии 407

Оформление кода

Время на прочтение 5 мин
Количество просмотров 62K
Программирование *
Данным топиком я хочу поднять вопрос о качестве кода, независимо от используемого языка программирования. В топике я приведу пару советов и методик, которых придерживаются у нас в компании. Я не буду утверждать, что они являются верными, ведь у каждого есть свой вкус и свои предпочтения. Но все равно, в каждом кругу разработчиков, работающих вместе, существуют какие либо правила оформления кода.
Так же, не мало важно увидеть в комментариях ваши подходы и «любимый стиль».
Читать дальше →
Всего голосов 57: ↑34 и ↓23 +11
Комментарии 109

Оформление кода, оптимизация процесса проверки качества кода

Время на прочтение 5 мин
Количество просмотров 35K
Разработка веб-сайтов *JavaScript *Совершенный код *
Перевод

JavaScript, the winning style



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

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

В отличие от Питона у которого есть единый свод правил «Style Guide for Python Code», у языка JavaScript такого нет. Однако на выбор есть целых 6 популярных гайдов:



Помимо гайдов, не стоит так же забывать об автоматических анализаторах кода, таких, например, как JSLint и JSHint. И в них уже заложены свои настройки. Вопрос в том, какой же все-таки максимально правильный способ писать код на JavaScript, который был бы актуален и максимально соответствовал бы большинству рекомендаций? Давайте попробуем объединить большинство рекомендаций в этой статье и подумаем как можно оптимизировать процесс проверки качества кода.
Читать дальше →
Всего голосов 59: ↑54 и ↓5 +49
Комментарии 61

Какие стили оформления кода предпочитает аудитория Гитхаба?

Время на прочтение 2 мин
Количество просмотров 40K
Программирование *Совершенный код *
Пробелы или табуляция? Двойные или одинарные кавычки? Открывать фигурную скобку с новой строки или в «египетском» стиле? Вокруг этих соглашений оформления исходников постоянно бурлят священные войны. Впрочем, мало кто решается спорить с тем, что если работаешь в команде, то писать надо так, как в этой команде принято, или хотя бы переформатировать свой код в принятом стиле перед коммитом. В конце концов, если бы у какого-то стиля было абсолютно решающее преимущество перед другим, то и споров бы не возникало, так что, возможно, самое мудрое решение — делать как все.


А как делают все?
Всего голосов 96: ↑83 и ↓13 +70
Комментарии 161

Оформление сложных условий

Время на прочтение 4 мин
Количество просмотров 64K
Программирование *Совершенный код *
Из песочницы
Условный оператор в обычной своей форме источником проблем является сравнительно редко. Однако само условие порой оказывается достаточно сложным и встает на пути к мечте любого разработчика. Речь, конечно же, о красивом и читаемом коде.

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

Так как с высасыванием из пальца у меня проблемы, в качестве источника примеров взята часть исходников GCC 4.8.2, для авторов которых стандарты оформления — не пустой звук. Используя примеры, буду приводить файл и строку начала, чтобы желающие могли убедиться, что все честно.
Читать дальше →
Всего голосов 25: ↑17 и ↓8 +9
Комментарии 33

Пара полезных исключений из правил по форматированию исходного кода

Время на прочтение 1 мин
Количество просмотров 6.2K
Ненормальное программирование *Программирование *Совершенный код *
Плоский дизайн (flat design), это сейчас модно и красиво. Внесем же наш маленький вклад в общую тенденцию, применим немного flat-форматированного кода
Читать дальше →
Всего голосов 63: ↑6 и ↓57 -51
Комментарии 47

CSS GuideLines, часть 1. Синтаксис и форматирование

Время на прочтение 8 мин
Количество просмотров 40K
Разработка веб-сайтов *CSS *HTML *
Туториал
Перевод


Введение


CSS не идеален. Поначалу кажется, что он прост в освоении, но работая над реальным проектом вы столкнетесь со многими проблемами. Мы не можем изменить то, как работает CSS, но мы можем изменить тот код, который мы пишем.
Читать дальше →
Всего голосов 37: ↑22 и ↓15 +7
Комментарии 36

Форматирование Python-кода

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

Введение


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

О читаемости и пойдет речь, а точнее как ее увеличить.
Читать дальше →
Всего голосов 36: ↑29 и ↓7 +22
Комментарии 33

Почему мы меняем цветовые схемы?

Время на прочтение 6 мин
Количество просмотров 17K
Блог компании Productivity Inside Программирование *

Вступление


Знаете, что я заметил? Мы очень много времени уделяем кастомизации цифрового пространства. Это начинается со смены обоев и тем рабочего стола, переходит в долгий подбор скина в Aimp (Winamp, для староверов) и заканчивается оформлением цифрового рабочего места.

Как только я меняю среду разработки или редактор кода, то первым делом лезу в цветовые схемы и ищу любимые цвета. У программистов уже сложились целые культы вокруг определенных цветовых палитр. Что лучше — Obsidian или Monokai? Можно мне Selenitic, только фон более темный? И все в таком духе. Бывало, что ко мне приходили друзья и, прежде чем начать показывать свой проект, меняли тему на другую, более привычную для них. Это раздражает, но я их понимаю.


… на самом деле комикс не о цветовых схемах, но он отлично походит.
Читать дальше →
Всего голосов 24: ↑21 и ↓3 +18
Комментарии 45

Задачка про страницу в три столбца, один из них в сто пикселей

Время на прочтение 6 мин
Количество просмотров 11K
CSS *HTML *
Из песочницы
Эта статья задумывалась как небольшое руководство к выполнению лабораторной работы для студентов, начинающих изучать веб-технологии.

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

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

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

Студенты продемонстрировали в общей сложности около десяти разных вариантов решения этой задачи. От совсем никуда не годных до вполне приемлемых. Рассматривать я, разумеется, буду только вменяемую половину, то есть будет пять примеров, воспроизведенных мной + несколько, предложенных сообществом в комментариях.
Читать дальше →
Всего голосов 13: ↑11 и ↓2 +9
Комментарии 27

Готовое решение markdown2pdf с исходным кодом для Linux

Время на прочтение 3 мин
Количество просмотров 8.5K
Настройка Linux *
Туториал

Предисловие


Markdown это прекрасный способ написать небольшую статью, а иногда и достаточно объемный текст, с несложным форматированием в виде курсива и толстого шрифта. Также Markdown неплох для написания статей с включением исходного кода. Но иногда хочется без потерь, танцев с бубном перегнать его в обычный, хорошо оформленный файл PDF, и чтобы не было проблем при конвертации, какие, например были у меня — нельзя писать по русски в комментариях исходного кода, слишком длинные строки не переносятся, а обрезаются и прочие мелкие проблемы. Инструкция позволит быстро настроить конвертер md2pdf не особенно вникая как это работает. Скрипт для более менее автоматической установки ниже в соотвествующем разделе.

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

PEP 257 на русском. (Соглашение о Docstrings)

Время на прочтение 8 мин
Количество просмотров 25K
Python *Программирование *Профессиональная литература *Изучение языков
Перевод
Привет, Хабр. Бывают моменты, когда тебе хочется максимально погрузиться в язык и понять все его тонкости. В случае Python один из лучших способов это сделать — читать на официальном сайте документацию и PEP-ы. В своё время я этого не делал, поскольку не мог понять многих «технических» моментов, а вариантов русского перевода не было. Сейчас же я решил сам перевести PEP-257, где рассказывается о правильном документировании кода, ведь наверняка это поможет новичкам лучше понять истинный «пайтоновский» подход к написанию кода. Я переводил примеры кода на русский язык, но только для того, чтобы лучше донести смысл. В реальном программировании старайтесь писать документационные строки на английском. Также говорю сразу, что как синоним термина «docstring» я использовал слова: «документация» и «документационные строки». Что же, перейдём к самому переводу.
Читать дальше →
Всего голосов 29: ↑27 и ↓2 +25
Комментарии 7

Дао Кодинга (о стиле написания кода)

Уровень сложности Средний
Время на прочтение 14 мин
Количество просмотров 5.7K
Программирование *Совершенный код *
Из песочницы
Перевод

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

Текст написан от первого лица, и я решил сохранить этот момент. Поэтому "я" — это не я, а оригинальный автор статьи "Tao of Coding" — Коэн Уиттерс.

Читать далее

Данное руководство описывает стиль написания программного кода, который я разрабатывал несколько лет. Но стиль мой настолько неизвестен, что я не знаю никого, кто пользовался бы таким странным способом программировать, каким пользуюсь я. Тем не менее, он мне нравится и я бы хотел поделиться этим знанием (эй ты, везунчик, слышишь меня?). Этот стиль я использовал в разных языках: С, С++, Java, C#, Python,... .

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

Читать далее
Всего голосов 19: ↑15 и ↓4 +11
Комментарии 30