今天在QQ群闲聊,一位群友的话忽然引发了个人兴趣,前端
还有个6年经验老手,委托都不会写,(吐血.jpg程序员
因而我反问了一句:面试
为何你会以为6年老手就要会写委托呢?(坏笑.jpg算法
其实我常常看到这种说法,但本能的我就以为不舒服。为何呢?我仔细的想了想,可能这么几个缘由。数据结构
首先,我本身就是个老码农,而后我本身知道本身其实不少东西都还不会(啊!崩了人设,是否是做死?)。我很怕有一天有人说:飞哥十年的老码农,XXX都还不会……这应该就是兔死狐悲吧?数据结构和算法
好了好了,“自黑”就到此为止,接下来开始个人自我辩护。学习
我记得我有一个回答,面试前端工做7年以上的人,总感受他们水平通常般?个人回答:加密
换一下,让他来面试你,你就知道他有多厉害了。spa
抖了下机灵,收获了180个赞。3d
这个回答第一个层次的解释能够是:你不能用别人恰好不熟悉的领域来判断一我的。
但我想挖得更深一点,为何不能呢?!
我找了好久好久终于找到了,这几幅图,很惋惜,原做者@itlr已经被知乎干掉了(我估计我早晚有一天也会被知乎干掉,ʅ(‾◡◝)ʃ):
不少人假设知识之间的关系是这样的:
而没有意识到,更多时候真实的关系是这样的:
甚至是这样的:
太特么一针见血了!
其实说:“xxxx还不知道/会xxxx”的人,他们潜意识里就认为知识结构是“金字塔”或者“阶梯”形状的,同时把你不会的那一个知识点放在了“基础”级上,进而再推论出:你基础的都不会,上面的天然更不会了。这对不对呢?只能说有时候对,有时候不对。
做为程序猿,理解这一点其实应该更容易,由于:
封装!
我不以为6年的程序员不会写“委托”有什么问题,但我发现不少6年经验的程序员不懂得“封装”才是要命的。(好吧,夸张了一点,其实也没那么严重,只要能把功能实现同样能够领工资,不要命,O(∩_∩)O哈哈~)
假如我问:面向对象的封装是干吗用的?我估计不少同窗会回答public/private之类的……
但其实不是的,或者说,远不止于此。
封装的做用,是屏蔽细节,或者说屏蔽复杂度。简单的说,就是让你“没有基础”“不知道原理”同样能够干活。
咱们能够想象,若是没有封装的话,在现代社会,从事一个任何职业,得有多累!由于任何事情,你都要从“基础”学起,要了解他的“原理”,天啊,一台汽车多少零部件多少力学原理,车间装配工人要了解这些怕是博士生都不够用。
咱们程序开发人员也是同样的,至少软件就只管软件,别去关心硬件,这是一个最基本的隔离(封装)……别拽你学了计算机组成原理,USB2.0和3.0的区别说得清楚不?会造不?还有说什么数据结构和算法的,每天在用的MD5加密,算法怎么实现的,为何不可逆你说得清楚不?你不知道,这不丢人,由于你也根本不须要知道。他们被封装好了,你只须要拿过来,直接使用它,完成你的工做就OK了,这一点不丢人。
我真不明白为何程序员圈子里会有这么奇怪的一个文化:用别人封装好的东西就是丢人。每一个人都想去造轮子,有必要么?看看如今前端造出来的那些铺天盖地、奇形怪状的轮子,不知道他们是怎么想的,我要是前端,我简直都要崩溃了。
我记得这种观点我之前说过?就不啰嗦了,其实我写这篇博客,是由于我被刺激了,由于QQ群里的这位网友问我:
你别告诉我大家培训不讲这个(委托)?那就太误人子弟了!
我原本是准备要讲一讲委托的,但他这么一说,我不禁得想:我就不讲了又怎么的呢?因此个人回答是:
彻底能够不讲啊!
直接lambda不行吗?
我以为这个现象很矛盾:做为学员,
大家说,飞哥该肿么办?
我以为,不少同窗,错误的理解了“基础”。好比说,委托不是Lambda的基础,委托只是Lambda“以前的”语法。
个人教学原则:当你理解当前的事物很困难的时候,若是其发展历史能够帮助你理解,我就会给你讲一讲它的历史;不然,没有太大的必要,甚至有可能会有反作用。好比我刚入行的时候,理解C#里面的“引用”,不少书籍资料都会提到“指针”——那时候我不知道“指针”啊,我理解“引用”都很困难了,你还给我搅一个“指针”进来,这不是把一个复杂的问题搞得更复杂了么?可是我在讲JavaScript的时候,讲了一下这门语言的“黑历史”,不少同窗给我反映:茅塞顿开,原来如此……
差很少了,最后几句话:
委托的语法很简单啊,最多十分钟就学会了。
搞明白为何要有委托、何时用委托才是最关键的!
要说基础,这才是基础;要说本事,这才是本事。
+++++++++++++++++++
惯例广告,飞哥的线下培训班“源栈”已经开班了。开业酬宾大优惠,
不过一折早就被抢了,如今立刻报名,还有六折。