V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
xujinkai
V2EX  ›  问与答

函数之间的调用关系很乱怎么办

  •  
  •   xujinkai · 2017-03-20 16:07:16 +08:00 · 1923 次点击
    这是一个创建于 2833 天前的主题,其中的信息可能已经有所发展或是发生改变。

    做一些有界面有读写的软件时经常遇到的一个问题,就是函数写多了,互相之间的调用关系就越来越乱,一直不知道有没有什么好的解决办法。

    下边这个是伪代码,最近做网站遇到的,路由变了要重新加载数据,数据变了要修改对应路由,重新读数据的时候还得判断有没有保存,等等。

    // 大概意思
    reload_detail() {}
    reload_list() { change_url(); }
    save_detail(){ reload_list(); }
    change_url() { on_url_change(); }
    on_url_change() {
    	if(not save) save_detail(); 
    	reload_list();
        reload_detail(); 
    }
    

    这个问题也不限于做网站,做类似的东西感觉总会遇到这个问题。

    一是关系乱不好设计更不好 debug 。而且一个不小心程序就不按照设计好的走了,比如有两个函数都会去修改路由,然后这俩函数还互相调用,然后就乱了。

    二是即使能按流程正常走,有时候也会发生一个动作内,某个函数运行多次的情况。比如路由改变保存一次,读数据的函数里又保存一次,造成了资源浪费。

    我自己只是做些小东西玩,对着 bug 多改几次也就差不多了,但总觉得不是个方法。

    我能想到的,一个是画流程图之类的东西(如果有的话请给个关键词)。另一个在代码层面,比如有一个 save 函数,还有一个无副作用的 _save 函数,或者用一些额外的变量去控制。

    想问问大家有什么心得,或者方法。

    1 条回复    2017-03-20 16:13:59 +08:00
    zungmou
        1
    zungmou  
       2017-03-20 16:13:59 +08:00
    参见我的帖子:
    https://www.v2ex.com/t/348805
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2684 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 14:45 · PVG 22:45 · LAX 06:45 · JFK 09:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.