Реклама

Статьи | Совершенный код

Как писать код так, чтобы он рос в высоту, а не в ширину


Каждый раз, когда мы добавляем в код новый if или for, приходится увеличивать отступ тела условия или цикла. Чем больше вложенных циклов и условий, тем шире становится код и начинаются трудности при его чтении. В этой небольшой заметке я покажу несколько приёмов благодаря которым можно избежать роста отступов, чтобы код был понятнее и чтобы в нём никогда не появлялась горизонтальная прокрутка.
2018-09-11_12-29-14.png
Продолжить

Рейтинг:  15  (Против: 0 | За: 15)
Добавил: aNNiMON

Комментарии (36)

Билдеры и дженерики


Признаюсь честно, иммутабельность объектов — моя идея фикс. Только от одного вида изменяемых объектов меня бросает дрожь, а необходимость добавить классу сеттер заставляет меня рыдать. Километровые конструкторы в моём коде — дело привычное (spoiler: преувеличение, конечно же). Работать с такими, откровенно говоря, очень неприятно. К счастью, есть один способ (не приносящий боли), позволяющий решить эту проблему. Имя ему — паттерн «Строитель» (бурж. Builder).
Суть паттерна заключается в вынесении процедуры конструирования объекта за пределы его собственного класса, то есть в класс «строителя». Помимо решения вышеописанной проблемы, такой подход позволяет:
  - унифицировать процедуру конструирования для объектов одной иерархии,
  - создавать сценарии
Продолжить

Рейтинг:  3  (Против: 1 | За: 4)
Добавил: aRiGaTo

Комментарии (4)

Паттернология. Система команд


Святая троица «Инкапсуляция — Наследование — Полиморфизм» — это вершина айсберга под названием ООП. Это всего лишь инструменты для организации взаимодействия между объектами. В этом и есть смысл ООП — не просто создать кучу объектов, а сделать так, чтобы они эффективно взаимодействовали друг с другом. И в данном случае эффективность — это не скорость исполнения программы, а
возможность вносить правки в код максимально быстро, при этом не переписывая тонны кода.
Как я уже отмечал, с «движком для конфигов на LiketEngine» что-то не так. У него есть проблема — хоть он и написан на объектно-ориентированном языке (на самом деле Java уже давно не ОО, а мультипарадигма), он не ОО. В нём нет той
Продолжить

Рейтинг:  8  (Против: 0 | За: 8)
Добавил: aRiGaTo

Комментарии (18)

Основы грамотности Java на конкретных примерах. Часть I


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

Продолжить

Рейтинг:  11  (Против: 0 | За: 11)
Добавил: DominaN

Комментарии (21)

Дизайн API библиотеки


На написание данной статьи меня натолкнула библиотека EasyCamera, которая упрощает сложный вызов Android Camera API (статья о ней).
Часто приходится сталкиваться с тем, что для работы той или иной библиотеки необходимо прочитать документацию или поискать подробные примеры её использования. Например, чтобы заставить ту же Android Camera API показать экран видоискателя, нужно вызвать сначала метод setPreviewDisplay(holder), а затем уже startPreview(). Это не всегда очевидно и не очень удобно.
Поэтому при проектировании библиотеки следует учитывать некоторые параметры, а именно:
1. Классы и методы должны быть понятны пользователю (в данном случае пользователем
Продолжить

Рейтинг:  4  (Против: 1 | За: 5)
Добавил: aNNiMON

Комментарии (16)
Всего: 9
1 2 >>

Мы в соцсетях

vk tw tg yt

Пожертвования

Аноним2850 р.
Freddy1700 р.
riseremi1611 р.
NaruTrey800 р.
vlavolk637 р.