Основные концепции программирования и проектирования

Категория: IT / WEB / Internet

Давайте кратко рассмотрим основные принципы проектирования и программирования.

Помните! Программирование - это всего лишь средство для достижения цели.
Вопросы без ответа!
  • 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 минуты - делайте прямо сейчас.

Больше правил хорошего тона...