关于Project Babel的代码风格 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Guiu
V2EX    Project Babel

关于Project Babel的代码风格

  •  
  •   Guiu 2010-10-23 20:19:37 +08:00 6077 次点击
    这是一个创建于 5467 天前的主题,其中的信息可能已经有所发展或是发生改变。
    经朋友介绍,知道Project Babel这个程序,界面清新漂亮,很喜欢。
    天准备将Project Babel用到某个小项目上,特地去看了一下它的源代码,
    但发现源代码风格似乎相当凌乱,看不到python的味道,缺少设计的美感。
    不知道是不是Livid为快速实现功能而折衷的使用了这种代码风格,毕竟现在PB还没有正式发布。

    现在的源代码风格,对于多人配合开发和后续功能开发相当麻烦,如果要使用的话,只能完全推倒重构代码了,因此采取PB的想法只能作罢。

    不知道这里有没有朋友已经重构过PB的?假如开源的话那就相当的nice了。
    18 条回复    1970-01-01 08:00:00 +08:00
    Livid
        1
    Livid  
    MOD
    PRO
       2010-10-23 20:28:23 +08:00 via iPhone
    谢谢。可否给出一个开源 GAE 项目的例子,在代码上符合您对美感和设计的要求的,我去学习学习。
    darcy
        2
    darcy  
       2010-10-23 21:22:39 +08:00
    可以参考这个代码风格建议 http://google-styleguide.googlecode.com/svn/trunk/pyguide.html#Indentation

    具体项目源代码可以参考GAE的源代码
    Livid
        3
    Livid  
    MOD
    PRO
       2010-10-23 21:30:28 +08:00
    @darcy 有现实中 GAE 开源网站项目的例子吗?
    m
        4
    m  
       2010-10-23 21:33:43 +08:00
    Livid
        5
    Livid  
    MOD
    PRO
       2010-10-23 21:36:32 +08:00
    @m 可否告诉我,jaikuengine 的源代码,相比 V2EX 的,好在哪里?
    fanix
        6
    fanix  
       2010-10-23 21:52:02 +08:00
    python是什么味道呢?
    Los
        7
    Los  
      &bsp;2010-10-23 21:57:23 +08:00
    ^_^ 不熟悉GAE不熟悉Python,来一小段rails式的建议,估计比较适合现在PB的情况

    “Move Model Logic into the Model”
    http://rails-bestpractices.com/posts/7-move-model-logic-into-the-model
    zhaiduo
        8
    zhaiduo  
       2010-10-23 21:59:42 +08:00
    jaiku可是google的败笔
    m
        9
    m  
       2010-10-23 22:00:55 +08:00
    @Livid 不好意思,这两套代码都没看过。只是知道这也是个开源 GAE 项目,所以向你介绍的,或许有可学习借鉴的地方。
    darcy
        10
    darcy  
       2010-10-23 22:07:17 +08:00
    我个人觉得每个get方法都有一个
    template_values['system_version'] = SYSTEM_VERSION
    类似的公共代码可以提取出一个父类出来。
    如:http://code.google.com/p/google-app-engine-samples/source/browse/trunk/tasks/tasks.py
    建立一个BaseRequestHandler类

    另外,对于楼主来说,可能作为开源项目v2ex缺少必要的注释。风格上我倒不觉得有什么不美,反而很多地方@livid设计得很优雅。
    Los
        11
    Los  
       2010-10-23 22:16:59 +08:00
    "控制层"充满了大量的if else之类的逻辑代码是一件让人比较头疼的事,或者可以移动这部分代码到合适的地方。
    darasion
        12
    darasion  
       2010-10-23 23:15:58 +08:00
    我也总觉得自己写的东西不太对劲儿,但总是不知道哪里出了毛病。
    billychow
        13
    billychow  
       2010-10-23 23:17:00 +08:00
    1. 代码的重用性做得不够,如模版的初始化等完全可以简单抽象一下,进行包装。
    2. 逻辑混乱,缓存的设置四处散落。可以考虑使用 python decorator 进行分离。
    3. 每一个操作都有一个 handler,一组同样的逻辑却相互独立,造成重复,建议实现一个简单的 url routing。
    还有一些一时想不起来了,前段时间又大致看了一下,发现很多地方仍然没有改进,在功能不断膨胀后,维护性会变得越来越糟。不适合团队开发。
    darcy
        14
    darcy  
       2010-10-23 23:42:25 +08:00
    @darasion 同感。
    fsw90628
        15
    fsw90628  
       2010-10-24 00:21:37 +08:00
    OO is a trade-off. Livid 的代码细节处理的已经不错了,组件拆分的很得当,过度的追求重用也未必是好的事情。
    p.s. 读着Project Babel的代码个人觉得是很享受的事情,直觉上觉得清晰,美观。
    9hills
        16
    9hills  
       2010-10-24 00:42:46 +08:00
    注释有点少---貌似很少

    除此之外就我的水平也看不出什么来。。
    xuming
        17
    xuming  
       2010-10-24 21:47:27 +08:00
    看了PB的代码,很多PHP的味道
    Tianpu
        18
    Tianpu  
       2010-10-29 13:06:27 +08:00 via iPad
    我看着不吃力,哈。好用就行
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2750 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 09:12 PVG 17:12 LAX 02:12 JFK 05:12
    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