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





Если бы, как в вашем гипотетическом примере, я нанимал нового разработчика .NET и хотел убедиться, что он применяет передовые методы, я бы начал с того, что заставил их просмотреть мою текущую базу кода.
Тогда я бы порекомендовал им прочитать следующее:
Это должно дать каждому достаточно прочную основу для лучших практик ООП.
Если вам нравятся скринкасты, взгляните на Осень Agile. Пока что выпущено не так много серий, но я считаю, что он расскажет о нескольких наиболее важных передовых методах.
План эпизода выглядит примерно так:
Автор серии также сделал серию Лето NHibernate, которая была достаточно популярной.
В дополнение к этому, на dnr-tv Жан Поль Буду сделал пять эпизодов о шаблонах проектирования и два - о разработке через тестирование, я бы рекомендовал взглянуть и на них.
По совпадению, я на полпути прочитал книгу VB.net (опубликованную Apress), которая довольно хороша.
Хотя в Интернете есть множество отличных руководств, я настоятельно рекомендую купить книгу, они, как правило, намного более профессиональны в своем подходе.
И как бы безумно это ни звучало, я считаю, что гораздо лучше НЕ сидеть за компьютером во время обучения программированию! Я всегда читаю пару глав, затем иду за компьютером и делаю это по-настоящему.
Я помогаю другу, который находится именно в той ситуации, о которой вы говорите. Он парень HW, который раньше работал с Си.
Я думаю, что лучший подход - наставничество и кодирование. Я объясняю ему несколько концепций, а затем прошу его написать код. Мы только что создали простой калькулятор на нескольких платформах (WCF, Silverlight, XNA, ...) и использовали некоторые хорошо известные шаблоны (состояние, MVP ...).
Я заставляю его использовать хорошие методы программирования и рефакторинг кода, задавая ему новые функции, основанные на его ошибках. Например, если бы он соединил пару компонентов, таких как View и Controller, я бы попросил его дать новое представление ... это, очевидно, заставляет его переписать кучу кода, и он понимает, что есть способы получше ...
Таким образом, именно он придумывает естественное разделение и, что более важно, «почему это хорошо». Я очень доволен результатами; он очень доволен модульным тестированием и тем, как оно позволяет ему легко изменять код навсегда.
IMHO разделение проблем и модульное тестирование лучше объясняется и понимается с помощью кодирования и необходимости реализации новых функций; специально для начинающих программистов. Как только он купит, я бы порекомендовал ему прочитать "Шаблоны проектирования" GOF или некоторые из его более простые варианты.
Есть две отдельные, хотя и связанные цели:
и
Будучи отличным на последний потребует, по меньшей мере хорошо на первый, но и потребует напряженной работы. Не зацикливайтесь на мировоззрении Microsoft или даже .NET - вам необходимо познакомиться с широким спектром областей.
Если у вас есть возможность сделать это, найдите себе работу или команду, в которой кто-то из опытных желает наставничать.
Затем осознайте, что вам нужно много читать как в Интернете, так и вне его. Если ваша скорость чтения средняя или ниже (около 250 слов в минуту или меньше), вам следует подумать о посещении учебного курса по технике чтения. Я прошел курс с Группа записи (Новая Зеландия) и утроил свою скорость чтения.
Что касается книг, Объектное мышление из Microsoft Press будет хорошей отправной точкой; Я бы проделал это с Программирование компонентов .NET (Джувал Лоуи) и Шаблоны передовой практики Smalltalk (Кент Бек), затем Прагматичный программист (Хант и Томас).
После этого исследуйте (на StackOverflow или где-нибудь еще) и найдите списки рекомендованных книг и блогов. Продолжайте читать - старайтесь читать новую книгу на новую тему хотя бы раз в два месяца, если не ежемесячно.
Я вижу здесь много хороших ресурсов, но большинство из них сосредоточено на чтении и изучении материалов. Хотя они, безусловно, необходимы, я считаю, что они на самом деле не щелкают, пока я действительно не использую шаблон, юеристику, концепцию или что-то еще один или несколько раз.
Из-за этого я бы рекомендовал прочитать, но когда вы садитесь писать код, начинайте работать с NUnit и практиковаться в TDD (или BDD и т. д.). Это поможет вам сделать две вещи.
Это заставит вас разделить классы. Трудно действительно протестировать код со многими зависимостями. Если вы действительно хотите заняться этим и написать тесты, вам нужно будет разделиться. Это хорошее место, чтобы начать применять все рекомендованные материалы. :)
TDD поможет вам подумать о том, как вы хотите взаимодействовать со своим кодом, еще до того, как вы его напишете. Я считаю, что абстрактное мышление о дизайне отличается от фактического кодирования интерфейса извне, и последнее более полезно для объединения частей.
Я думаю, вам нужно сначала понять, что для того, чтобы стать «хорошим» программистом, который понимает ООП и передовой опыт, нужно время и опыт. Не существует волшебной комбинации книг, блогов или тренировок, чтобы воспроизвести время в окопах.
Мой совет, основанный на моем собственном опыте, - не слишком беспокоиться о том, что вы не следуете лучшим практикам, и просто пишите код. Если вы новичок в ООП или .NET, вы собираетесь делать глупости. Вы будете делать противоположные «передовым методам», пока не сделаете достаточно ошибок, чтобы на них учиться.
Теория специфического тренинга гласит, что вы должны делать именно то, в чем вы хотите стать лучше. Это означает, что нужно писать много кода, чтобы лучше писать код.
Теперь, когда вы без опасений пишете много кода, вам нужно будет дополнить его знаниями извне. В порядке важности:
Работайте напрямую с другими людьми, у которых больше опыта, чем у вас. Это самый быстрый способ набрать скорость.
Прочтите другой код ООП .NET. Открытым источник отлично подходит для этого! Изучите это, расширить его, добавить функции в OSS проект, даже если вы никогда не совершаете.
Читать книги. Я конкретно имею в виду книги ... не блоги. В книгах больше комната для расширения темы и лучше всего для людей, которые действительно начиная с нуля по заданному тема. Я рекомендую Код Полный как отличную первую книгу.
Читайте сети. Это включает блоги, stackoverflow и т. д.
Удачи!
PluralSight библиотека паттернов и принципы объектно-ориентированного дизайна превосходны. Небольшая ежемесячная подписка того стоит. Мне намного легче учиться на хорошо объясненных онлайн-уроках, чем читать книги.