Лучший способ изучить лучшие практики .NET / OOP?

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

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

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
17
0
7 485
8
Перейти к ответу Данный вопрос помечен как решенный

Ответы 8

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

Тогда я бы порекомендовал им прочитать следующее:

Это должно дать каждому достаточно прочную основу для лучших практик ООП.

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

План эпизода выглядит примерно так:

  • Обзор ценностей и практик Agile
  • Основные принципы объектно-ориентированного проектирования
  • Паттерны проектирования в действии
  • Основы модульного тестирования
  • Макетные объекты
  • TDD
  • Организация файлов / папок проекта
  • Основы управления версиями
  • Непрерывная интеграция / автоматизация сборки
  • Принципы гибкого планирования проектов
  • Обзор основных концепций предметно-ориентированного дизайна

Автор серии также сделал серию Лето NHibernate, которая была достаточно популярной.

В дополнение к этому, на dnr-tv Жан Поль Буду сделал пять эпизодов о шаблонах проектирования и два - о разработке через тестирование, я бы рекомендовал взглянуть и на них.

По совпадению, я на полпути прочитал книгу VB.net (опубликованную Apress), которая довольно хороша.

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

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

Я помогаю другу, который находится именно в той ситуации, о которой вы говорите. Он парень HW, который раньше работал с Си.

Я думаю, что лучший подход - наставничество и кодирование. Я объясняю ему несколько концепций, а затем прошу его написать код. Мы только что создали простой калькулятор на нескольких платформах (WCF, Silverlight, XNA, ...) и использовали некоторые хорошо известные шаблоны (состояние, MVP ...).

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

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

IMHO разделение проблем и модульное тестирование лучше объясняется и понимается с помощью кодирования и необходимости реализации новых функций; специально для начинающих программистов. Как только он купит, я бы порекомендовал ему прочитать "Шаблоны проектирования" GOF или некоторые из его более простые варианты.

Ответ принят как подходящий

Есть две отдельные, хотя и связанные цели:

  • Быть хорошим OO-разработчиком

и

  • Быть хорошим .NET-разработчиком

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

Если у вас есть возможность сделать это, найдите себе работу или команду, в которой кто-то из опытных желает наставничать.

Затем осознайте, что вам нужно много читать как в Интернете, так и вне его. Если ваша скорость чтения средняя или ниже (около 250 слов в минуту или меньше), вам следует подумать о посещении учебного курса по технике чтения. Я прошел курс с Группа записи (Новая Зеландия) и утроил свою скорость чтения.

Что касается книг, Объектное мышление из Microsoft Press будет хорошей отправной точкой; Я бы проделал это с Программирование компонентов .NET (Джувал Лоуи) и Шаблоны передовой практики Smalltalk (Кент Бек), затем Прагматичный программист (Хант и Томас).

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

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

Из-за этого я бы рекомендовал прочитать, но когда вы садитесь писать код, начинайте работать с NUnit и практиковаться в TDD (или BDD и т. д.). Это поможет вам сделать две вещи.

  1. Это заставит вас разделить классы. Трудно действительно протестировать код со многими зависимостями. Если вы действительно хотите заняться этим и написать тесты, вам нужно будет разделиться. Это хорошее место, чтобы начать применять все рекомендованные материалы. :)

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

Я думаю, вам нужно сначала понять, что для того, чтобы стать «хорошим» программистом, который понимает ООП и передовой опыт, нужно время и опыт. Не существует волшебной комбинации книг, блогов или тренировок, чтобы воспроизвести время в окопах.

Мой совет, основанный на моем собственном опыте, - не слишком беспокоиться о том, что вы не следуете лучшим практикам, и просто пишите код. Если вы новичок в ООП или .NET, вы собираетесь делать глупости. Вы будете делать противоположные «передовым методам», пока не сделаете достаточно ошибок, чтобы на них учиться.

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

Теперь, когда вы без опасений пишете много кода, вам нужно будет дополнить его знаниями извне. В порядке важности:

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

  2. Прочтите другой код ООП .NET. Открытым источник отлично подходит для этого! Изучите это, расширить его, добавить функции в OSS проект, даже если вы никогда не совершаете.

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

  4. Читайте сети. Это включает блоги, stackoverflow и т. д.

Удачи!

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

Другие вопросы по теме