很多时候我们要做庞大工程, 就像一棵大树, 方方面面都有自己的细枝末节,而作为开发员的我们,无法时时刻刻去保持对程序的全面认知,所以我们要把程序设计与逻辑设计区分开来。
那么什么是程序设计和逻辑设计,举个例子来说,统计一群人,程序上可以做到对人群的归类字典统计,也可以做成每个人有自己的属性之类的,而作为逻辑上,需要知道人的名字,性别,身高之类。其实这个例子你可能看不太清晰,很多时候程序和逻辑是混合在一起的。比如我抛一个小球,逻辑上已经设计了重力,环境,以及墙壁,从逻辑上我这个小球会按照一切安排的正确运行。但是这一切基于什么?决定因素都不在小球,重力,环境,以及墙壁的改变都会影响到小球的结果变化。这个逻辑不如叫间接程序设计。程序上直接对小球进行本身的控制更有把握。再比如说我要做个只允许小球上抛的动作,
可能上抛有可能碰触到天花板和侧墙。而如果我后来取消了限制小球的抛出角度。那么小球有可能被抛向任何地方,可能是地面也说不定。这种时候你肯定不会第一时间就知道这一影响并修正,有可能你还是只是惯性思维的做想上抛的动作,而忽略了向下抛完全可能出问题,后来经过反复测试,你才渐渐地找出问题所在。
所以写程序,不能靠逻辑来绑定你的思维,你不能就这么觉得“恩,这样没问题了,a,b,c这些影响下就是这个结果",拜托,这不是日常生活,这不需要惯性思维,你该限制小球速度就是需要限制,该给没可能的情况增加条件判断就该去增加判断,这样你的工程代码才健壮。逻辑条件只是一个架起虚空的云梯,你摔下去的因素有千万种可能。
也许你会觉得做多重判断以及没必要的条件增加代码完全没必要,而且增加运行成本。但渐渐的这些问题在你的工程中后期就会都慢慢浮现出来。
你只是个码代员,不是主宰项目的存在,真正主宰项目的是经理,客户和终端用户。所以,给代码健壮的逻辑,给后期稳健的开发速度。