当前位置: 代码迷 >> .NET面试 >> 请问哪些比较适合阅读的C#代码
  详细解决方案

请问哪些比较适合阅读的C#代码

热度:9   发布时间:2016-05-02 01:22:08.0
请教哪些比较适合阅读的C#代码
最近在学C#,同时在重学英语(一种模仿幼儿学母语的思路),有一种新的感触:编程语言也是一门语言,是不是也可以用学语言的方法去学习?
自己认为是可行的,打算去这么做,但遇到一个难题:
不知道哪些代码比较适合阅读?
大致标准如下:类似语文课本中的课文,书写比较规范,有一定通用性,在阅读过程中可以体会作者的思维。不需要很长,但要完整。就像一片课文,也许不长,也许很简单,但是一个完整的文章。
大致说就是想找那种比较官方或者超级大牛写的代码。
HELP中的代码确实不错,但有一个很大问题,这些代码都是片段,目的是帮助理解函数的。
由于接触不久,希望坛友能给点思路,或者直接给出,或者指点方向,剩下我自己动手。感激不尽。

另外,可能很多人会说,编程重要的是写。这话没错,但写文章重要的也是写。在写之前,需要有大量的阅读作为基础。我就是想找大量优秀代码阅读,体会作者的意图,为写代码做铺垫。

最后,非常非常感谢~~~

------解决思路----------------------
循序渐进,先去学你现在看得懂的代码,然后慢慢再深入。一下子看太深入的很吃力,也未必就看得懂。
------解决思路----------------------
完全按照学人类语言的方法学编程不可行。

编程需要的是抽象分析能力、而不是仅仅掌握一些文法和语法而已。

这就好比,4~5岁的小孩,掌握几千个词汇,并且完全掌握一种自然语言的语法和文法没有任何问题,但是他肯定不能写论文和报告(或者说他不会写,仅仅口头表达)。再比如,你不会做数学题,不是因为看不懂题目,而是因为你没有掌握数学的思维方式和解题方法。

很多人说,用自然语言编程可以解决编程的问题——事实上根本是妄想。为什么一般人不能写程序,是因为他们没有接受过专业的训练,无法将模糊的需求转换成逻辑清晰的模型,以及用机器可行的方式解决问题。这不是程序的语法词法不理解造成的。

什么叫可行的方式解决问题?就好比你看到了学习自然语言和学习编程语言的某种共性,但是没有看到这种方案在时间成本上的荒谬之处——通过无意义的,随机的代码片断作为你学习的样本,通过慢慢发现其中的规律在无意识中学会编程或许你阅读1亿行代码和花费1万年或许有效,但是这完全超出了你的寿命,因为不经济,没效果而在现实中是根本不可行的。
------解决思路----------------------
可能你没有意识到一个问题,自然语言的训练样本大的惊人——你一天中听到电视中、广播中、家人、朋友、陌生人和你讲的话加在一起有几万字到几十万字——差不多和一部中篇小说差不多(播音员的语速大约每分钟300字,看一次新闻联播就有近万字)。而人接受这个训练的时间又长达很多年。而且这个学习的过程不断有输入,有模仿,有反馈。

你根本没法有这么大的学习样本来学习编程——在机器学习中,这叫做样本的稀疏性,它导致学习的效果几乎没有。

换一个角度想想,这个世界没有一个成功的程序员是完全靠阅读代码,在无意识中学会编程的。所以不要突发奇想了。

当然,通过阅读优秀代码,提高编程能力这本身是有效的,我说的无效是指你不能放弃对基础理论,基础知识的学习,以及在工作中积累经验和技巧,以及运用高级思维去不断分析难题,从而训练你的思维,这样才是有助你提高的。
------解决思路----------------------
可以读读 MSCORLIB 的源代码

List<T>
Dictionary<K,V>
ConcurrentDictionary<K,V>

还可以读点:

Linq.Enumerable

读完了你就知道为啥高手不用 LINQ
------解决思路----------------------
这个应该是专家写的:

