Я программист-студент 3 курса. Пишу на .NET/C# уже 1.5 года. Разрабатывал веб-сервисы, приложения, десктоп приложения на WinForms. Но так получилось, что в офисе нет опытных разработчиков, а тим-лид находится в другом городе -- пришлось самому все учить и делать; из-за чего меня терзают смутные сомнения в правильности моего стиля кодинга и "прямоты" рук. Отсюда такие вопросы:
1. Как улучшить знания по .NET? В частности, ASP.NET MVC, IIS, WPF? (Рихтера читаю, но достаточно ли его?)
2. Где почитать или научиться правильно кодить? Например, банальный код, где if в if, а этот if в другом if. (ReSharper помогает избежать такого, но тем не менее)
1. Заведите аккаунт на Pluralsight, смотрите курсы по .Net, там их очень много. Помимо освоения новых технологий и углубления знаний по уже известным, иногда можно подсмотреть интересные приемы и патерны.
2. Классика: Стив Макконнелл - Совершенный код, Мартин Фаулер - Рефакторинг. Улучшение существующего кода.
1. Рихтер - верный выбор. Это библия .net-чика. Осваивай её в совершенстве.
Работа с коллекциями, обработка данных при помощи LINQ - могу посоветовать книгу Fabio Claudio Ferracchiati "LINQ for Visual C# 2008". Небольшой объём, и содержит много основных приёмов, в том числе обработка XML.
Что касается разделов ASP.NET MVC, IIS, WPF - очень уж широкий охват. Судя по последним веяниям лучше двигаться в сторону веба и ASP.NET MVC. Микрософт слабо развивает линейку десктопа с WPF.
2. Фаулер и GOF-паттерны. Рефакторинг даёт много полезных техник для избежания говнокода. Вторая книга расчтана на более "зрелого" программиста, имеющего опыт и дающая практические рецепты хороших архитектурных решений. Обе книги можно осваивать одновременно. В GOF сложность выше.
** GOF то есть книга авторов Erich Gamma,
Richard Helm и другие "Design Patterns: Elements of Reusable Object-Oriented Software"
Ещё альтернативный способ - ходить на собеседования в компании с целью разведывать требования к специалистам, делать тестовые задания, заполнять "тёмные места" в своей копилке знаний. Так можно понять чего хочет отрасль, какие знания нужны, какие задачи ставятся.
Как улучшить знания? Писать и писать. Придумайте себе проект, например, и реализовывайте его проходя через трудности и проблемы, а в будущем может даже и запустите\выложите его.
По второму вопрос сложно что-то сказать. У всех понимание правильности кода разное, и все его видят по своему. Если кажется что написали не очень, но работает, то просто остановитесь здесь, и подумайте, можно ли как-то оптимизировать. Только не перестарайтесь.
@Boxxy, Вы не правы. Писать и писать можно полный бред и от плохих архитектурных решений и быдлокодинга не спасет. Чтобы писать правельный код, нужно знать как та или иная конструкция языка работает, насколько быстро выполняется тот или иной встроенный в .Net метод, знать что всякие распаковки и запаковки типов тоже влияют на производительность и прочее.
Выше порекомендовали Рихтера - правильный совет, там многое объясняестя с точки зрения CLR
Pluralsight это круто, если Вы еще студент, то по программе DreamSpark можно получить 30-дневный, кажется, доступ к курсам.
Есть еще блоги .NET-чиков, последние обновления на asp.net.