写业务应用和写功能代码,是两码事儿,写业务应用的时候,不要为这些事情所愁。你可以去给你们公司封装一个通用的dll。你就会发现,什么继承之类的特性,你都用得上。比如,你要封装一个日志功能,那么,日志往哪儿,往哪儿存,你总不能事先写死吧,你要留有接口,给调用的人员来实现,后来你发现,接口的话 ,会使多个类里面依然有重复代码,这个时候,你可能就要用项目abstract类。依此类推吧。总的来说,不是你的问题,而是应用场景不同而已。如果你对功能性代码好奇,给你一个微软的源码,看着挺舒服的,有可以学习的地方:http://referencesource.microsoft.com/#mscorlib/system/math.cs
.NET Core是开源的,那么多世界顶尖高手写的代码供你学习、参考、折腾,你却躲在自己的角落望着自己的代码迷茫,而不如饥似渴地跳入这些优秀代码的海洋。每天耳濡目染这些优秀的代码,你自然会知道自己努力的方向。
多阅读开源项目,你会豁然开朗的
封装太多是这样的。我给你建议的话 —— 我通常建议别人去用gdi+,或者xna做个游戏试试。
没有框框,刚开始你写的会比较冗余,然后思考怎么把代码变简单。
然后你还会发现平时的写法竟然都可能出错(微软封装的好),你再跑去看看这些细节微软是怎么做的。
这个将助你对类(归类,子类化问题)有快速进步。
这是第一步,第二步框架化的思考 ——
你以第一个简单的游戏,改一个类似的游戏,此刻可以思考如何用很少的代码来改以及再来改一个类似的游戏。
你逐步剥离实现代码...。
以上有助你对面向对象的认知。
如果这个游戏有物理模拟,还有特效等,你先都可以自己实现,你可以体验到很多东西,比如导弹如何打飞机的,天气怎么预报的...那个超炫的“品牌的力量”大概是怎么做出来的...甚至你都可以实现那种变形人电影......我只能很多很多...
这两步完成了,你的代码应该比较干净了。
继续对原理的认知——
随便买点按键或者摇杆(只要纯硬件,只有电路接口),你可以基于此来控制游戏,看控制的多少,可以先上简单的并口。
买点串口感受时序,为什么需要设置波特率......慢慢你将会体会很多时候scan和event.Invoke的底层关系区别。其他要开发的硬件貌似没什么必要推荐了。
有条件玩玩并口和串口也就差不多了,理解得还可以的话,你能体会码流在网线的样子,串口通讯写了的话,你可以小小的体会tcp/ip协议得有多么复杂。
...
理解的凑合的话,除了html这种(这种根本不算程序),大约常见的视图模型开发应该都是非常容易上手。
如果把上面的问题解决了,我相信你解决问题的思路绝对和现时不一样。
这么多应用开发中相对难点的估计应该是由0.X开始的game,里面越往里面看,东西真是太多,很多技巧,包括算法。
顺便说一下xna是个淘汰的东西了,但monogame捡起来了,现在通常游戏都是基于整套工具和框架的,你可以试试monogame。我之前用这个试了试在android和linux也都还凑合。
微软的代码和管理真心佩服(虽然有传言怎么怎么,我只看人家的结果[源代码]),干净这个自不必多说,容错性相比其他公司的也非常不错了,那么大的类库几乎很少能看到一个函数被重写一些一次 —— 而且跨度之大。
—— 这算是我的一些体会吧。
关于变量的一些习惯问题 —— 不推荐vc 匈牙利命名法这些,复杂冗余等等,我建议直接用微软的习惯,这样一看都就明白。
比如Is、Has开头就知道是bool,函数动名词,事件[这个微软不同时期稍微表现的不好]状语方式等等...
你会觉得和asp.net没什么关系,你届时回头一看,可能很多都已经不是问题了。
看是一回事,练习,理解才是你的升华。
自己做过的项目都去网上下载一个类似功能的开源项目,然后阅读下开源项目里是怎么实现的,和自己写的对比下有哪些比自己写得好的,好在哪里!
谢谢大家的指教。