Введение
Наверное, все слышали про принцип KISS, который если перефразировать означает «Чем проще — тем лучше». С этим все понятно, но как его применить в разработке проектов, при этом умело и быстро изобретая «велосипеды» и реализовывая свой творческий потенциал? (В блоге учись работать много тем связаных с потерей ориентира в творческом развитии). Вопрос попробую осветить поэтапно.
Опыт или знания ?
Как вы думаете, ув. хабрачитатели, что делает вашу продуктивность работы выше: опыт или знания? На эту тему можно долго размышлять, поэтому отвечу сразу — ни то и ни другое. Продуктивность вашей работы зависит только от того на сколько глубоко вы понимаете как это работает. Что в свою очередь опирается на ваши знания приобретеные в результате полученого опыта. Звучит немного трудно для понимания, поэтому подкреплю сразу примером.
Здесь, на хабре, неоднократно встречал статьи из блога Сергея Чикуёнка(да простят меня хабрачитатели если я неправильно склонил его фамилию). И вот в одной из своих записей, цитирую "Сама колонка не должна влиять на ширину, но все еще должна быть в потоке, поэтому подавляем влияние ширины колонки на поток с помощью margin-right:-100%, а сам элемент смещаем влево на половину ширины контейнера, то есть на 50%. Получаем именно то, что нам нужно:". Он понимает как работает отрицательный margin и использует это. Для него это просто. И для многих кто прочитал эту запись теперь тоже :)
KISS в примерах
Как использовать KISS php-программисту? Рассмотрим пример — разработать сайт личного блога наподобе wordpress. Если вы ожидаете, что мы сразу начнем писать тоны кода, то вы ошибаетесь. Прежде чем писать код нужно грамотно спроектировать все. Итак:
Идея
Личный блог
Функции
Добавление записей, добавление комментариев, тэги, админка, поддержка шаблонов, регистрации нет, но потом может пригодиться.
Модель БД
Таблица записей(posts) — id_post, post_title, post_content
Таблица тэгов(tags) — id_tag, tag_name
Таблица связей запись — тэги (post2tag) — id_link(id самой записи с взаимосвязью),id_post, id_tag
Таблица комментариев(comment) — id, id_post, id_user, comment
Таблица комментирующих(users4comment) — id_user, user_name, user_mail
Как видите все очень просто и нормализовано
Архитектура блога
Все страницы блога однотипные, стандартный логотип, меню(неизвестно где, но зависит от шаблона), футер и тело страницы. Логично предположить что сюда хорошо вписывается ООП: у нас есть базовый шаблон от которого наследуются все остальные.
Раз уж мы решили использовать ООП, то идеяльно подойдет шаблон HMVC:
У нас есть контролер(controller), который получает все запросы от пользователя, передает модели(model) и результат отдает представлению(view).
Создадим папки: model и view
Моделей у нас 4, все наследуются от базового класса AbstractModel:
MenuModel(отвечает за меню), PostsModel(Отвечает за записи: показ списка, показ одной, обращение к модели комментариев), CommentModel(комментарии), TagModel(список тэгов)
Столько же и представлений будет. На даном этапе мы только проектируем, рефакторинг будет дальше.(хотя проделана уже куча работа по описанию нормализованой БД ).
Хочется уже писать код, но это пока у нас только наметки на разработку. Необходимо еще создать диаграмму связи классов и можно будет уже программировать. Но об этом в продолжении.