学习的困惑
1. 不知道怎么学习
- 刚开始学习变成,看了相关的教材,但是没有体会到什么是面向对象编程,也不知道怎么深入学习;
2. 只是盲目的使用
- 已经工作,也会做一些项目,但是很多时候不明白为什么这么设计。
- 自己的知识点很多,但是没有系统性,也不知道该往哪个方向发展。
我现在就是处于这个情况,有一些了解,看着别人的项目我也能再写一个但是很多地方很难理解,知识很散乱,真的,很无奈,在这里一开始接触windows就要自己编出一个项目来,没有一点点的C#的基础,以前是做Android的,Android一项还没搞明白,现在又被拉着做windows了,确实自己的翅膀不够硬的时候总是会被被人牵着鼻子走,呵呵,无所谓了。。。。。兵来将挡水来土掩!!!就是这个feel~
3.输入输出垃圾
- 能做项目,而爱好研究技能,自我觉得很不错;
- 为什么搞那么复杂呢?编程不就是堆积代码?what???
举例
一些项目中看到的问题:
项目的功能实现很不错,但是在具体实现的过程中,代码的可读性很差。控件的命名直接是1,,2,3,4,5,6,7.。。。。
程序的健壮性很差,后期修改很难实现,代码看起来很头疼。
不只是实现功能就完事儿了,程序的健壮性和可读性这些都是需要考虑在内的问题。
解决方案
关于面向对象编程不用去给一个精确的定义,提出这种方式是为了让编程更简单。
- 学习面向对象编程是学习面向对象编程的原则,方法,技巧,经验,模式等的综合应用。
开发者必须掌握的OOP原则:
单一职责原则(对象职责明确原则)
- 要求:一个对象只做好一件事情,必须专注,职责过多容易引起变化的原因就很多,程序不稳定。
开放封闭原则(核心原则)
- 要求:需要变化时尽量少的修改类的设计,而是通过扩展类来完成。即封闭修改,开放扩展。
依赖倒置原则(OOP精髓)
- 要求:基于接口编程,高层模块调用接口,底层模块实现接口,防止底层变化直接影响高层。
接口隔离原则
- 要求: 尽可能多的使用专用的小接口,而不是总接口,避免接口过于复杂。
里氏替换原则
- 要求:在继承关系中子类可以替换父类,虚拟机可以根据父类变量动态的找到具体的子类对象,从而实现多态。
面向对象的最终目标:程序应该很“健壮”,同时具备良好的可扩展性,可维护性。
说说现在的我自己吧,Java也还没有精通,所以对面向对象编程真的是一塌糊涂,只是看着别人怎么写,我就仿照形式完成需要的功能,到目前为止我见过的优秀代码可能没有,工作中的小伙伴是一个工作七八年的老司机了,但是写的代码真的不能看,我很无奈,看着那种没有一行注释的代码,基本上是不可维护性的,更新全靠重装,这也是我们整个公司的毛病,系统升级全靠重装系统。想想有点可怕,这种要是没出问题还好,出了问题,一个一个的给客户在重新装系统??或者说客户使用你的产品还需要学习如何烧内核??真是无法理解。所以我接手的项目基本上都是比较烂的项目,这样说也不过分,我自己的项目也好不到哪里去。
我就觉得吧,公司应该考虑长远的发展而不能只是急于一时的追求实现功能,像这样的问题,最后客户反应的也不再少数吧,前两天还接到客户的反馈电话,各种问题,真的是没法补救。我也很头疼的,我想做好,但是能力不够,so, 目前说多少都没用,加油提升自己,让技术来证明你的考虑是正确的。