代码写大了,该如何规划、布局、架构? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
xuegj1010
V2EX    Python

代码写大了,该如何规划、布局、架构?

  •  
  •   xuegj1010 2018-06-01 17:22:11 +08:00 5014 次点击
    这是一个创建于 2692 天前的主题,其中的信息可能已经有所发展或是发生改变。

    小白一个,感觉代码写的越大就越乱,看着很不舒服,不知道该怎么布局,怎样才能让自己的代码看起来更舒服,结构更清晰。python 的设计模式也看不明白,看明白了也不会用。看看自己写的东西,真是糟心~~,文件一多,python 文件互相引用,引着引着就乱了。。。看着 github 上 star 多的项目代码,看着就很舒服,再看看自己写的,感觉就是一坨一坨。。。

    系统各位大神能给小弟出出主意,该怎么进步。

    24 条回复    2018-06-02 12:00:47 +08:00
    kindjeff
        1
    kindjeff  
       2018-06-01 17:23:17 +08:00 via iPhone   2
    照着别人的抄
    zynlp
        2
    zynlp  
       2018-06-01 17:47:31 +08:00 via iPhone   1
    kiss 原则了解一下?
    xrlin
        3
    xrlin  
       2018-06-01 17:51:38 +08:00   2
    多拆分,多分层,少用魔法,避免魔数,逻辑复杂的要添加注释,多写测试。
    qiaobeier
        4
    qiaobeier  
       2018-06-01 18:02:54 +08:00
    照着抄 +1,当然不要瞎抄,一边思考一边抄。
    Raymon111111
        5
    Raymon111111  
       2018-06-01 18:15:14 +08:00
    领域划分
    jinhan13789991
        6
    jinhan13789991  
       2018-06-01 18:17:01 +08:00
    领域划分+1,然后单元测试覆盖,自动化测试,持续集成。
    设计模式~
    anotherlf
        7
    anotherlf  
       2018-06-01 18:34:51 +08:00 via Android   5
    只要代码起作用,大坨有什么关系?
    用这些代码先实现一个小目标,然后雇佣楼上楼下的帮你重构就好了。
    fuckshiter
        8
    fuckshiter  
       2018-06-01 18:35:00 +08:00 via iPhone
    多写,多看别人的代码,然后反过来对比自己,一步一步来,谁小白的时候不是写的乱乱的
    quickma
        9
    quickma  
       2018-06-01 18:39:38 +08:00
    多看书啊
    fatedier
        10
    fatedier  
       2018-06-01 18:49:18 +08:00
    考虑下换个语言不~
    misaka19000
        11
    misaka19000  
       2018-06-01 18:54:13 +08:00
    一个字:拆

    把组件和模块拆分开来,每一个模块再继续拆,如此反复,同样对于代码段也观察能否继续拆分,保持方法最小原则,如此反复进行重构
    Light3
        12
    Light3  
       2018-06-01 18:57:07 +08:00

    然后比如说重复的代码 变一个模块 一点点来少很多的
    woodface2233
        13
    woodface2233  
       2018-06-01 18:58:56 +08:00 via iPhone
    花 100w 现金每年请人吧。
    shilyx
        14
    shilyx  
       2018-06-01 19:13:47 +08:00
    多学多练,法无定法
    realpg
        15
    realpg  
    PRO
       2018-06-01 20:20:11 +08:00
    代码写大了才去考虑这些问题的,多半即使考虑了也会有更多的这个问题……

    我个人的习惯,不管写多小,都是有规划有架构,突然增大了负载也可以 handle
    chemzqm
        16
    chemzqm  
       2018-06-01 20:27:31 +08:00
    用类型语言好一些
    hobochen
        17
    hobochen  
       2018-06-01 20:52:00 +08:00
    《设计模式》了解一下?
    LukeChien
        18
    LukeChien  
       2018-06-01 20:54:46 +08:00 via Android
    Java 了解一下
    picture2200
        19
    picture2200  
       2018-06-01 20:55:15 +08:00 via Android
    大了就拆,拆了太多了就合并。
    glfpes
        20
    glfpes  
       2018-06-01 21:19:00 +08:00 via Android
    花一个季度重构个 2.0 版本吧。。。
    limbo0
        21
    limbo0  
       2018-06-02 03:20:58 +08:00 via Android
    先分层,再划分
    wuqiangroy
        22
    wuqiangroy  
       2018-06-02 08:36:20 +08:00
    拆分,然后把类似的相同调用的归为一起。
    多文件夹。
    wuqiangroy
        23
    wuqiangroy  
       2018-06-02 08:36:50 +08:00
    你可以参考参考 java 的结构。
    RonaldoC
        24
    RonaldoC  
       2018-06-02 12:00:47 +08:00
    高内聚低耦合
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1186 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 23:33 PVG 07:33 LAX 16:33 JFK 19:33
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86