zoukankan      html  css  js  c++  java
  • 对.net技术组件的分析和选择

    .net很庞杂,学习最忌讳什么?为了学而学,而不是为了用而学。我们不是为了成为教师,所以不要成为书呆子,不要成为”博士“,要从庞杂的技术群中选择自己需要的内容进行学习。

    如果不加选择,一股脑的去学,这种”参考书式“学习接触一堆信息,不假思索,结果只会培养一个万事知晓,却不擅长运用的人。要思考技术的构成,想想怎么运用组合,将零散的技术有机构成一个整体,这样才是有目的,为运用而学。

    首先是语法类的技术要点分析。众所周知,算法+数据结构=程序,这个公式是最基础的概念,但是现代语言为何却不是这种简单的构成模式,反而增加了很多”不相干“的内容?那些内容是什么?

    我认为所有不相干的内容,实质就是”约定“,”约定“的目的是为了协作,是为了人与人之间的交流,而不是程序的运行机体。现代语言,关注的不是程序本身,而是强调人与人之间的沟通。请谨记这点。

    因此,我将语言学习分成三个主要部分,1.约定,2,算法,3,数据结构。

    .net不是一个语言,他主要特点是包含了一个庞大的类库,但是类库重点在于知其功能,学习上较为简单。

    何谓”算法“,就是构成运行机理的部分。如:变量,流程控制结构,枚举,表达式。这些部分几乎每一种语言都不会有太大的差别,变量存储中间数据,表达式进行运算,控制结构执行选择,重复操作,枚举这些标明常量。高级内容包括异常控制,异步编程。

    差异大的部分是”约定“,比如入口函数main就是一个约定。还有组织约定:命名空间。甚至标识符的组成要求,都算是一种约定。有一些约定是强制性的,有一些约定是非强制性的,比如”注释“是一种非强制性的约定,它只是告诉阅读者这是什么,而不对程序本身产生任何影响。要记住,”约定“的主要目的就是人与人之间的交流,所以”注释“也是强化交流的一个方式,应该视为写程序的一部分。

    相对于“注释”,“单元测试”和“代码协定”提供强制的规格保证,

    类型是一个约定,提供一个使用的界面。object公共基类也是一个标准的界面。类型可以扩展,增加新的实现和界面。但是更加纯粹的界面是”接口“。一般基于接口编程,将类型视为具体实现来简化认知。

    泛型是比单一类型更宽的界面,因此应该首先考虑这一技术。泛型接口是.net提供的最强大的界面。

    何谓”数据结构“,即数据单元的有机集合,不同集合有不同的构成方式,这就是”结构性“,”结构性“产生了对应的高效率算法设计。因此”算法+数据结构“是双辅双成的,因为算法的需要所以选择某一数据结构,也因为结构的特性,选择某一算法设计。

    简单的数据结构是数组,.net中的数据结构实现,一般都实现了”枚举器“接口IEnumerator,这是一个关于数据结构的高层界面。.net已经提供大量的数据结构实现供我们使用。它们是“集合”类型的子类,同时还有并行版的兄弟类。

    重点说一下“类”,类是一种约定,一个规格描述和界面,包含丰富的内涵。首先包含数据成员,函数成员,还有成员的访问权限控制,生存期控制,资源控制,可扩展性控制,书写方式控制(语法糖),类型转换,运算符支持。特性非常多,要考虑不同的特性组合,来书写代码。

    类是一个高级界面,有很多控制特性,而“委托”就相对简单,它只是对应函数的界面。基于委托变量,“事件”提供了一个特殊的运用界面,它标明自身将引发事件,而由调用方提供处理事件的函数。这在类中,不同于一般的数据成员,也不同于函数成员。

    .net中有三个特殊的组成部分,1.linq,2.lambda,2.xaml,3.正则表达式。这三个属于“语言”,也就是和c#是同类性质的。linq专职数据结构的查询,lambda是表达式,用来强化c#的语言功能,xaml用来描述界面,而正则表达式专职字符串的处理。

    然后,庞杂的.net剩下的就是比较容易掌握的类库,如:集合,动态语言扩展,反射,安全,互操作,文件和注册表,事务处理,网络,windows服务,本地化,xaml,MEF,winrt,ado.net实体框架,xml,wpf,asp.net,wcf,wf,p2p,消息队列,事件日志等。

    总结:

    .Net学习分五类:1.约定, 2.算法, 3.数据结构,4.类库,5.部署。

    约定包含:注释,单元测试,代码协定,类型,委托,事件,接口,泛型,命名空间,程序集和入口;其中类型包含数据成员和函数成员,运算符和转换等。

    算法包含:一般表达式,匿名类型,lambda,linq,正则表达式,一般流程控制语句,异常控制语句,异步编程。

    数据结构包含:数组,枚举器,集合等。

    类库包含:集合,wpf等。

    我的选型:

    算法和数据结构的是基础。

    约定类可以强化协作性,规范性。

    类库应该进行选择,我选择是wpf, xaml做界面,集合和ado.net实体框架做数据处理与存储,wcf做客户端之间的通信,消息队列做客户端之间的协调,wf定制工作流,而winrt做跨平台的基础类库。

  • 相关阅读:
    Java实现 LeetCode 735 行星碰撞(栈)
    Java实现 LeetCode 735 行星碰撞(栈)
    Java实现 LeetCode 887 鸡蛋掉落(动态规划,谷歌面试题,蓝桥杯真题)
    Java实现 LeetCode 887 鸡蛋掉落(动态规划,谷歌面试题,蓝桥杯真题)
    Java实现 LeetCode 887 鸡蛋掉落(动态规划,谷歌面试题,蓝桥杯真题)
    Java实现 蓝桥杯算法提高 求最大值
    Java实现 蓝桥杯算法提高 求最大值
    Java实现 蓝桥杯算法提高 求最大值
    Python eval() 函数
    Python repr() 函数
  • 原文地址:https://www.cnblogs.com/Nobel/p/4062148.html
Copyright © 2011-2022 走看看