之前写的东西 分享一下,大家可以来讨论讨论:) 原文链接
在项目的开始阶段,一件必不可少的的事情就是就是确定代码的分层和架构。该分层和架构在一定程度上决定了未来整个项目的代码风格和维护性,对于项目的长期维护,代码架构的设计是一件非常重要的事情。 在介绍代码架构的设计之前,首先我们先谈论下为什么代码架构的设计师是一件非常重要的事情。
简单来讲,代码架构是为了提供更好的可读性和可维护性。
大家可能还记得刚开始写代码的时候,所有的代码都会集中在一个文件,甚至一个函数中,比如:
# main.py
def main(args: List[str]):
input args validation...
...
do first thing...
...
do second thing...
...
do third thing...
...
随着需求的增长,代码量的扩大,这样的代码是很难阅读和进行维护的,于是我们会使用重构的手段去让代码更便于维护和阅读:
# main.py
def do_first_thing(args: List[str]):
...
def do_second_thing(args: List[str]):
...
def do_third_thing(args: List[str]):
...
def validation(args: List[str]):
...
def main(args: List[str]):
validation(args)
do_first_thing(args)
do_second_thing(args)
do_third_thing(args)
进一步,我们将代码分散在不同的文件、文件夹中,通过良好的命名,我们甚至可以在不去看具体的代码实现的情况下,仅仅通过文件名就能判断出在做的事情:
│ main.py
│
├───job
│ first.py
│ second.py
│ third.py
│
└───validation
input_params_validation.py
而更深层次的,代码架构的设计会降低代码的腐化速度
通常在一个项目新起的时候,项目代码的可读性,维护性都会做的很好,然而随着项目的庞大,不同背景不同能力的开发人员的进场和离场,代码的可读性和可维护性都会渐渐的变差,这个是一个项目进行过程中不可避免的,聪明的团队通常不但会制定一系列的比如代码质量扫描,代码 review 等手段降低代码的腐化速度,还会在在需求的开发过程中安排一定资源的代码重构的任务,去不断重构腐化的代码。 而一个好的代码架构,也会在一定程度上制约开发人员“生产”腐化代码的可能,从而降低了代码的腐化速度。这是因为在制定了代码架构之后,入场的开发人员们通常会选择遵从代码架构的规则编写代码,通过规则的制约,可以很好的制止一些不谨慎的代码的产生。 我们通过一个反例来看看,一个不好的代码架构会对项目的开发产生怎样的影响。 在一个真实项目中,大家制订了一个这样的简单代码架构:
这样的代码架构会导致以下几个问题:
由上文可以看到,一个好的代码架构设计对于项目的必要性。接下来将介绍在 web service 中,比较常使用的代码组织架构。
1
liuxu 2017-12-13 14:53:47 +08:00
不好好设计,以后有填不完的坑
|
2
Kilerd 2017-12-13 15:46:16 +08:00
我以为你说得是通用架构,原来是 web 框架。
|
3
hcnhcn012 2017-12-13 16:02:42 +08:00 via iPhone
有没有通用架构啊,或者是书的推荐,这个问题一直没有细学,感觉太重要了
|
4
zjsxwc 2017-12-13 16:09:58 +08:00
以前我也有楼主这种架构的困惑, 后来代码看 /写多了, 也就知道好的架构到处都是 mvc 类似的架构, 而且是 mvc 里面套 mvc,
比如框架 mvc 里的 view 层可以对"渲染数据"继续套 mvc 的方式来构造各种要求格式的渲染数据, model 层也一样可以对不同数据源套 mvc 来构造 model |
5
exch4nge 2017-12-13 16:22:05 +08:00
感觉很多实际的中小型项目中都是为了 MVC 而 MVC,为了分三层而分三层,不管项目大小,不管开发团队构成,只是为了一句“项目架构用了 XXX ”。
个人认为架构设计在满足项目需求以及适合开发团队的前提下,尽量减少各种抽象层,团队内制订好每个层的职责与范围并熟知比较重要一些。 |
8
yeyuexia OP |
9
kaneg 2017-12-13 18:42:46 +08:00 via iPhone
降低代码的腐化速度,这个说法很好。很多开发人员不知道架构设计的好处,拿到需求撸起袖子直接开干,到处挖坑埋雷。
之后要么自食苦果,要么甩包袱给继任者。 |
10
micean 2017-12-14 00:13:44 +08:00
代码这个东西,带着强迫症去写,写多了自然就有感觉
|