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

大家写程序前会先设计好所有的类,考虑系统或应用的灵活性和可扩展性,刻意去使用设计模式吗?

  •  
  •   bupo · 2012-11-26 16:59:51 +08:00 · 4134 次点击
    这是一个创建于 4389 天前的主题,其中的信息可能已经有所发展或是发生改变。
    自己写的代码只考虑功能的实现,就开始写代码,没有一个全局的考虑。到最后,功能都实现了,发现自己写的代码就是垃圾,很苦恼。
    12 条回复    1970-01-01 08:00:00 +08:00
    picasso250
        1
    picasso250  
       2012-11-26 17:19:38 +08:00
    我会写一下UML(虽然非常简单)
    bupo
        2
    bupo  
    OP
       2012-11-26 17:46:24 +08:00
    @picasso250 看到别人写的开源代码,设计非常优雅,自己就是做不到,要怎么锻炼这种能力呢?重构自己的代码?
    wayn3h0
        3
    wayn3h0  
       2012-11-26 17:54:45 +08:00
    必须先设计好类,层次划分,功能模块划分,各种调用关系,统一调用入口...用的最多的像是酱子的:
    model -> 公共数据结构定义
    data -> provider模式 怕以后数据库切换问题
    business -> 业务逻辑 定义一个统一入口管理data provider, cache 等 由business object调用,便于以后切换cache, data provider等(一般从配置文件读入然后caching)
    view -> 前端各种模板
    conis
        4
    conis  
       2012-11-26 17:59:37 +08:00
    1.事前考虑好,对业务有足够的了解很重要
    2.重构,貌似不存在不需要重构的代码,模块化组件化很重要
    最后,不建议刻意去使用设计模式,设计模式是为了解决问题的方案抽象。某些设计模式很常用,比如说工厂模式。
    bupo
        5
    bupo  
    OP
       2012-11-26 18:40:03 +08:00
    @conis
    @wayn3h0
    学习
    picasso250
        6
    picasso250  
       2012-11-26 18:48:05 +08:00
    @bupo 其实,我就是想求一下优雅的开源代码。能给个地址或者名称吗?
    reus
        7
    reus  
       2012-11-26 18:51:58 +08:00
    不会刻意设计,因为写着写着就会发现需要重构的了,而且重构要尽快不要留下负债
    bupo
        8
    bupo  
    OP
       2012-11-26 19:09:52 +08:00   ❤️ 1
    @picasso250 Nutch
    bupo
        9
    bupo  
    OP
       2012-11-26 19:14:27 +08:00
    @picasso250 以前为了在nutch基础上做二次开发,看过源代码,他的插件机制特别灵活,所有的扩展都不用修改原本的代码,真正做到了对扩展开放,对修改封闭
    imcj
        10
    imcj  
       2012-11-27 10:00:22 +08:00
    设计模式也需要练习,模式是前人总结的经验,唯有多练习才能得心应手。
    自上而下还是自下而上的问题,Google吧,相当多的讨论。
    dudong0726
        11
    dudong0726  
       2012-11-27 10:02:55 +08:00
    设计模式是用出来的,技术积累到一定程度,设计模式自然出来,所以还是先完成功能
    vilic
        12
    vilic  
       2012-11-27 13:47:36 +08:00
    我觉得说 "使用设计模式" 是不恰当的, 至少不是最好的情况. 根据项目的大小, 周期, 性质等方面综合考虑, 做适当的规划即可. 当然这个规划的话, 可能就需要长时间的积累了?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3522 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 11:11 · PVG 19:11 · LAX 03:11 · JFK 06:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.