Pull to refresh
  • by relevance
  • by date
  • by rating

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

Designing and refactoring *
Иногда от посторонних людей достаются большие процедуры, от которых появляется большая головная боль.
Например, когда мне досталась на переработку километровая процедура 1С. В целом, она выглядела
впечатляюще
Total votes 26: ↑17 and ↓9 +8
Views 4.1K
Comments 96

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

Lumber room
Доброго времени суток.
Решил рассказать о том, как я оформляю 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. Не получилось показать оформленный запрос с табуляциями, увы не нашел как это делается
Total votes 23: ↑9 and ↓14 -5
Views 2.4K
Comments 22

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

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

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

Читать дальше →
Total votes 23: ↑15 and ↓8 +7
Views 2.1K
Comments 24

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

Programming *


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

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

Я понимаю, что кому-то не хочется показывать свой исходный текст, но это настоящее издевательство…
Total votes 9: ↑1 and ↓8 -7
Views 701
Comments 8

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

PVS-Studio corporate blog

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


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



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


Читать дальше →
Total votes 492: ↑258 and ↓234 +24
Views 38K
Comments 217

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

Programming *

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

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

Читать дальше →
Total votes 513: ↑389.5 and ↓123.5 +266
Views 83K
Comments 407

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

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

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

Website development *JavaScript *Perfect code *
Translation

JavaScript, the winning style



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

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

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



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

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

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


А как делают все?
Total votes 96: ↑83 and ↓13 +70
Views 40K
Comments 161

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

Programming *Perfect code *
Sandbox
Условный оператор в обычной своей форме источником проблем является сравнительно редко. Однако само условие порой оказывается достаточно сложным и встает на пути к мечте любого разработчика. Речь, конечно же, о красивом и читаемом коде.

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

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

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

Abnormal programming *Programming *Perfect code *
Плоский дизайн (flat design), это сейчас модно и красиво. Внесем же наш маленький вклад в общую тенденцию, применим немного flat-форматированного кода
Читать дальше →
Total votes 63: ↑6 and ↓57 -51
Views 6.1K
Comments 47

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

Website development *CSS *HTML *
Translation
Tutorial


Введение


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

Руководство по оформлению кода на Перле

Perl *
Translation
image

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

Главная фишка заключается в том, что ваши программы всегда должны запускаться с флагом -w. При необходимости, вы можете целенаправленно отключить это действие для конкретных участков кода через прагмы no warnings или переменную $^W. Так же, вы должны всегда запускать программы с использованием use strict, либо же четко понимать, почему вы этого не делаете. Прагмы use sigtrap и use diagnostics так же могут быть полезными.

Что касается эстетики оформления кода, то единственная вещь, о которой всерьез заботится Ларри, это то, что закрывающая фигурная скобка многострочного блока должна быть выровнена по вертикали с ключевым словом, начинающим всю конструкцию. Кроме того, у него есть другие предпочтения, которые не так серьезны:
Читать дальше →
Total votes 22: ↑20 and ↓2 +18
Views 8.7K
Comments 32

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

Python *Programming *

Введение


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

О читаемости и пойдет речь, а точнее как ее увеличить.
Читать дальше →
Total votes 36: ↑29 and ↓7 +22
Views 50K
Comments 33

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

Productivity Inside corporate blog Programming *

Вступление


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

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


… на самом деле комикс не о цветовых схемах, но он отлично походит.
Читать дальше →
Total votes 24: ↑21 and ↓3 +18
Views 16K
Comments 45

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

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

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

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

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

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

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

Configuring Linux *
Tutorial

Предисловие


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

Читать дальше →
Total votes 17: ↑15 and ↓2 +13
Views 6.9K
Comments 17

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

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