IT Notes

Профессия программиста: Абстрактное мышление

Для создания хорошо структурированного кода вам не обойтись без развитого абстрактного мышления. Помните задачи из разряда "выберите лишний объект"? Программирование во многом построено на этом.

Если хотите добиться успеха в программировании, вы должны уметь:

  • находить закономерности и зависимости, отражая их в структуре кода. Конечно, можно писать длинный и запутанный код, который будет решать задачу. Но учитывайте, что хороший код должен быть еще и сопровождаемым, то есть он должен быть ПОНЯТНЫМ, а это достигается путем выделения четких логических структур, смысл которых очевиден без пояснений (комментариев);
  • классифицировать сущности в форме классов и модулей с непротиворечивыми интерфейсами. Неправильный выбор базового класса может привести к серьезным проблемам в будущем. Например, в игровом приложении архитектура может быть построена таким образом, что для каждого игрового объекта создается свой класс. Классическое ООП? А теперь посчитаем. Если объектов всего 5, то ничего страшного. Но если в игре 100 различных типов объектов, то это уже 100 классов! В этом случае нужно искать другие признаки, на основе которых следует строить приложение. Все зависит от типа игры, но в качестве примера можно ограничиться двумя классами: для статических и динамических объектов, которые вольют в себя все те 100 классов. Применяйте ООП правильно;
  • четко разделять приложение по уровням абстракции. Определитесь со структурой приложения. Используйте инкапсуляцию по назначению. В хорошо организованном приложении рядом с кодом графического интерфейса не может находиться SQL-код выборки из базы данных. Рассмотрите возможность применения паттернов (например, MVC);
  • определять алгоритмы в форме процедур и функций. Избегайте побочных эффектов и ненужных зависимостей, которые являются потенциальными ошибками. Руководствуйтесь принципом единой ответственности.

Несколько советов, которые помогут вам развить абстрактное мышление:

  • читайте книги об объектно-ориентированном проектировании и анализе. В качестве неплохого стартового материала могу посоветовать: Объектно-ориентированный анализ и проектирование;
  • потратьте время на изучение стандартных архитектурных решений (паттернов ООП). Нет смысла тратить свое время и усилия на те задачи, для которых уже известны надежные решения. Рекомендую для ознакомления книги: Паттерны проектирования и Приемы объектно-ориентированного проектирования;
  • проявляйте интерес к архитектурным решениям, принятым в чужих успешных проектах. Одного знания паттернов мало. Нужно уметь их правильно и эффективно комбинировать. Неумелое использование паттернов в большинстве случаев только ухудшит структуру кода. Учитесь на чужих примерах, источниками которых вам послужат проекты с открытым исходным кодом и статьи самих авторов об их творениях. Рекомендую книгу Идеальная архитектура. Ведущие специалисты о красоте программных архитектур;
  • больше практики. Чувство уверенности при разработке программ появится у вас только при наличии опыта. Решайте разнообразные задачи и стремитесь к экспериментам.

Похожие публикации