Принципы проектирования для полных 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.
Ответ 5
Несколько других принципов, которые стоит отметить:
C.R.A.P.: Четыре принципа звукового дизайна - Для удобства использования это хорошие принципы, чтобы знать.
Pablo Тема месяца - Март: SOLID Principles - Есть и хорошие идеи.
Ответ 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.
В то время как это также не учебник, у него отличные примеры кода и одинаково большое обсуждение шаблонов проектирования и программирования в целом. Это отличный ресурс по обучению мыслить как программист.
Ответ 9
Я предлагаю Структура и интерпретация компьютерных программ, которая доступна в режиме онлайн в виде книги, а также он-лайн курс.
Это не книга по шаблонам дизайна, но она поможет вам разработать хорошие основы для создания приложений.
Ответ 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
Забудьте о книгах. По моему опыту (который включает время как инструктора и писателя курсов дизайна ОО), некоторые люди могут делать дизайн, а какой-то попл не может - это талант, как быть скульптором. В лучшем случае чтение книг по этому предмету позволит вам плохо спроектировать, если у вас нет таланта.