Как писать код так, чтобы он рос в высоту, а не в ширинуКаждый раз, когда мы добавляем в код новый if или for, приходится увеличивать отступ тела условия или цикла. Чем больше вложенных циклов и условий, тем шире становится код и начинаются трудности при его чтении. В этой небольшой заметке я покажу несколько приёмов благодаря которым можно избежать роста отступов, чтобы код был понятнее и чтобы в нём никогда не появлялась горизонтальная прокрутка. Продолжить Рейтинг: 16 (Против: 0 | За: 16) Добавлено: 11.09.2018 от aNNiMON Комментарии (36) Билдеры и дженерикиПризнаюсь честно, иммутабельность объектов — моя идея фикс. Только от одного вида изменяемых объектов меня бросает дрожь, а необходимость добавить классу сеттер заставляет меня рыдать. Километровые конструкторы в моём коде — дело привычное (spoiler: преувеличение, конечно же). Работать с такими, откровенно говоря, очень неприятно. К счастью, есть один способ (не приносящий боли), позволяющий решить эту проблему. Имя ему — паттерн «Строитель» (бурж. Builder). Суть паттерна заключается в вынесении процедуры конструирования объекта за пределы его собственного класса, то есть в класс «строителя». Помимо решения вышеописанной проблемы, такой подход позволяет: - унифицировать процедуру конструирования для объектов одной иерархии, - создавать сценарии Продолжить Рейтинг: 3 (Против: 1 | За: 4) Добавлено: 9.09.2017 от aRiGaTo Комментарии (4) Паттернология. Система командСвятая троица «Инкапсуляция — Наследование — Полиморфизм» — это вершина айсберга под названием ООП. Это всего лишь инструменты для организации взаимодействия между объектами. В этом и есть смысл ООП — не просто создать кучу объектов, а сделать так, чтобы они эффективно взаимодействовали друг с другом. И в данном случае эффективность — это не скорость исполнения программы, а возможность вносить правки в код максимально быстро, при этом не переписывая тонны кода. Как я уже отмечал, с «движком для конфигов на LiketEngine» что-то не так. У него есть проблема — хоть он и написан на объектно-ориентированном языке (на самом деле Java уже давно не ОО, а мультипарадигма), он не ОО. В нём нет той Продолжить Рейтинг: 8 (Против: 0 | За: 8) Добавлено: 16.09.2016 от aRiGaTo Комментарии (20) Основы грамотности Java на конкретных примерах. Часть IВсем привет, сегодня я разберу исходник из темы "Исправление исходников" и, кроме непосредственно исправления, постараюсь дать исчерпывающие комментарии почему я делаю эти исправления именно так. Кроме того, я приведу в качестве решения свою версию кода. Итак, изначальный исходник (настоятельно рекомендую ознакомиться, чтобы быть в теме): Открыть спойлер Закрыть спойлер
Продолжить Рейтинг: 11 (Против: 0 | За: 11) Добавлено: 11.03.2015 от DominaN Комментарии (21) Дизайн API библиотекиНа написание данной статьи меня натолкнула библиотека EasyCamera, которая упрощает сложный вызов Android Camera API (статья о ней). Часто приходится сталкиваться с тем, что для работы той или иной библиотеки необходимо прочитать документацию или поискать подробные примеры её использования. Например, чтобы заставить ту же Android Camera API показать экран видоискателя, нужно вызвать сначала метод setPreviewDisplay(holder), а затем уже startPreview(). Это не всегда очевидно и не очень удобно. Поэтому при проектировании библиотеки следует учитывать некоторые параметры, а именно: 1. Классы и методы должны быть понятны пользователю (в данном случае пользователем Продолжить Рейтинг: 4 (Против: 1 | За: 5) Добавлено: 6.04.2014 от aNNiMON Комментарии (16) Всего: 9
|