读《这就是软件工程师》有感
一 .架构设计是什么?
简单来说就是把需求进行抽象和分解作为设计架构的人,首先你要知道怎样把同类型的内容抽象出来,还得知道实现目标要分成哪些步骤,以及怎么从大的步骤里切出小模块(设计模式)。
先分为几个大模块分别有各自重要的复杂的功能。再往下你还可以细分出很多子模块,比如客户端和服务端中,,从大到小一层层分下去,这就是分而治之。
高内聚:模块内部的元素(类、方法、函数等)应专注于完成单一职责,彼此紧密相关。
核心思想:一个模块只做一件事,且做好这件事。内部代码高度相关,共同实现明确的目标。
优点:逻辑集中易于理解,修改影响范围小,可以复用
低耦合:模块之间的依赖关系应尽可能弱化,减少直接交互。
核心思想:通过接口、抽象或中间层(如事件、消息队列)解耦模块。避免一个模块直接修改或依赖另一个模块的内部细节。
优点:修改时其他模块不需要修改,模块可以独立测试,可以团队分工没人解决一个模块
划分模块时需要遵循“高内聚,低耦合”原则一每个模块高度内聚,比如相同的功能提出来写出一个函数,模块和模块之间要解耦内聚是说相似的东西都要放在一块,解耦是说两个很不一样的东西要尽扯分开
二.什么才算好代码
1.初级:可读
命名要好——好的命名是有意义的,而不是 Al A24 这种没有意义的名字;
布局清晰一分支尽证少,不要用太多嵌套;注释明确—一写明为什么用这段代码,以及怎么用这段代码,而不是解释这段代
码是什么;一个文件或一个函数的代码量不要太大;代码不要重复;不要有反逻辑,用通用的编码模式进行编码,等等。
可读是对编码最基本的要求。
2.中级:可扩展
可扩展的意思是可维护,意味着我不必因为未来的修改大动干戈,甚至不改主干代码就可以 实现修改。这样就不用因为修改一个东西,或者增加一个功能,全篇修改。
3.高级:可重用
优质的代码没有止境,最高级别的代 码是可重用。 代码也一样 ,优 质的代码写出来,可以用在很多场景里
所谓复杂度,一般由业务逻辑、控制逻辑和数据逻辑组成,一旦把三者揉在一起,程序一定会乱,并且复杂度急速上升,业务逻辑决定了复杂度的下限,控制逻辑决定了复杂度的上限,两者如果缠绕在一起,复杂度就呈现级数攀升
三.预见未来-前瞻知识
在这个阶段,软件工程师的核心是具有前瞻能力是指,你得知道为什么系统今天是这个样子,以及未来它会部分朝着什么样的方向去演进。知道这个行业,语言,技术,产品市场怎么样,未来怎么样,有没有什么优势,对现在的自己有没有帮助,对未来有预判,根据预判对技术选型做一些决策。
如何有前瞻能力?
笫一,你一定要有知识的广度,需要去读论文,读业内各大公司的资料;还要去各个公司做广泛的交流,保证有足峈多的不同的信息进入你的视野
笫二,多做跨行业的交流,跳出自己的圈子,跟其他行业的人交流,特别是投资人、创业者等见多识广的人群