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

image.png

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

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

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

image.png

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

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

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

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

image.png

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

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

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

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

image
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、生命周期 一个事物一旦出生,就必然会长大,变异,一旦长大,就面临着衰老,接下来就是消亡了,这个过程就称为一个事...
    ZyBlog阅读 7,607评论 1 11
  • 前言 架构师是一个没有被严格定义的角色。 在写这篇文章之前,我特意把这几年看过的关于架构和架构师的书重新翻了一遍,...
    Java机械师阅读 5,235评论 0 7
  • 序 程序员的三个层次(1) 普通程序员编写代码,能够让程序跑起来的人。(2) 工程师有“洁癖”、有工匠精神、有修养...
    nimw阅读 5,605评论 0 3
  • 我们都曾羡慕那个女同事,她的丈夫给了她一束鲜花的庆祝生日。 除了大家再说要互相讨论怎么回家教育另一半之外,在办公室...
    lygly9阅读 1,111评论 0 0
  • 我是日记星球155号星宝宝 相信日积月累 水滴石穿的力量 每个人都是一金矿 每个人都是独一无二的 正气存内 邪不可...
    玉妈妈阅读 2,812评论 0 1