V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
HowardMei
V2EX  ›  问与答

关于OOD和设计模式,有啥好书推荐?

  •  
  •   HowardMei · 2012-04-05 11:22:20 +08:00 · 3607 次点击
    这是一个创建于 4412 天前的主题,其中的信息可能已经有所发展或是发生改变。
    非软件科班,因想实现自己想法学编程(一直是软件消费者^_^),一年多还停留在用脚本写小型工具和基于别人代码修改的层次,想自己写个完整点的项目(关于Online EDA的),却觉得有无形瓶颈束缚,写到中间就继续不下去了,不是抽象得太虚、就是重复太多,架构上很难把握。

    看了很多大牛的代码,觉得他们抽象复杂事物的习惯尽管不同,但隐约还是有规律的,有没有类似体会的,能否分享一下突破瓶颈的经验?

    UML建模啥的有帮助么?我怎么觉得想好的模型不靠谱,到后来总会被改得面目全非,没有任何指导意义。大家写复杂系统时,都是什么习惯呢,想到哪写到哪,还是先规划好?
    9 条回复    1970-01-01 08:00:00 +08:00
    avatasia
        2
    avatasia  
       2012-04-06 11:15:13 +08:00
    设计模式和UML会拉长你的产品周期,这些都是牛人想出来的东西,普世价值不高,建议用笨方法写代码,等产品出来再去搞设计模式去优化。
    HowardMei
        3
    HowardMei  
    OP
       2012-04-06 14:31:30 +08:00
    谢谢 @chainchan @avatasia

    我隐约也觉得UML对一般工程师/团队/需求不明朗的项目没什么作用,不是什么都能事先想清楚的,除非架构师功力深厚到炉火纯青的地步,架构一出来能适应80%以上的用例;设计模式也只是解决了部分编码问题,菜鸟也不可能凭空应用自如;看来敏捷开发、快速迭代的进化方式才是最好做法,但到底有哪些值得效仿的Best Practices呢,个人开发不需严格内部流程,如果是团队开发,除了代码版本控制、项目管理等通常做法,还有哪些方面是确保“敏捷开发、快速迭代”要注意的呢?

    好吧,看来标题应该改一改,其实我不在乎啥好书(从来没想过做专职程序员^_^),在乎的是怎么配合(假定有资深工程师领导团队实施敏捷开发)或配置一个团队(假定运气不好,需要自己从头逐步组建一个高效团队),进行敏捷开发、快速迭代,在开发过程中把自己的构想和市场需求结合起来,同时又不给软件工程师们带来太多麻烦,更不会做无用功、浪费人力财力。

    一个非资深云端软件创业者,要想开发一个技术密集的软件产品(Online service + Industrial Applications <此处为难点,隔行如隔山> + Community Interactions),应该如何打通沟通难关,采用高效合理的流程配合或配置开发团队,让Minimum Available Product尽快出来,形成产品的快速迭代。
    HowardMei
        4
    HowardMei  
    OP
       2012-04-06 14:37:55 +08:00
    是否所有行业软件的开发团队领导者,都必须是行业+软件两方面的资深人士才行呢?这是最让人困扰的地方,跨行精通真得很难呀,可如果不如此,连需求沟通都会存在问题。

    软件工程发展到今天,我相信肯定早有方法和Best Practices解决这些问题,有那么多外包项目存在就说明了这点,只是我不知道而已,所以想请教大牛们,不一定能从书里找到,经验之谈或许更好^_^
    ufo22940268
        5
    ufo22940268  
       2012-04-06 15:04:05 +08:00
    @avatasia 那如果看高手写的源码的话,如果在熟悉设计模式的前提下,看起来不就能容易很多?
    avatasia
        6
    avatasia  
       2012-04-06 15:14:44 +08:00
    @ufo22940268 你8个小时能看懂多少高手的代码? 或者目前开源的大型项目,哪个你有精通的? firefox? chrome?或者webkit等等。
    twitter bootstrap的less code,你有看过一遍么? 这个影响你使用bootstrap做些东西么? 如果要做东西,不要让工具浪费时间。
    HowardMei
        7
    HowardMei  
    OP
       2012-04-06 15:33:15 +08:00
    @ufo22940268 我开始也是这样想的,但现在觉得不太靠谱。因为无法通过看到的结果,反推出他们的构建过程,因此也就毫无借鉴意义。只是把代码拿来抄抄改改,是做不出好东西的,只能说勉强可以用用。就算自己/团队成员水平足够看懂高手代码,能够借鉴而非照抄,也只不过能改善局部代码质量,实现若干功能模块,对整个项目整体还是远远不够的。


    @avatasia 是的,如果只是当工具使用,完全没必要弄清楚其实现细节。要想知道他们怎么做的,光看源代码也很难看出来,只是隐约觉得他们都遵循了一定的规则,至于这个规则是什么,为啥不同团队搞出来的精彩产品都有共同特性。

    这个就是关键所在了,俺这样的菜鸟属盲人摸象那种,只知道它在那儿,都不知道摸到的是头还是屁股 XD
    lldong
        8
    lldong  
       2012-04-06 15:50:23 +08:00
    avatasia
        9
    avatasia  
       2012-04-06 16:29:45 +08:00
    我现在按照自己的想法做东西,有时候看看别人的, 发现别人也在考虑同样的事情,然后有些高手也做出来了,这个就是要借鉴的地方,关键还是看自己。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2280 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 04:02 · PVG 12:02 · LAX 21:02 · JFK 00:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.