http://roslyn.codeplex.com/SourceControl/latest
------解决思路----------------------
如果像一只“无头苍蝇”一样去思考问题,其实你很容易得出一些看似“非常合理”但是非常荒谬的答案。例如说人工智能上的一个公理是说:
    把一直猴子放在大英博物馆里足够长时间,它就能在打字机上把博物馆里所有藏书都给打印出来。

这是一个公理!它在理论上是“对的”。所以是一切自认为聪明——实则没有智慧——的人的借口。

因为“智能”也应该是讲究执行力的,而不是这种貌似正确但是没有效率的做法。
------解决思路----------------------
猴子和打字机,只不过是人的想象出来的产物
据说有人真的做了猴子打字机的试验,然后只得到了一大堆重复的字母,比如SSSSSSSSSSSSSSSSS
猴子打字可绝对不是标准的随机生成

而楼主认为计算机语法和人类语法很像,所以可以通过学人类语法的步骤去学
那么我可以告诉你,很像,但是绝对不是.
计算机语法更接近数学的算式,是逻辑学的一个分支,
它涉及到的词汇不多,语法逻辑也不多,但是组合起来就千差万别了
你不学明白深层次的逻辑性,而只从表面上看语法规律,那是什么都看不出来的
------解决思路----------------------
计算机语言,比起语言学,它更接近数学
所以你要做的不是不断的去重复已知的
而是不断的去探索未知的
研究透彻更深层次的东西,你才能真正掌握它到底是如何工作的

基础语法掌握的再熟练,也不过是成为一个优秀的打字员,而不是一个优秀的程序员
------解决思路----------------------
人机交流,跟人与人交流很像,但是又不同
人与人交流,不仅要语言相通,而且想真正明白对方在说什么,让对方真正明白你在说什么,你必须去了解对方,去揣摩对方是怎么想的
而人机交流,机器不是人,它没有想法,你也教不会它没有的知识
你只能去理解它,知道它到底是如何工作的,然后让它按你的意愿去执行工作

这需要的基础其实很多
比如计算机原理,通信原理,数学运算,二进制,十进制,十六进制转换
这些看似不学也没什么,用到的情况很少
但是如果真的一点基础都没有,理解起来是相对困难的,而如果有这方面的知识,理解起来就相对简单一些
------解决思路----------------------
就像平方可以转换成乘法,乘法又可以转换成加法
开放可以用加减乘除来实现
编译器里自带的函数,内部也都是用基础语法和其他函数组合起来实现的,最低层其实都是移动,计算,赋值,这些
跟人类语言千变万化的语法比起来,看似简单的多了
但是比起生记硬背单词语法就能学会说话,要理解透彻明白,其实并不容易
需要许多相关的知识来帮助理解透彻

否则也只是像婴儿一哭就会喊爸爸妈妈,到底爸爸妈妈是什么意思他其实并不清楚
------解决思路----------------------
1. 了解一门语言,包括基础知识,主要的应用领域  以及优势和劣势
2. 学习基于该语言流行的技术,语言是工具,技术才是最后用来解决实际问题
3. 明白自己的需求,如果这都不明确,那别人更帮不上你了
4. 看别人的,有针对性的,根据技术选择选择一些具有代表性的代码,从代码段到小项目到大项目,认真的读,认真的思考
5. 参与开源项目,从小项目开发,或者自己模范写项目
6. 不管是什么,官方文档记得常拿出来看看 
------解决思路----------------------
额,其实把我们更愿意看代码滴历史版本演化,而不是看最后的结果
最后的结果当然很漂亮,只是这些漂亮背后有其实有很多历史的演化,这中演化过程才是最宝贵滴

结果其实很难看出什么东西,因为他美好了,美好到你根本就不知道他为什么要这么搞,只能说一句“真漂亮”,结果就是博客园那些人了,看了一本领域分析,看到人家搞个仓储模式,结果就是“额,仓储模式真好!”,我也code first,我也mvc,我也仓储,所以我也是DDD,其实把DDD核心和他仓储模式滴演变才是这本书滴精华,而不是什么poco,什么code first,什么仓储模式
  相关解决方案