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

关于Project Babel的代码风格

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

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

    不知道这里有没有朋友已经重构过PB的?假如开源的话那就相当的nice了。
    18 条回复    1970-01-01 08:00:00 +08:00
    Livid
        1
    Livid  
    MOD
       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
       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
       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  
       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   ·   实用小工具   ·   2208 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 01:36 · PVG 09:36 · LAX 17:36 · JFK 20:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.