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

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

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

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

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

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

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

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


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

这个就是关键所在了,俺这样的菜鸟属盲人摸象那种,只知道它在那儿,都不知道摸到的是头还是屁股 XD
lldong
2012-04-06 15:50:23 +08:00
avatasia
2012-04-06 16:29:45 +08:00
我现在按照自己的想法做东西,有时候看看别人的, 发现别人也在考虑同样的事情,然后有些高手也做出来了,这个就是要借鉴的地方,关键还是看自己。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/31403

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX