c

Project Babel 重构之建议

  •  
  •   c · Aug 3, 2010 · 5009 views
    This topic created in 5791 days ago, the information mentioned may be changed or developed.
    1.RequestHandler的复用

    作为论坛,每个RequestHandler都需要处理下面的数据,cookie,访问平台,所以目前我抽象出来的PublicHandler代码如下: http://github.com/benmao/v2ex/blob/9f72eb031a5395617a8955c4b984de94f0b6b1f3/handler.py

    self.os 保存了浏览平台[desktop|mobile]
    self.member 保存了用户,默认为None

    同时在handler里实现了一个requires_login的Decorator,在需要登录的get|post前面加上@requires_login即可。

    2.Model的方法

    在Django里,默认的一些查询都是在Model里实现,并且有2个很重要的装饰器,classmethod和property。

    代码见:http://github.com/benmao/v2ex/blob/4c6126a7f8202056bb3ad9c0ebd52a4ad5288c55/v2ex/babel/__init__.py

    里面实现了一个mem的Decorator,方便把查询的数据保存到Memcache。如何使用见里面Member Model 里的get_member_by_auth Method 和Node Model里的get_home_nodes_new Method.

    然后还可以重写Model的put和delete Method,达到自动管理Memchache,GAE的Memchache管理一定要在Model这个地方来弄,如果在逻辑里写,最终会很麻烦。

    3.合理使用logging

    logging是一个很方便的记录日志的工具,应该合理利用。

    4. 关于查询,最好用Query类吧。

    5.这里我重构了main.py里的SigninHandler,diff见:http://github.com/benmao/v2ex/commit/4c6126a7f8202056bb3ad9c0ebd52a4ad5288c55#diff-0

    Livid 看看哈,如果和你有共同的语言,我就继续贡献力量,如果没有共同语言,那我就放弃了,继续去研究webgame了 :)
    5 replies    1970-01-01 08:00:00 +08:00
    c
        1
    c  
    OP
       Aug 3, 2010
    @Livid 提供开发GAE的能力,最简单的办法,看GAE的代码吧 :)
    c
        2
    c  
    OP
       Aug 3, 2010
    根据我初步估计,按照上面办法重构,需要1-3天,代码量至少减少30%。
    c
        3
    c  
    OP
       Aug 3, 2010
    Leo
        4
    Leo  
       Aug 3, 2010
    Lz也是神级人物..一句都看不懂- -'
    sospartan
        5
    sospartan  
       Aug 3, 2010
    这些都是好东西
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3125 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 13:43 · PVG 21:43 · LAX 06:43 · JFK 09:43
    ♥ Do have faith in what you're doing.