Принципы проектирования для полных noobs?

Я программировал около года, и все, что я написал, - это очень плохо написано с моей точки зрения. Я хотел бы узнать, есть ли (бесплатные) хорошие книги по разработке программного обеспечения там, которые могут предложить небольшое руководство для начинающего программиста? Я не думаю, что у меня было бы столько проблем, если бы я немного знал о процессах мысли, которые входят в разработку программного обеспечения.

Ответы

Ответ 1

Читайте код других людей. Это лучший способ узнать лучшие принципы дизайна. Читайте код людей на вашей работе, читайте код людей на форумах, смотрите на проекты с открытым исходным кодом... и никогда не прекращайте кодировать, потому что лучший учитель - ошибки, которые вы делаете на своем пути...

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

Ответ 2

Head First Design Patterns может быть более мягким вступлением в книгу GoF "Design Patterns"

Steve McConnell Code Complete является хорошим руководством ко многим вещам, включая способы использования хороших стратегий на языках, которые не поддерживают их.

Мартин Фаулер Refactoring в значительной степени относится к Design Patterns, но является отличным каталогом так называемого кода и лучшими способами написания он (я прочитал это примерно в то же время, когда прочитал "Code Complete", пару лет [tsk tsk], прежде чем читать "Образцы дизайна", а "Рефакторинг" оказал большое влияние на то, как я смотрел код, который я написал. Мне нравится думать).

Ни один из них не является "бесплатным". Но насколько полезен вам совет? Если вы пытаетесь инвестировать в свою карьеру, это самый дешевый способ сделать это.

Ответ 3

DRY и YAGNI - хорошие отправные точки для новичков, и вам нужно изучить и понять OOP.

Что касается Design Patterns (которые немного более продвинутые и абстрактные, чем DRY и OOP), вы можете изучить из бесплатного Шаблоны проектирования - Java Companion. Тот факт, что это не Python, не должен вас беспокоить - классические шаблоны дизайна применимы повсюду.

Когда вы захотите перейти дальше, посмотрите DDD (бесплатно DDD-книга от Eric Evans) и, конечно, Unit Testing, которые, верьте или нет, улучшат ваш код, а вы как дизайнер.

Ответ 4

Похоже, вы хотите книгу о шаблонах дизайна.

Взгляните на: Шаблоны проектирования - элементы многоразового объектно-ориентированного программного обеспечения. Предупреждение, что это не специфично для Python.

Вы также можете взять на этом онлайн-ресурсе шаблоны проектирования Python.

У пользователя Stackoverflow @S.Lott также есть много действительно хороших ресурсов Python, которые он написал. Вы можете увидеть их на его странице Stackoverflow.

Ответ 6

Имея год опыта программирования, я не буду предлагать Design Patterns (или Head First Design Patterns), так как я думаю, что Design Patterns (концепции) лучше всего обрабатывать, когда у вас больше опыта программирования, возможно, больше, как 5-10 лет опыта.,

Я думаю, что книга Эндрю Ханта и Дэвида Томаса "Прагматичный программист: от подмастерья до Мастера ", возможно, является лучшим выбором для того, чтобы получить максимальную отдачу от заработной платы на том уровне, на котором вы сейчас находитесь. Вот отличное резюме тем и содержания (от Джеффа Этвуда из Coding Horror). Используйте межбиблиотечный заем, если вы не можете позволить себе приобрести собственную копию.

cover of The Pragmatic Programmer

Двумя другими названиями, которые также являются независимыми от языка и в то же время классическими книгами, настоятельно рекомендуется для начинающих программистов, о которых вы можете помнить: "Мифический человеко-месяц" (юбилейное издание, опубликованное в 1995 году) Фреда Брукса, и " Code Complete" (второе издание) Стивена Макконнелла,

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

Ответ 7

Проверьте эту книгу: Head First Design Patterns... буквально. Проверьте это. Из библиотеки.

Ответ 8

Это не книга (книги настолько пассированы), но это определенно полезно потратить несколько часов на чтение Portland Pattern Repository.

