所谓大项目,就是你一个搞不定全部的项目
或者你一个人在短时间内无法搞定所有的项目
而且往往是需要一堆人来搞的项目,统称大项目
这种项目一般都需要跟特别大的集团打交道
什么是特别大的集团?你到城里去
抬头看,看那些大厦上面的logo都是哪些公司
基本上就是这些公司了
常见的有银行,航空公司,政府,保险公司这些
这些集团基本上都养猴子
所以大项目基本上都是这些集团一个或者多个凑一起
搞出来的项目
那跟这些集团打交道,绝对不是什么一两条枪就能搞定的
多数时候需要合作,跟其他人合作
这就是大项目
那既然是合作,必然有人写代码,有人看代码
那看代码的时候最喜欢的语言,肯定是java
为啥?举个例子,你有一个InputField
java是这么定义的
InputField intfd = new ...;
而且ide可以帮忙,就是任何时候,你看到一个名词
比如这里的intfd,你看不懂,按住cmd然后点这个名词
你就可以跳到这个的声明部分,你看到声明就知道是什么了
然后如果你对这个东西的动作有兴趣
比如disableInput(),在intfd后面加一个点.
ide就会自动跳出所有跟这个intfd相关的方法,然后你自由选择就好了
这样做的好处就是效率很高,因为你不需要知道这个狗屁是谁写的
你就能看懂代码,而且利用该代码,对吧?
下面说两个杀手
第一个是var
var分为真var和假var
假var是var intfd = new InputField();
这种其实还好,但是坏处是,你想一下,如果返回值是func
比如这样var intfd = generateField();
那你怎么知道这个intfd是什么?就很麻烦嘛
还需要进入方法的定义去看,所以这个就开始浪费其他人的时间了
其他人看代码开始不爽了
然后是真var,那就是动态类型
这个绝对是杀手
比如这样var intfd = new InputField();
没问题,但是中途给你塞入一个
intfd = 3;
那么当你拿到这个intfd的时候,这个就不是InputField了
而是tmd整形,那你一路找上去,去找这个
intfd = 3;
的过程真的是一把辛酸泪啊
所以很多用脚本语言的公司,都开始搞什么code review
说白了就是不让你瞎搞,那既然如此
为什么不直接干掉这些features呢?
就像java一样,搞什么code review,多此一举,浪费所有人时间
你去问问古德霸它们搞不搞code review
只有烂语言才需要code review
第二个,1st class func
fp很恶心的是,你要把所有东西都封装成一个func
那就意味着func以外的部分,你不能定义obj
那导致io都很麻烦,因为file这个obj必然独立于你这个func之外
怎么都没办法定义成你这个func里面的东西不是?
所以最后还是定义了obj,你也无法阻止别人定义func以外的obj
那这样最后就是,obj和func混在一起
比如你拿到一个intfd,如果是java
这个一定是obj,如果是func的话,一定是在.后面出现
但是如果是有1st class func的语言
那可不一定,这个有可能是func
尤其是米国这种喜欢名词当动词用的国家
很容易造成混乱,你到底这个是什么?
造成混乱的往往不是相反的东西,往往是相似的东西
而且这个容易造成瀑布,比如int(double(3.2f))
就很恶心,看了就受不了这一堆缩进
这就是为啥js没戏,不仅js不行,其它也都不行,包括py
google可以通过各种code review怎么滴怎么滴
其它公司没功夫这么搞,现在大项目演化到
就是几个人开工,2-3个人一个项目
2个人维护+开发,1个机动,多的时候加入,少的时候就抽走
所以没时间给你搞什么review,干活,干不了给我滚
你能依赖的就只有各种机器,ide,语言的features
尤其是你进去之后,马上就要面对别人写的各种代码
你就知道java看上去很死板的规定,有多重要了
否则都是心中各种草泥马奔腾,要说的是,这不仅是什么美国
也不仅仅是什么startup这么搞,现在全世界都开始这么搞了
就是各种大项目,也都开始这么搞,startup因为没有legacy
所以可以乱写,但是大项目,你一定需要维护代码
因为经常是这样,一个银行的协议,光读懂就需要三个月
然后测试也需要跟银行那边商量,最后定时间,半夜3点来加班测试
这样七搞八搞,一年才能连上一家银行,全美几千家银行
你自己琢磨琢磨这个过程,当然有通用协议,但是那个通用协议
只定义了大概一半的东西,剩下的都是银行自定义的
而且银行就是不想让别人看懂
所以不会用什么json, xml那么傻瓜的东西
就是一个byte一个byte去抠,所以不可能说你换一个程序员
就把这个协议写一遍,没那个时间,所以你必需面对别人的代码
而且必需要维护,因为后续需要开发,你得有办法看懂才行
这不仅仅是银行这样,政府什么都是如此
一个比一个难伺候