WPF中文网

IOC框架第一阶段学习报告

翻了一下和师傅的聊天记录,从7.26到今天,学习IOC框架实战开发已经快一个月余了。

照着视频手敲代码,今天是第一次成功运行了,也算是一个小小的里程碑。

特此记录一下学习过程和经验,作为自己总结的同时也抛砖引玉,希望获得师兄师姐的批评和更好的学习建议。

师傅说:IOC框架是最经典也是比较难的,IOC搞懂了以后再写项目再无盲目。

IOC”

第一次与这个家伙短兵相接的时候,他认不认识我,我是不知道的,我不认识它,这我是肯定的。

作为一个写程序的人,最重要的技能没有之一,就是运用浏览器找到自己想要了解的内容。

当然了,现在用人工智能大语言模型搜索的效率要远远大于浏览器。

问:编程中IOC是什么意思?

答:“Inversion of Control”控制反转。

控制反转是一种设计原则,它将对象的创建、配置和管理的控制权从应用程序代码转移到了外部的框架或容器。

例如,在传统的编程模式中,对象 A 如果需要使用对象 B,通常会自己创建对象 B 。

但在采用 IOC 模式的框架中,对象 A 不再自己创建对象 B,而是由框架来创建并注入给对象 A 。

IOC 有几种常见的实现方式,如依赖注入(Dependency Injection,DI)。

依赖注入是控制反转的一种具体实现,通过构造函数注入、属性注入或方法注入等方式,将依赖的对象传递给需要的对象。

例如,假设一个 StudentService 类需要使用一个 DatabaseRepository 类来获取数据,在依赖注入的模式下,不是 StudentService 自己创建 DatabaseRepository 对象,而是在外部配置好后注入给 StudentService

IOC 的好处包括:

  1. 降低模块之间的耦合度,使得各个模块更加独立,易于维护和测试。
  2. 提高代码的灵活性和可扩展性,方便在不同的场景中替换或修改依赖的对象。
  3. 更有利于进行单元测试,可以通过模拟依赖对象来单独测试某个模块的功能。

许多现代的编程语言和框架都支持 IOC 原则,比如 Java 中的 Spring 框架,.NET 中的 Autofac 等。

哦豁,看起来大概是对象不用自己创建了,由一个东西统一的来给你分配对象。

一知半解,不过没关系,咱们直接撸课。

IOC框架的课,我是看了2.5遍的。

怎么是2.5遍呢?

就如同刚才说的,第一次与这个家伙短兵相接,我是啥也不懂。

大概感觉是已经听到了20多集,连师傅在干什么都不知道。

这个世界上的任何存在的东西,都不是用来为难人的,

尤其是在编程这一块,大部分的技术都是用来方便开发。

既然它存在,那么就一定能被理解。

这是我学编程以来一直都深信的一个观点。

读《易经》《道德经》这样的古文经典,也有一个方法:

读不懂没关系,一个人写一篇五千字的文章不会有前后矛盾的地方,

看到后面会有自解释性的文字。

学习、听课、看视频也是一样,虽然我又笨又菜,

但是一整套视频课程一丁点都听不懂,那也是不太可能的吧。

硬着头皮往下干吧。

家人们,一边听一遍祈祷脑子自己能够理解。

昏昏欲睡...

直到我遇到了这一集--《33-设计登录页面并创建User实体》。

那种感觉,真的是柳暗花明又一村,其中滋味不可为外人道。

登录界面我设计过呀,这我熟啊。

老乡见老乡,两眼泪汪汪。

这一点熟悉的感觉就有了坚持下去的动力。

创建登录界面,绑定数据,登录成功,跳转。

但是他的方式与之前我所写的是完全不同的。

可以说第一遍听完,只理解了1%的内容。

二刷的时候,发现了有很多漏掉的东西。

比如说刚开始课程中的这张图,

后知后觉才发现是整个课程的架构和重点。

整个课程是按照这个图来展开,是纲领的纲领。

第一遍,这个不争气的脑子竟然是走神直接溜过去了。

现在看这个图来,感觉十分的亲切。

但是在二刷课程的过程中,依然是不知道师傅在做什么的。

理想很丰满,想象之中是在第二遍听课的时候,照着视频把代码敲下来。

但是发现这样做不到,难度太大。

于是我在Word上开始记录步骤和写伪代码,后面变成了截图

第二遍听完后,我开始回过头来,按照自己的笔记开始动手敲代码。

这里分享给大家,如果也要记笔记或截图,那么尽量要详细一点。

在敲代码的时候会省力很多。

并且最好把师傅在哪个地方调试了也标注一下,跟着一起调试。

不然只一味的敲代码不进行调试,最后有多个bug堆在一起,是一件很恐怖的事情。

之所以说是0.5遍,是因为在写代码的过程中,

笔记记录的不全或者看不懂的地方,才会去找对应的课程去看对应的操作了。

在这里要提一嘴,源码对照是很重要的。

有了源码对照和课程,几乎98%的问题,都能够自己解决。

在编程领域尽全力自己解决问题,同样也是收获最大和进步最快的方法。

别人可以帮你把bug找出来,但是你该不懂还是不懂。

唯一有一点不好的就是...心态容易崩溃。

现在看来,不断调试和Debug的痛苦过程,也确实是我进步最快的过程。

被bug逼着不得不一遍又一遍的调试,之所以找不到bug是因为不懂和对代码的不熟悉。

那么就只能一个方法一个方法的去研究,一行代码一行代码的去理解。

每个项目,每个类,甚至每个单词每个字母的去和源码对照。

是完全相同吗?完全相同凭什么师傅的能跑起来我的跑不起来。

IOC框架,说白了,无非就是一个容器和几个注册类,

本来我想再刷一遍课程,但是想起师傅之前说笔记系统好像有用到,打算学习新知识了。

完成好过完美,好读书不求甚解,

钱不能白花,懂不懂得,让我把课都先听完。

再有不懂的,我再回来三刷吧。

另外,有一点需要提到的是,

师傅在课程和源码里面,这个复制指令地址用的是他本地电脑的绝对路径。

如果你想要在自己电脑运行的话,可以改成图片中的相对路径。

copy /Y "$(TargetDir)$(ProjectName).dll" "..\Company.demo\bin\Debug\net7.0-windows\Modules"

最后,

我曾经问我的爸爸:“听说你年轻的时候跑步很厉害,有什么秘诀吗,教教我”

我的爸爸说:“前腿迈出去,后腿跟上,一步一步往前,坚持住就好了,有什么秘诀?”

后来我想,做任何事都是一样,共勉,希望我们都能成为很厉害的程序员,像师傅一样顶起自己的一片天。

孙修 - 2024年8月21日

copyright @重庆教主 WPF中文网 联系站长:(QQ)23611316 (微信)movieclip (QQ群).NET小白课堂:864486030 | 本文由WPF中文网原创发布,谢绝转载 渝ICP备2023009518号-1