2008-11-15 113 views
15

我對.NET編程(以及一般的OOP)比較陌生,在設計我的應用程序時,我想確保不會開發不好的初學者習慣。學習.NET/OOP最佳實踐的最佳方法?

如果您正在招聘一位新的.NET開發人員,並且必須儘快讓他加快速度,但也希望確保他採用最佳實踐(例如,單一責任原則,單元測試,關注點分離),什麼會是你推薦的學習路線?

我最近一直在聽Polymorphic Podcast,並且在傾聽最佳實踐的討論時很有幫助,但我發現缺少旨在介紹這些最佳實踐的截屏視頻和代碼示例。

回答

15

有兩個獨立的,但相關的,目標:

  • 要成爲一名優秀的面向對象開發

  • 要成爲一名優秀的.NET開發人員

後者的優秀要求至少有g在前者,但都需要努力工作。不要陷入微軟的思維模式,甚至是.NET環境 - 你需要在廣泛的領域發展熟悉度。

如果你有靈活性,這樣做,發現自己工作或團隊裏有人有經驗是願意做一些指導。

接下來,認識到你需要做大量的在線閱讀和閱讀。如果您的閱讀速度是平均水平或更低(每分鐘約250字以內),那麼您應該考慮參加有關閱讀技巧的培訓課程。我已經完成了Write Group(新西蘭)的課程,我的閱讀速度提高了三倍。

在書籍方面,從微軟出版社Object Thinking將是一個很好的起點;我會遵循Programming .NET Components(Juval Lowy)和Smalltalk Best Practice patterns(Kent Beck),然後是The Pragmatic Programmer(Hunt and Thomas)。

之後,拖網各地(在計算器上或其他地方),並找到推薦的書籍和博客列表。繼續閱讀 - 嘗試至少每兩個月閱讀一本關於新主題的新書,如果不是每月。

4

如果你喜歡屏幕錄像,請看Autumn of Agile。現在還沒有那麼多集,但我相信他會涵蓋一些最重要的最佳實踐。

情節的計劃看起來是這樣的:

  • 敏捷價值觀和實踐概述
  • 基本OO設計原則
  • 設計模式在行動
  • 單元測試基礎
  • Mock對象
  • TDD
  • 項目文件/摺疊呃組織
  • 源控制基礎
  • 持續集成/自動化構建
  • 敏捷項目規劃原則
  • 概述領域驅動設計核心概念

系列的作者也做了一系列的Summer of NHibernate ,這已經很受歡迎。

除此之外,在dnr-tv Jean Paul Boodhoo在設計模式上做了5集,在測試驅動開發方面做了5集,我也建議看看這些。

0

巧合的是,我讀了一個VB的一半。淨書(由Apress出版),這是相當不錯的。

雖然有豐富的網絡上的精彩教程,我建議操作裝配購買一本書,他們一般都在他們的方法有很多更專業。

儘管聽起來很瘋狂,但我發現在學習編程時不要坐在我的電腦上!我總是閱讀一兩章,然後去我的電腦,並真正做到這一點。

0

我正在幫助一個恰好在你提及的情況中的朋友。他是一位過去曾與C合作過的硬漢。

我認爲最好的方法是指導和編碼。我向他解釋一些概念,然後讓他編寫一些代碼。我們在多個平臺(WCF,Silverlight,XNA,...)中構建了一個簡單的計算器,並使用了一些衆所周知的模式(狀態,MVP ...)。

我強迫他使用良好的編程實踐,並通過基於他的錯誤詢問他新的功能來重構代碼。例如,如果他加上了幾個組件,如視圖和控制器我會問他,一個新的觀點......這顯然讓他重寫一堆代碼和他認識有更好的方法...

在通過這種方式,他是一個自然脫鉤的人,更重要的是「爲什麼是好」。我對迄今爲止的結果非常滿意。他對單元測試非常滿意,並且它如何讓他輕鬆地更改代碼。

恕我直言,關注問題和單元測試的分離可以通過編碼和必須實現新功能來更好地解釋和理解;特別針對新程序員。一旦他買入,我會建議他閱讀GOF或其simpler varians的一些「Design Patterns」。

2

我在這裏看到很多很好的資源,但大部分都是專注於閱讀和學習材料。雖然這些都是必不可少的,但我發現,直到我實際上使用了一種模式,或者更多的概念或者任何一次或多次時,他們纔會真正點擊。

因此,我會推薦閱讀,但是當你坐下來代碼開始使用NUnit和實踐TDD(或BDD等)。這會幫助你做兩件事。

  1. 它會迫使你解耦你的課程。很難真正測試有很多依賴的代碼。如果你想真正進入並編寫測試,你需要解耦。這是開始應用所有推薦閱讀的好地方。 :)

  2. TDD將幫助您思考如何在編寫代碼之前與代碼進行交互。我發現抽象地思考一個設計與從外部編碼界面是不同的,而後者對於將這些部分拼湊在一起更有用。

1

我認爲您需要先了解,作爲一名瞭解面向對象和最佳實踐的「優秀」程序員需要時間和經驗。沒有任何書籍,博客或培訓的魔術組合可以在戰壕中複製時間。

基於我自己的經驗,我的建議是不要太擔心你沒有遵循最佳實踐,只是編寫代碼。如果你是OOP或.NET的新手,你會做一些愚蠢的事情。你會做出與「最佳實踐」相反的做法,直到你犯了足夠的錯誤才能向他們學習。

特異性訓練的理論指出,你應該專門做你想變得更好的。這意味着編寫大量代碼以更好地編寫代碼。

現在,一旦你寫出了許多沒有恐懼的代碼,你需要補充外部知識。按重要性排序:

  1. 直接與其他有經驗的人直接合作。這是加快速度的最快方法。

  2. 閱讀其他OOP .NET代碼。打開 源代碼非常適合這個!研究它, 擴展它,即使你永遠不會提交,也可以向OSS 項目添加功能。

  3. 閱讀書籍。我的意思是 書...不是博客。書籍有更多的 空間擴大一個主題,並 最好的人真的是 從頭開始在給定的 主題。我推薦Code Complete作爲一本很棒的第一本書。

  4. 閱讀'網。這包括 博客,計算器等。

祝你好運!