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

在编程做具体项目的时候, 雕塑 vs. 积木?

  •  1
     
  •   iugo ·
    iugo · 2018-10-24 18:20:35 +08:00 · 1414 次点击
    这是一个创建于 2003 天前的主题,其中的信息可能已经有所发展或是发生改变。

    雕塑:

    拿来一块大石头(或者橡皮泥), 然后雕刻(或捏). 当要做许多类似雕塑的时候, 先一起雕刻出大概的通用形状, 然后根据需求(参数)再进一步雕刻为最终形状.

    积木:

    先找到细化的某一小部分, 将其作为一个积木, 找到许多小部分, 作为一些积木. 然后将这些积木组合, 拼接, 做成最终形状.

    我不喜欢雕塑的原因是, 一旦有一个新的但与之前类似的雕塑, 不兼容通用形状, 就要修改通用形状. 而这种通用, 很可能不止一层, 而是一级通用, 二级通用, 三级通用... 要修改哪一层, 对其他具体的最终形状是否有破坏, 随着项目进展, 兼容太多导致最终想要将某些剥离出这类形状.

    10 条回复    2018-10-25 10:51:43 +08:00
    owenliang
        1
    owenliang  
       2018-10-24 18:26:57 +08:00
    过早优化是万恶之源。

    一开始搭架子考虑太多,的确适得其反。
    chinawrj
        2
    chinawrj  
       2018-10-24 18:59:41 +08:00
    雕塑雕塑雕塑
    iugo
        3
    iugo  
    OP
       2018-10-24 19:19:33 +08:00
    @owenliang 我觉得雕塑是搭架子. 积木就是一点点抽小函数.
    iugo
        4
    iugo  
    OP
       2018-10-24 19:20:10 +08:00
    @chinawrj 产品需求变化快啊. 如果是自己做产品, 那就另说.
    smeraldo
        5
    smeraldo  
       2018-10-24 20:15:57 +08:00
    积木组合拼接..这是 tdd?
    PythonAnswer
        6
    PythonAnswer  
       2018-10-24 20:42:04 +08:00
    积木 = linux 原则
    daodao
        7
    daodao  
       2018-10-24 20:43:36 +08:00
    有这思考,不错小伙子
    chinawrj
        8
    chinawrj  
       2018-10-25 09:21:48 +08:00
    @iugo 仔细看了一下你的原贴。我觉得你的雕塑最初选择的有问题,雕塑的选择应该具有很大的通用性。否则就失去雕塑的意义。
    iugo
        9
    iugo  
    OP
       2018-10-25 09:51:42 +08:00
    @chinawrj 对, 最初应该有很大通用性. 但越通用就距离最终形态越远, 如果细分, 前期通用性强, 但造成层级过多; 如果不细分, 就造成通用性差.
    flyingghost
        10
    flyingghost  
       2018-10-25 10:51:43 +08:00
    自上而下设计 和 自下而上设计。
    你会发现,设计阶段还是自上而下比较好,而实现阶段,自下而上实现非常舒适。
    至于你纠结的时候,其实也是重构的时机和价值体现。重构一定会影响设计,但不一定影响砖头。
    设计的一种思路是大干快上先实现,只有当某个东西重复第三次的时候才开始考虑重构。好处是务实,坏处是不断返工结构糟乱劳心劳力。
    另一种思路是前期设计充分考虑变化,架构充分灵活可扩展。好处是红星照耀我方向,坏处是过度设计结构复杂劳心劳力。
    总之劳心劳力。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5633 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 51ms · UTC 02:03 · PVG 10:03 · LAX 19:03 · JFK 22:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.