В то время как это также не учебник, у него отличные примеры кода и одинаково большое обсуждение шаблонов проектирования и программирования в целом. Это отличный ресурс по обучению мыслить как программист.

Ответ 10

Я бы определенно добавил еще одну книгу. Я думаю, что " Чистый код " Боба Мартина - очень хорошая книга, рассказывающая, как писать код, который можно поддерживать. Он вводит несколько простых правил, которые приводят к тому, что код очень хорошо структурирован и читаем.

Ответ 11

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

Когда вы пишете код, задайте следующие вопросы:

  • Как я могу проверить его?
  • Как мне его отладить?
  • Что я могу делать снова и снова?

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

Ответ 12

Head First Design Patterns - хорошее место для начинающего. Это, вероятно, легче войти, чем Банда четырех книг.

Ответ 13

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

Учебное пособие по ООП в Python

Объектно-ориентированное программирование - это способ организовать ваши программы таким образом, чтобы отображать вещи в проблеме, которую вы пытаетесь решить.

Е.И.В.

... Richie

Ответ 14

Изучите другой язык! Я люблю питон, и, несмотря на все, что говорит, мой питон лучше, потому что я знаю java. (Некоторые люди жалуются, что, начиная с java, вы начинаете писать неуклюжий python, но если вы уже знаете более или менее простой способ сделать что-то в python, вы будете в безопасности от этого.)

Позвольте мне сделать немного операции с бензопилой здесь. Легко писать питон в первый раз. Я пишу это в vim, потому что могу и потому, что я люблю vim. Легко поддерживать и рефакторировать java, если у вас есть IDE. Я пишу java в Eclipse, потому что без нее я буду безнадежен. Но дело в том, что писать на языке, который заставляет вас использовать абстракции с помощью инструмента, облегчающего абстракции, будет медленно формировать ваш мозг для более абстрактного кода. Вы вернете это на python, хотя предпочтительные абстракции будут немного отличаться.

Ответ 15

Ничего себе, я удивляюсь, почему до сих пор никто не говорил, что U действительно не должен слишком углубляться в теорию. Через год Ur код уродливый. Нечего делать. Если U получит большинство вещей, которые U хочет закончить, это уже очень удивительно. Но U не может обманывать мозг Ура с теорией. Просто продолжайте писать и злитесь на код Ur. Это лучший способ писать лучше. Возьмите Ur время, чтобы подумать о том, как писать рабочий код в более удобочитаемом/пригодном для использования/поддерживаемом способе так часто, как U. И: Прочтите код других людей + получите отзывы о Ur code! Там должны быть люди, которые могут писать лучше, чем U. Учитесь на примере!

И, возможно, 20% времени программирования Ur (это означает, что если код U каждый день, не более 2 месяцев в году!), получите некоторую теорию.

Почему бы не начать с масс теории? U убивает мотив Ur и инстинкт Ur. Но когда U сидит там и пытается решить проблему, это в основном о правильном инстинкте. С слишком большой теорией U недооценивает проблему и решения Ur. Но Ур инстинкт будет по-прежнему на уровне опыта Ур, независимо от того, сколько U читал.

(извините, если плохой английский, а не мой матушка)

Ответ 16

Получите банду из четырех книг - образцы дизайна.. Но, пожалуйста, не заходите за ним и старайтесь использовать Singleton везде:)

Просто знай это и используйте его с умом. Кроме того, после этого посмотрите на хороший открытый исходный код и попытайтесь изучить их структуры.. Я предлагаю код google и sourceforge

Ответ 17

В зависимости от вашего фона (и в некоторой степени опыта) вы также можете посмотреть, как основные алгоритмы. Хорошим началом является книга типа Введение в алгоритмы.

Кроме того, я также проголосую за Head First Design Patterns. GoF лучше работает в качестве ссылки позже.

Ответ 18

Забудьте о книгах. По моему опыту (который включает время как инструктора и писателя курсов дизайна ОО), некоторые люди могут делать дизайн, а какой-то попл не может - это талант, как быть скульптором. В лучшем случае чтение книг по этому предмету позволит вам плохо спроектировать, если у вас нет таланта.