`
maqujun
  • 浏览: 134660 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

看看国外CTO是如何设计Java软件的

阅读更多
本人在一家外企工作,由于平时在项目开发中十分重视设计模式的运用,所以很快就参与到公司的跨国项目中,有机会了解了国外CTO的一些设计思想,并且个人也参与了部分组件的设计工作。<o:p> </o:p>

从接手的项目可以看出那些国外的CTO在设计大型项目时的基本设计思想是按照组件的开发模型。因为我到手的项目均为一个个Component 同时他们非常注重Interface design。因为每个Component项目开始前都会要求我给出详细的API Javadoc。对他们而言只要Interface确定下来的话Implementation是很容易实现的。而且他们也非常强调基于Interfacefaçade 结构模式的运用,每个API 都会要求多个实现方式。<o:p></o:p>

我参与这样的设计时间并不长,所以有可能理解上会有些偏差,以下为我个人对于Interface design的理解:<o:p></o:p>

  1. 在面向对象的设计中我们希望做到的是让结构与策略实现完全分离。Interface design就可以很好的实现这一目的。<o:p></o:p>
  2. Interface 构建了软件的基本框架。<o:p></o:p>
  3. Interface限定了implementation的方法结构,并且实现了implementation的可扩展性。<o:p></o:p>
  4. 对于熟悉GOF设计模式的朋友都会总结出这样一个编程的思维方式:Interface Driven Design (接口驱动) 。几乎所有的GOF设计模式都由接口 (Interface) 驱动的。合理的Interface design为各种Gof设计模式的实现提供了可能性。<o:p></o:p>
  5. Interface design 可以明确软件逻辑工作流,如果使用Easymock等模拟框架的话,可以直接写出清晰的,可运行的Use Case. 从而实现 TDD的开发思想。<o:p></o:p>
分享到:
评论
17 楼 chenk85 2007-09-05  
再好的设计也是重构得到的,如果一开始就放入大量的设计模式,那这个设计是过度设计。既然是用TDD,那一开始的代码或许就是没什么设计技巧的代码,通过持续的重构,代码的设计才能变得漂亮起来。坚持用TDD就不存在楼上的同学讲的情况,因为不会过度设计。

好像还是不明白楼主对CTO的工作的看法。
16 楼 zzname 2007-09-05  
1,系统设计的差别还是要根据具体项目的情况来定。
2,国外的大项目要分给很多个项目组开发,在最终整合时,只能通过接口来实现通信。这些接口之间的通信实际上就是各个项目组之间在通信,交互,最终完成一个大系统。
3,如果是小系统,功能独立。再花大量的时间来设计接口就太奢侈。这种情况花时间设计接口换来的可扩展性是有限的。国内的大项目也是通过设计接口来实现通信交互的。

总:之所以让人产生国外的项目都注重设计,国内的企业少注重设计是因为我们做国外的大项目多,小项目少;做国内的大项目少,小项目多。

最重要的是:我们应该在需要时才进行设计接口;过分的设计不适应市场需求。
15 楼 kris_xu 2007-09-05  
这不只是国外CTO的特长,只是国内的大多数项目设计都是草草了事,开发过程中再实时修改,的确是一大悲哀。
14 楼 beeke 2007-09-05  
楼上说的对
最初的接口设计到最后的实现需要一步步重构。
而重构的过程依赖于对业务的理解和对design patterns的掌握以及经验
13 楼 fly_ever 2007-09-05  
先把接口定下来确实会比较好。
但是在很多情况下,一开始设计出来的接口并不是最优的,所以接口的设计也是需要一步步重构或者说是修改而来。
12 楼 maqujun 2007-09-05  
beeke 写道
这样做设计非常正常,我在国内企业也这么做。
只不过出于成本和人力的考虑,没有那么细致罢了。
当你对GOF和J2EE Patterns了然于胸,自然而然就这么做了。
另外,这不该是CTO做的事,而是架构设计师做的事。
一家公司通常有多个项目,而CTO通常只有一个,忙得过来吗
我并没有说过CTO的工作是Interface design。我想CTO做的应该是设计思想上的引导,由他掌握最终的决定权。
我只是个小兵而已,我只能从我做过工作中去片面的理解,总结经验。
11 楼 beeke 2007-09-05  
这样做设计非常正常,我在国内企业也这么做。
只不过出于成本和人力的考虑,没有那么细致罢了。
当你对GOF和J2EE Patterns了然于胸,自然而然就这么做了。
另外,这不该是CTO做的事,而是架构设计师做的事。
一家公司通常有多个项目,而CTO通常只有一个,忙得过来吗
10 楼 SunMicro 2007-09-05  
在项目中也一直在尝试Interface design和测试驱动,不过有时候会有一种立即实现的冲动,特别是在对一些接口设计感觉不自信的情况下,希望通过具体实现来验证,然后不知不觉就又陷入了细节考究之只中。

9 楼 zq5143 2007-09-05  
是啊,在外企,核心的东西是不会让我们来做的~~~
8 楼 江南白衣 2007-09-04  
CTO管到这么细会不会太忙了?

当然,这种精细设计的公司还是很不错的拉,楼主有福勒。
7 楼 leeon 2007-09-04  
晕,原来CTO就干这个

其实接口驱动也好,模型驱动也好,测试驱动也好
适合自己项目的设计就是好设计,
6 楼 nomady 2007-09-04  
不错,收藏了
5 楼 zl584521 2007-09-04  
慢慢的在体会中,呵呵
我要走的路还有很长啊!
4 楼 huangpengxiao 2007-09-04  
maqujun 写道
williamy 写道
去年偶大学毕业时实习在富士通当苦力,知道日本的程序拿到中国来都是纯粹的coding,厉害的是他们的构架师,所以,我很快就离开他们公司
我以前也在对日外包的公司里实习过,说实话真的学不到什么东西。只是对着那详细的有点过分的日文文档机械式的开发。不过现在在欧洲的公司里好多了,起码欧美客户会把部分组件设计的工作也交给我们做。


什么公司?
3 楼 maqujun 2007-09-04  
williamy 写道
去年偶大学毕业时实习在富士通当苦力,知道日本的程序拿到中国来都是纯粹的coding,厉害的是他们的构架师,所以,我很快就离开他们公司
我以前也在对日外包的公司里实习过,说实话真的学不到什么东西。只是对着那详细的有点过分的日文文档机械式的开发。不过现在在欧洲的公司里好多了,起码欧美客户会把部分组件设计的工作也交给我们做。
2 楼 williamy 2007-09-04  
去年偶大学毕业时实习在富士通当苦力,知道日本的程序拿到中国来都是纯粹的coding,厉害的是他们的构架师,所以,我很快就离开他们公司
1 楼 asevenxr 2007-09-04  
不错,非常赞同基于接口的facade模式,在该模式下使用Ioc(控制反转),将会使得系统高度组件化..........:)

相关推荐

    51CTO下载-软件设计师培训(全).pdf

    ### 软件设计师培训知识点概述 #### 一、软件设计师考试要求 1. **数据表示与运算**:掌握各种数据表示方式(如二进制、十六进制等)及算术逻辑运算规则。 2. **数学基础**:掌握线性代数、概率论与数理统计等应用...

    软件行业CTO为你讲述自己

    ### 软件行业CTO的角色与价值:开源节流的艺术 在当今的软件行业中,首席技术官(CTO)的角色日益凸显,他们不仅是技术的领导者,更是企业战略的重要参与者。CTO在软件公司中扮演着多面手的角色,不仅需要关注技术...

    从程序员到CTO的Java技术路线图

    在软件设计和架构方面,你需要掌握设计模式,如工厂模式、单例模式、观察者模式等,以及SOA(面向服务架构)和微服务架构。学习如何进行性能调优,包括代码优化、JVM内存管理、监控工具的使用等。 进入管理层后,你...

    51CTO下载-JAVA编程计算器代码.doc

    51CTO下载-JAVA编程计算器代码

    Java入门到进阶到CTO的五本书籍的链接

    包含--(1)Java编程基础、(2)Java.Web高级开发技术(3)Java网络开发(4)Java.Web核心框架(5)Java.Web系统设计与架构 五部分的书籍一脉相承的讲解Java,让你赢在起跑线上的推荐,你值得拥有。

    51CTO下载-java笔记2

    Java是一种广泛使用的面向对象的编程语言,其设计目标是具有高可靠性、安全性、跨平台兼容性。Java的基础包括语法、类、对象、接口、包、异常处理、多线程、输入输出流等核心概念。学习Java基础时,需要掌握变量、...

    从程序员到CTO跃迁的Java技术路线图

    从程序员到CTO跃迁的Java技术路线图,一图胜千言,一图胜万字,结构清晰明了,内容丰富多彩,条理简明扼要,所见即所得,简约而不简单。

    51CTO下载-2017年上半年软件设计师上午真题及答案解析

    根据提供的信息,我们可以详细分析并解释每一个题目中的知识点: ...- **解析**:在没有明确合同约定的情况下,根据中国相关法律规定,受委托开发的软件著作权归受托方所有。因此,正确答案是 **A. 甲**。

    51CTO下载-java基础、面向对象、SE核心、.rar

    Java是一种面向对象的语言,其核心在于类和对象的概念。这部分内容会讲解封装、继承、多态这三大面向对象特性,以及类的构造器、访问修饰符、抽象类、接口等关键概念。学习者需要理解如何设计和实现具有复用性和...

    软件设计师资料PDF软件设计师资料PDF软件设计师资料PDF软件设计师资料PDF

    3. **编程语言与技术栈**:软件设计师应熟练掌握至少一种或多种编程语言,如Java、Python、C++等,并熟悉相关开发工具。同时,了解前端技术(HTML、CSS、JavaScript)、数据库管理、后端框架等也是必要的。 4. **...

    java磁力链接java磁力链接java磁力链接java磁力链接

    java磁力链接

    51CTO下载-1040JAVA手机游戏编程源代码

    首先,Java源代码是程序员用Java语言编写的程序文本,它是程序设计的基础。学习源代码可以让你了解游戏背后的逻辑和实现机制,从而提升编程技能。在这个压缩包中,你可能会发现如游戏循环、对象创建、碰撞检测、动画...

    CTO 图谱 A3_技能图谱_CTO_

    这包括但不限于编程语言(如Java、Python、C++等)、操作系统原理、数据结构与算法、数据库设计、网络协议等基础知识。随着技术的不断发展,云计算、大数据、人工智能、区块链等新兴技术也成为了CTO必须关注和掌握的...

    51CTO下载-Java网络编程+讲义

    ### Java网络编程讲义知识点详解 #### 一、Java数据流输入/输出概览 **1.1 输入/输出的概念** 在程序设计中,“输入/输出”(简称I/O)通常指的是程序与外部世界(例如硬盘、网络或其他设备)之间的数据交换过程...

    2020年软考软件设计师历年真题

    《2020年软考软件设计师历年真题》是一个重要的资源,对于准备参加软件设计师考试的考生来说,具有极高的参考价值。这份资料包含了历年来的考试真题,且附带了答案讲解,有助于考生全面了解考试的题型、难度以及考察...

    51CTO下载-ACCP6.0_Y2-JAVA-毕业项目.zip

    "51CTO下载-ACCP6.0_Y2-JAVA-毕业项目.zip" 是一个专门针对ACCP(北大青鸟职业教育课程体系)6.0第二年Java编程阶段的毕业设计项目的压缩包。这个项目旨在帮助学习者巩固和提升Java编程技能,同时理解和实践软件开发...

    51CTO下载-系统架构设计师教程.part1

    51CTO下载-系统架构设计师教程.part1 共两部分。

    51CTO下载-java课后答案.rar

    不错的JAVA学习参考资料!《Java 2实用教程(3版)实验代码及答案.pdf》《java(第3版例子代码).pdf》

    51CTO下载-韩顺平java从入门到精通视频教程(全94讲)学习笔记整理(齐全)

    James Gosling 是 Java 语言的设计者之一,他的一些关键贡献包括: - **1990 年**:Sun Microsystems 启动“绿色计划”。 - **1992 年**:创建 Oak 语言,后更名为 Java。 - **1994 年**:Gosling 在硅谷大会上展示...

Global site tag (gtag.js) - Google Analytics