学习反思:软件架构和索引深度

来源:互联网 发布:直播特效声音软件 编辑:程序博客网 时间:2024/06/06 18:05

不觉码砖已经两年了,两年的时间里大部分时间是在没有约束的广阔天地横冲直撞。大量时间消耗在砖头的修饰和链接的深入,而架构级别的问题很少去认真的思考,同时也没有认真的体会开源工程中的架构设计。

镌砖十年不如搭梁三月

喜爱自学的同学如我,大概都会遇到“自我陶醉”的问题。学习新的东西花费了巨量的时间和精力,皓首穷经。一旦搞定,有种“众里寻他灯火阑珊处”的成就感。于是,开始自我陶醉,可以对着来之不易的“Hello world”把玩好几天。从另一个角度,至少说明两个问题:一是自己的效率低下,二是懂的东西真的很少。生活不是苟且,不是诗和远方,是日复一日的平淡,根本没有那么多自以为的灯火阑珊。可以肯定的说,这些零散的知识如果不得到有效的巩固和重复将会让你在一段时间后再次“灯火阑珊”。

架构犹如房屋的梁栋或者钢构,上能顶天、下能立地,中间还是凝聚砖头。没有架构,再华丽的砖头也垒不出楼宇。开源项目的学习,最主要的不是学习其绚丽的技能,二是鬼斧神工的架构。在编码的过程中,很容易因为一个细节一个实现而陷入长时间的阵痛,并且因此而陷入长时间的挣扎。最后,整个工程的进度完全无法掌控,工程的管理也无头无绪。科学的工程搭建,应该是自顶而下的结构。首先是根据需求分析做出的宏观功能模块图,然后是大模块的封装和拆分以至于文件,接着是细分功能模块的数据和界面的交互,最后是类接口的定义。至于编码实现,不过是砖头的累积。而我们的学习和工作往往是反其道而行。

链接深度隔层如山

另一个问题是参考索引深度的问题。越是无知的人,越是能够无限制的由问题引向其他问题,最后关注点已经与原需求毫不相关。本来要解决的是HTTP网络应用层的一个细节问题,发散一下就到了CFNetwork层,一大堆的回调函数和结构体使人晕头转向。外事问谷歌,于是谷歌出来的大牛会聊到CFSocket这种抽象到惨绝人寰的模型。然后。。。似乎这和我们简单粗暴的http请求设置已经毫无瓜葛。链接向下一层可以更好的理解本层的背景故事和物理/逻辑模型,是有利于增进理解的。隔层的纵深虽然看似更加深入了,其实面临的问题和条件其实已经发生了质的改变。

再华丽的砖头也只能拿来自我陶醉,经天纬地的架构才是广厦千万间的根本。守拙若愚,集中精力,在自己的层内精益求精。

0 0