面试官:你认为什么样的架构才是优秀的架构?

334 阅读2分钟

image.png

从实用角度来看,优秀的软件架构不应该进行过度设计,如果设计复杂度较高,应考虑软件维护者是否能接受这样的架构设计,以及其可能带来的长期维护成本。

软件架构设计亦应坚固可靠,其可以应对内外界多种不同类型的攻击,提供可靠准确的输出,面对外界的变化上,应响应迅速及时,灵活可扩展。

同样地,软件架构也应该具备美观性,整洁代码易于阅读,更易于维护,能使得维护者从直观上对功能产生更清晰的认识,和更快速的处理变化。

image.png

《整洁代码之道》一书中曾提起代码整洁的优势:

代码质量与其整洁度成正比。干净的代码,既在质量上较为可靠,也为后期维护、升级奠定了良好基础。

优秀的软件架构亦是组件抽象,没有复杂依赖关系,易于扩展分离的。

美国著名软件先驱Brad Fitzpatrick在建设LiveJournal,这个优秀的虚拟写作社区之时,为系统架构设计做出了非常多重要的决策。他在为LiveJournal增加基础设施时,常常会询问自己,这个新增的基础架构是否必须要和LiveJournal绑定在一起,这使他充分重视解决依赖关系。所以,他的分布式高速缓存系统Memcached等都是抽象的,这些决定使他的系统没有产生复杂的依赖关系,具有很高的扩展性和可维护性。

image.png

美国建筑师路易·康在《静谧与光明》中曾经提到:

一座伟大的建筑物,按我的看法,必须从无可量度的状况开始,当它被设计着的时候又必须通过所有可以量度的手段,最后又一定是无可量度的。建筑房屋的唯一途径,也就是使建筑物呈现眼前的唯一途径,是通过可量度的手段。你必须服从自然法则。一定量的砖,施工方法以及工程技术均在必须之列。到最后,建筑物成了生活的一部分,它发生出不可量度的气质,焕发出活生生的精神。

我们也可以用这段话,来描述一幢具有优秀的架构的软件“摩天大楼”。

想全面系统地了解计算机软件架构的知识,还可以参考《移动开发架构设计实战》,掌握架构体系知识。

image