Какой список паттернов и принципов должен знать / должен знать программист? - PullRequest
5 голосов
/ 01 июня 2010

Я программирую уже несколько лет и до сих пор чувствую, что мои знания недостаточно широки, чтобы стать профессионалом. Я изучил некоторые книги, связанные с шаблонами проектирования, но я знаю, что есть много других.

Так может ли кто-нибудь перечислить модели и принципы, которые, по вашему мнению, полезно изучить, чтобы стать лучшим программистом и более профессиональным?

Языки программирования, на которых я работаю: C #, Ruby, Javascript.

Ответы [ 8 ]

8 голосов
/ 01 июня 2010

Энциклопедические знания шаблонов проектирования никуда вас не приведут. Множество опыта применения их будет. Это научит вас, когда их использовать, а когда нет.

Тем не менее, оригинальная Design Patterns книга по-прежнему остается одной из моих любимых. Подбирай другие паттерны.

3 голосов
/ 01 июня 2010

Принципы - это то, с чего я бы начал, паттерны были близкими секундами.

Принципы: Есть целый плот, но это те, от которых я получаю практический пробег:

Многие из них (при группировании) известны как SOLID (объектно-ориентированный дизайн).

Модели:

  • Мой любимый биггет на милю - это Принцип инверсии зависимостей (DIP), также широко известный как (или, по крайней мере, очень похожий) Инверсия управления (IoC). Это действительно хорошо для абстрагирования реализации доступа к данным за интерфейсами. Мартин Фаулер называет его по-другому (извините, передо мной нет моей копии «Шаблонов архитектуры корпоративных приложений»).
  • Ленивая загрузка также полезна.
  • Заводской шаблон очень хорошо известен - по уважительной причине.
  • Фасад также помог мне избежать неприятностей.

В Википедии есть довольно хороший список шаблонов проектирования программного обеспечения , при условии, что вы его еще не видели.

И последнее, что следует иметь в виду, - это три основных типа шаблонов (плюс четвертая категория для многопоточных / параллельных); это может помочь просто знать об этих категориях и помнить их, когда вы что-то делаете, они:

  • 1056 * Творения *
  • Структурное
  • Поведенческие
3 голосов
/ 01 июня 2010

Некоторые из более не зависящих от языка навыков, которые я сейчас изучаю / работаю над улучшением моего кодирования в целом.

  • Написание чистого, удобочитаемого и обслуживаемого кода
  • Рефакторинг
  • Правильный объектный дизайн для языков ООП
  • Использование правильной системы контроля источника правильно. Sourcesafe не считается: D
  • Модульное тестирование и разработка через тестирование
  • Правильное применение шаблонов дизайна. Изучать их - это одно, а когда и где их применять - гораздо сложнее.

Некоторые ссылки на вопросы о рекомендациях для книг @ SO:

И, конечно, Книги прагматического программиста , как упоминалось в предыдущем комментарии.

2 голосов
/ 01 июня 2010

Овладение инструментами (например, парадигмы программирования, шаблоны, управление исходным кодом, модульные тесты ...) очень важно, но этого недостаточно для того, чтобы называть себя «профессионалом»: ИМХО, отличительной чертой действительно профессионального программиста является способность понимать что нужно ее клиенту К сожалению, такого рода знания очень трудно извлечь из книги.

1 голос
/ 01 июня 2010

Я думаю, что лучший способ - выучить много языков. LISP, Scheme, Python, Smalltalk, Erlang, Prolog, Eiffel и многие другие

И создавайте вещи из них.

0 голосов
/ 23 мая 2011

Я думаю, Все шаблоны, описанные в книге Head First Design Pattern , - это минимум, который должен знать дизайнер / программист. Я предлагаю эту книгу, чтобы начать изучать шаблоны проектирования. Еще одна книга, Книга по шаблонам проектирования , также хороша для практики.

0 голосов
/ 01 июня 2010

В дополнение к написанию кода вы должны также попробовать чтение кода. Например, загрузите код из проектов с открытым исходным кодом, попробуйте поработать с ним и понять, что он делает и почему. Или попробуйте просмотреть свой собственный код из предыдущего проекта. Что бы вы сделали по-другому сейчас? Вы все еще можете понять, почему вы сделали это так, как сделали?

Возможно, вы также захотите взглянуть на некоторые практики, которые появились в гибком сообществе. Особенно Test Driven Development приходит на ум как отличный способ улучшить качество вашего кода.

0 голосов
/ 01 июня 2010

Мартин Фаулер Шаблоны архитектуры корпоративных приложений для создания общего словаря с другими разработчиками (например, Репозиторий, Активная запись, Модель предметной области, Единица работы).

Javascript Дагласа Крокфорда : The Good Parts , чтобы на самом деле понять, как работает Javascript.

И я бы очень рекомендовал попасть в TDD (Test Driven Development). Есть куча хороших книг по TDD, но если вы занимаетесь разработкой «коричневого поля» (а это большинство из нас), то я бы порекомендовал «1009 * Эффективная работа с устаревшим кодом» Майкла Фезера .

И, наконец, книга, в которой показано, насколько эффективным может быть переработанный и чистый код: Чистый код дяди Боба .

...