Какой список шаблонов и принципов должен знать программист?

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

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

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


person pang    schedule 01.06.2010    source источник


Ответы (8)


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

При этом исходная книга Шаблоны проектирования все еще остается одной из моих любимых. По мере продвижения выбирайте другие шаблоны.

person Mark Seemann    schedule 01.06.2010
comment
а когда не делать - однозначно самое важное, что нужно помнить. Многие люди поначалу сходят с ума по шаблонам и пытаются превратить все в шаблоны, иногда делая очень простой код намного более сложным без всякой выгоды. - person Hans Olsson; 01.06.2010

Я бы начал с принципов, а закономерности - на втором месте.

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

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

Выкройки:

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

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

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

  • Творческий
  • Структурные
  • Поведенческий
person Adrian K    schedule 01.06.2010
comment
Я думаю, что Мартин Фаулер называет DIP внедрением зависимостей (DI). en.wikipedia.org/wiki/Dependency_injection - person anonymous; 01.06.2010

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

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

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

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

person anonymous    schedule 01.06.2010
comment
Спасибо, мистер Ройс, есть какие-нибудь книги с предложениями по тому, что вы перечисляете? - person pang; 01.06.2010
comment
Мне очень полезна серия Pragmatic Bookshelf - pragprog.com/titles. Поскольку большинство из них довольно короткие, из них тоже получаются хорошие вводные тексты :) Я считаю, что в SO есть довольно много сообщений о хороших книгах, я постараюсь найти их, а затем отредактировать ответ. - person anonymous; 01.06.2010

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

person Niki    schedule 01.06.2010

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

И строить с ними всякие штуки.

person mathk    schedule 01.06.2010

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

Javascript: хорошие моменты Дугласа Крокфорда, чтобы действительно понять как работает Javascript.

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

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

person Daniel Lee    schedule 01.06.2010

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

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

person Marnix van Valen    schedule 01.06.2010

Я думаю, что все шаблоны, описанные в книге Шаблон дизайна прежде всего, - это минимум, который должен знать дизайнер / программист. Я предлагаю эту книгу, чтобы начать изучение шаблонов проектирования. Другая книга, Рабочая тетрадь по шаблонам проектирования, также может пригодиться.

person gtiwari333    schedule 23.05.2011