Основные концепции программирования и проектирования
Давайте кратко рассмотрим основные принципы проектирования и программирования.
Помните! Программирование - это всего лишь средство для достижения цели.
Вопросы без ответа!
- ActiveRecord классы не выдерживают первый принцип SOLID - Single Responsibility (принцип единственной ответственности). Так ли это, и в чем тогда причина популярности AR? Ведь AR, как ORM, используется довольно активно.
- DRY (Don't Repeat Yourself) - Не делайте одну и ту же работу дважды
- Это фундаментальный принцип в программировании, который утверждает, что нужно избегать повторения. Каждый значительный кусок кода должен быть реализован только один раз!
- KISS (Keep It Simple, Stupid!) - Не усложняй, тупица!
- Старайтесь писать код на столько простой, на сколько это возможно. Простой код легче поддерживать - он быстрее читается и имеет меньше ошибок.
- YAGNI (You Aren't Going to Need It) - Вам это не понадобится
- Не добавляйте функциональность пока она вам не нужна. Вы только потратите время на реализацию, отладку, тестирование и поддержку, а также этот код будет постоянно маячить.
- SOLID
- Это аббревиатура пяти основных принципов дизайна классов в
объектно-ориентированном проектировании - Single responsibility,
Open-closed, Liskov substitution, Interface segregation и Dependency Inversion. Подробнее.
SRP () - Принцип единой ответственности. - У класса должна быть только обязанность и одна причина для его изменения. Для этого учитесь правильно распределять обязанности. Попытайтесь сформулировать обязанность класса одним простым предложением без использования союзов - и, или, либо. Присмотритесь внимательно! Что должен, и что реально может (знает, делает) этот класс. Видео: http://www.youtube.com/watch?v=LB646me9Yng
OCP () - Принцип открытости/закрытости
LSP() - Принцип подстановки Барбары Лисков
ISP () -
DIP (Dependency Inversion) - Принцип обращения зависимостей
Другие принципы: CRP, CCP, SDP, SAP, ADP, REP... - GRASP (General Responsibility Assignment Software Patterns) - общие образцы распределения обязанностей
- Это паттерны, используемые в объектно-ориентированном проектировании для решения общих задач по назначению обязанностей классам и объектам. Подробнее.
- Как сделать это просто?
- Делай сразу простейшую вещь, которая точно заработает. В процессе проработки архитектуры задавайте себе вопрос: "Как проще всего заставить ЭТО сразу заработать?". Это удержит вас на пути к простоте дизайна архитектуры.
- Правило 2 минут
- Известное правило из GTD - если вы на 100% уверены, что задачу можно решить не более чем за 2 минуты - делайте прямо сейчас.